首页 > 其他分享 >Educational Codeforces Round 134 (Rated for Div. 2)

Educational Codeforces Round 134 (Rated for Div. 2)

时间:2022-08-29 18:45:36浏览次数:81  
标签:Educational Rated int Codeforces cin ++ 序列 一位

比赛链接:

https://codeforces.com/contest/1721

D. Maximum AND

题意:

给定两个序列 \(a\) 和 \(b\),可以调整 \(b\) 中元素的位置,得到序列 \(c\),满足 \(c_i = a_i\) xor \(b_i\),问 \(c_1 \& c_2 \& ... \& c_n\) 最大是多少。

思路:

要让某一位上是 1,那么就要使得序列 \(c\) 中每一个元素的这一位都是 1。因为 \(c\) 是位异或后的结果,只有当 \(a\) 和 \(b\) 匹配后这一位上 1 和 0 的能对应上时,序列 \(c\) 的每一个元素的这一位才都是 1。
为了使值最大,从大到小贪,每一位如果是 1,是否有满足的匹配方案,如果有,则可以,否则不行。

代码:

#include <bits/stdc++.h>
using namespace std;
#define LL long long
void solve(){
	int n;
	cin >> n;
	vector <int> a(n), b(n);
	for (int i = 0; i < n; i ++ )
		cin >> a[i];
	for (int i = 0; i < n; i ++ )
		cin >> b[i];
	int ans = 0;
	auto check = [&](int x){
		vector <int> c(n), d(n);
		for (int i = 0; i < n; i ++ )
			c[i] = a[i] & x;
		for (int i = 0; i < n; i ++ )
			d[i] = ~b[i] & x;
		sort(c.begin(), c.end());
		sort(d.begin(), d.end());
		return c == d;
	};
	for (int i = 29; i >= 0; i -- ){
		if (check(ans | (1 << i))){
			ans |= (1 << i);
		}
	}
	cout << ans << "\n";
}
int main(){
	ios::sync_with_stdio(false);cin.tie(0);
	int T = 1;
	cin >> T;
	while(T -- ){
		solve();
	}
	return 0;
}

标签:Educational,Rated,int,Codeforces,cin,++,序列,一位
From: https://www.cnblogs.com/Hamine/p/16636993.html

相关文章

  • Codeforces Round #287 (Div. 2) B. Amr and Pins(数学/思维)
    https://codeforces.com/contest/507/problem/B题目大意:Amr有一个半径为r、圆心在点(x,y)的圆。他希望圆心在新的位置(x',y')。在一个步骤中,Amr可以将一个大头针放在......
  • Educational DP Contest G - Longest Path
    目录题目思路代码题目给定一个有向无环图,叫你求图中的最长路径思路记忆化搜索,定义f[i]:表示从点i开始的最长路径长度,那么很容易得出转移方程为\(f_i=max(f_i,f_......
  • Educational Codeforces Round 134 E - Prefix Function Queries补题
    原题链接参考了jly的写法#pragmaGCCoptimize(2)#include<bits/stdc++.h>usingnamespacestd;#definefrfirst#definesesecond#defineet0exit(0);#define......
  • Educational Codeforces Round 125 D
    D.ForGamers.ByGamers.最近又生病了然后就休息了两天人还真是休息不得直接寄掉了不管是手速还是思维啥的看到这道题很简单的一个变形都没看出来只看出了二分......
  • Educational Codeforces Round 134 (Rated for Div. 2) A-C
    2A,C题wa2不知道为什么。B题少判一个条件:左上角A:题意有点不懂,到最后才知道是有多少种数,就输出这个种数-1即可intn,m;voidsolve(){//cin>>n>>m;chars[......
  • Educational Codeforces Round 134 (Rated for Div. 2)
    EducationalCodeforcesRound134(RatedforDiv.2)D.MaximumAND题目大意给出序列a,b,b可以任意排列,序列c有\(c_i=a_i\bigoplusb_i\)。c序列的价值为c1&c2&c33...&......
  • Codeforces Round #816 (Div. 2)/CodeForces1715
    CodeForces1715Crossmarket解析:题目大意有一个\(n\timesm\)的空间,Stanley需要从左上角到右下角;Megan则需要从左下角到右上角。两人可以耗费\(1\)能量到达相邻......
  • 学习随笔——codeforces题目Build Permutation解答
    摘要:本题属于构造算法,虽然简单但对思维提升有一定帮助题目原地址如下:https://codeforces.com/problemset/problem/1713/C题目截图如下:  关键词:构造算法,动态规划,*120......
  • Codeforces Round #813 (Div. 2) A - E2
    A:一组长度为n的排列,问交换多少次,能让前m个数变成[1,m]中的数输出前m个数中有多少个比m大的就可以了//-------------------------代码----------------------------......
  • codeforces round #815 (div.2) B. Interesting Sum
    一开始的想法是n^2时间暴力枚举片段的开头和结尾,但是时间肯定不行。所以干脆想办法缩减时间,用个priority_queue呀,甚至尝试着动态规划。但是很显然无论如何这种东西没法dp,完......