E. Best Pair
时间:2023-03-18
本文章向大家介绍E. Best Pair,主要内容包括大意、代码、使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
大意
找到最大的f(x,y)=(cntx+cnty)*(x+y)
切x,y不能是禁止的对数
按照cnt进行分类
代码
/*
(cntx+cnty)*(x+y) 求这个的最大值
并且x,y不能是特定的对
不T?
按照cnt进行分类,最多有sqrt(n)中cnt
所以前面两个循环时n的复杂度
然后就是bfs中,虽然会把所有的都枚举一次,但是m时有限的,所以每次枚举的次数是有限的
*/
#include <bits/stdc++.h>
using namespace std;
const int M = 1e6 + 5;
#define endl '\n'
#define int long long
using pii = pair<int, int>;
map<int,int>mp;
map<int,vector<int>>v;
set<pii>se;
int n,m;
int bfs(vector<int>v1,vector<int>v2) {
map<pii,bool>vis;//标记已经出现过的对数
priority_queue<array<int,3>>q;
int n1=v1.size(),n2=v2.size();
q.push({v1.back()+v2.back(),n1-1,n2-1});
while(!q.empty()) {
auto [val,x,y]=q.top();q.pop();
if(v1[x]!=v2[y]&&!se.count({v1[x],v2[y]}))return val;
if(x&&!vis[{x-1,y}]) {
q.push({v1[x-1]+v2[y],x-1,y});
vis[{x-1,y}]=1;
}
if(y&&!vis[{x,y-1}]) {
q.push({v1[x]+v2[y-1],x,y-1});
vis[{x,y-1}]=1;
}
}
return 0;
}
void solve() {
mp.clear();
v.clear();
se.clear();
cin>>n>>m;
for(int i=1,x;i<=n;i++)cin>>x,mp[x]++;
for(int i=1,x,y;i<=m;i++)cin>>x>>y,se.insert({x,y}),se.insert({y,x});
for(auto [x,y]:mp)v[y].push_back(x);
for(auto [x,y]:v)sort(y.begin(),y.end());
int ans=0;
for(auto [i,v1]:v)
for(auto [j,v2]:v) {
if(i>j)continue;
ans=max(ans,(i+j)*bfs(v1,v2));
}
cout<<ans<<endl;
}
signed main() {
ios::sync_with_stdio(0); cin.tie(0); cout.tie(0);
int TT; cin >> TT;
while(TT--) {
solve();
}
return 0;
}
原文地址:https://www.cnblogs.com/basicecho/p/17229222.html
- 【Go 语言社区】golang的bufio用于内容解析
- [Go语言]从Docker源码学习Go——指针和Structs - lemon_bar
- Git 项目推荐 | Go 语言读写 INI 文件工具包
- 初识Python (r10笔记第52天)
- 挑战数据结构与算法面试题——统计上排数在下排出现的次数
- Go语言的 10 个实用技术--转
- MySQL反连接的优化总结(r10笔记第51天)
- python基础知识——内置数据结构(列表)
- 【Go 语言社区】Go语言Slice去重
- 【Go 语言社区】Golang 语言再谈接口
- 【Go 语言社区】Golang 语言再谈常量
- 【Go 语言社区】HTML5 Canvas+JS控制电脑或手机上的摄像头实例
- MySQL Profile在5.7的简单测试(r10笔记第50天)
- 【Go 语言社区】Golang中interface判断nil问题
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux Centos7系统端口占用问题的解决方法
- Linux中利用sudo进行赋权的方法详解
- Centos7下用户登录失败N次后锁定用户禁止登陆的方法
- Linux服务器被黑以后的详细处理步骤
- linux下用户程序同内核通信详解(netlink机制)
- yum安装本地rpm软件方案详解
- CentOS 部署 flask项目的方法
- 在linux服务器下使用版本控制软件SVN的方法
- centos中yum命令删除还原的补救方法介绍
- Linux 创建子进程执行任务的实现方法
- Linux系统下安装jdbc与tomcat的图文教程
- Linux系统下利用C程序输出某进程的内存占用信息
- .NET Standard中配置TargetFrameworks输出多版本类库
- .NET Standard SDK 样式项目中的目标框架
- 偿还技术债(2)-EventBus自己实现一个?