首页 > 其他分享 >Codeforces Global Round 19 E. Best Pair

Codeforces Global Round 19 E. Best Pair

时间:2024-10-02 18:00:37浏览次数:9  
标签:map cnt const 19 auto Global Codeforces int using

\(cnt\)的取值种类数不超过\(\sqrt n\)。因此我们可以枚举\(cnt\) 然后贪心选最大的值。

#include <bits/stdc++.h>

using namespace std;

using i32 = int32_t;
using i64 = long long;


#define int i64

using vi = vector<int>;
using pii = pair<int,int>;

void solve() {
	int n, m;
	cin >> n >> m;
	
	map<int,int> cnt;
	for(int i = 1, x; i <= n; i ++) 
		cin >> x, cnt[x] ++;

	map<int,vi> C;
	for(const auto &[x, y]: cnt)
		C[y].push_back(x);

	for(auto &[x, y] : C)
		ranges::sort(y, greater<>());



	set<pii> vis;
	for(int x, y; m; m --) {
		cin >> x >> y;
		vis.emplace(x, y);
	}

	int res = 0;

	for(const auto &[x , y] : C) {
		if(y.size() < 2) continue;
		int ret = 0;
		for(const auto &i : y) 
			for(const auto &j: y){
				if(j <= i) break;
				if(i + j <= ret) break;
				if(vis.count({i, j})) continue;
				ret = max(ret, i + j);
				res = max(res , (x + x) * (i + j));
			}
	}

	for(const auto &[a, x] : C) 
		for(const auto &[b , y] : C){
			if(b >= a) break;
			int ret = 0;
			for(const auto &i : x)
				for(const auto &j : y) {
					if(i + j <= ret) break;
					if(i < j) {
						if(vis.count({i, j})) continue;
					} else {
						if(vis.count({j, i})) continue;
					}
					ret = max(ret, i + j);
					res = max(res, (a + b) * (i + j));
				}
		}
	cout << res << "\n";
	return;
}

i32 main(){
	ios::sync_with_stdio(false), cin.tie(nullptr);
	int T;
	cin >> T;
	while(T --) solve();
	return 0;
}

标签:map,cnt,const,19,auto,Global,Codeforces,int,using
From: https://www.cnblogs.com/PHarr/p/18444942

相关文章

  • 题解:SP19382 STK - Stock
    一道动态规划题。先分析状态。\(dp_{i\operatorname{and}1,k}\):表示在第\(i\)天最多进行\(k\)次交易的最大利润。\(s_{i\operatorname{and}1,k}\):表示在第\(i\)天之前的某天卖出之后,最多进行\(k-1\)次交易的最大利润减去当天的价格。接下来分析转移方程当\(i=0\)......
  • 题解:P1701 [USACO19OPEN] Cow Evolution B
    这题的关键就在于能否将问题转化成集合之间是否有交集。首先,考虑一个我们无法形成进化树的例子,例如这样:31fly1man2flyman如果我们想根据这个输入构建一棵树,我们需要在根上分割A或B,但剩下的两个子树都需要有一条边来添加另一个特征。显然输出为"No"。如果我们输入......
  • 南沙C++信奥赛陈老师解一本通题 1966:【14NOIP普及组】比例简化
    ​ 【题目描述】在社交媒体上,经常会看到针对某一个观点同意与否的民意调查以及结果。例如,对某一观点表示支持的有1498人,反对的有902人,那么赞同与反对的比例可以简单的记为1498:902。不过,如果把调查结果就以这种方式呈现出来,大多数人肯定不会满意。因为这个比例的数值太大......
  • CF2020(Codeforces Round 976 (Div. 2))
    CF2020A.FindMinimumOperations难度:红转换进制,每一位上数字相加。#include<bits/stdc++.h>#definelllonglongusingnamespacestd;llt,n,k,ans;intmain(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);cin>>t;while(t--){cin&......
  • P1020 [NOIP1999 提高组] 导弹拦截
    P1020[NOIP1999提高组]导弹拦截参考材料需要抽象一下,第一问就可以抽象为最长不上升子序列,第二问可以抽象为最长上升子序列长度。就如下图的情况:然后可以先\(n^2\)做法做,因为\(n\ge100000\)所以要滚动数组,求最长不上升子序列可以反向从n开始递推。我是n^2我不好......
  • 南沙C++信奥赛陈老师解一本通题 1984:【19CSPJ普及组】纪念品
    ​ 【题目描述】小伟突然获得一种超能力,他知道未来 T 天 NN种纪念品每天的价格。某个纪念品的价格是指购买一个该纪念品所需的金币数量,以及卖出一个该纪念品换回的金币数量。每天,小伟可以进行以下两种交易无限次:1.任选一个纪念品,若手上有足够金币,以当日价格购买该纪念品;2......
  • PbootCMS附件上传失败报错UNKNOW: Code: 8192; Desc: stripos(): Non-string needles
    当遇到PBootCMS附件上传失败,并报错 UNKNOW:Code:8192;Desc:stripos():Non-stringneedleswillbeinterpretedasstringsinthefuture. 时,这通常是因为PHP的版本更新导致某些函数的行为有所改变。在这个情况下,stripos() 函数在处理非字符串参数时会发出警告,因为它......
  • Codeforces Round 956 (Div. 2)
    无法评价,不知道是我傻逼还是题傻逼。A.ArrayDivisibility题意让你构造一个长度为\(n\)的序列,满足对于每一个\(i\)\((i\in[1,n])\),让\(a_j\)之和为\(i\)的倍数,\(j\)能被\(i\)整除。换句话说,让你构造一个长度为\(n\)的序列,满足\(\sum_{j|i}a_j\)能被\(i\)......
  • Codeforces2014E Rendez-vous de Marian et Robin(分层图最短路)
    题意给定一个无向图,含有\(n\)个点和\(m\)条边。题解点击查看代码#include<bits/stdc++.h>usingnamespacestd;usingi64=longlong;constexpri64inf=1e18;voidsolve(){intn,m,h;cin>>n>>m>>h;vector<vector<......
  • Codeforces Round 974 (Div. 3) - D题
    这道题题意就是你有k个工作,每个工作都有一个时间区间左边界l和右边界r,妈妈和哥哥要来看你,时长为d,题目要求求出1.哥哥看你的这段时间工作时间段重叠最多是多少?2.妈妈看你的这段时间工作时间段重叠最少是多少?这道题如果硬做的话可能就是线段树了(蒟蒻暂时没有想到其他的做法),但如果......