admin管理员组文章数量:1551975
链接:
http://codeforces/contest/862/problem/C
题意:
构造n个不同的数,使他们的异或和为x
题解:
0 ^ 1 ^ 2 ^ 3 ^ ... ^ (n-3) ^ (n-2) ^ ( 0 ^ 1 ^ 2 ^ 3 ^ ... ^ (n-3) ^ (n-2) ^ x) == x
如果最后一项<n-1,那就说明和前面的重复了,如果a[n-1]!=a[n-2],那就直接让这两项都异或(1<<18),如果相等,那就让a[n-3],a[n-1]都异或上(1<<18)
另外还要特判n=2,x=0的情况,只有这一种是No
代码:
31 int n, x; 32 int a[MAXN]; 33 34 int main() { 35 ios::sync_with_stdio(false), cin.tie(0); 36 cin >> n >> x; 37 if (n == 1) return (cout <<"YES"<<endl<< x << endl), 0; 38 if (n == 2 && x == 0) return (cout << "NO" << endl), 0; 39 a[n - 1] = x; 40 rep(i, 0, n - 1) a[i] = i, a[n - 1] ^= i; 41 if (a[n - 1] < n - 1) { 42 if (a[n - 1] != a[n - 2]) a[n - 2] ^= (1 << 18); 43 else a[n - 3] ^= (1 << 18); 44 a[n - 1] ^= (1 << 18); 45 } 46 cout << "YES" << endl; 47 rep(i, 0, n) cout << a[i] << ' '; 48 cout << endl; 49 return 0; 50 }
本文标签: DivcodeforcesxorEhabMahmoud
版权声明:本文标题:Codeforces Round #435 (Div. 2) C. Mahmoud and Ehab and the xor 构造 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1727269252a1105819.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论