题目链接:Codeforces 460D Little Victor and Set
题目大意:给定范围l,r,选小于k个数,使得这些数的亦或和最小。
解题思路:加入k为偶数,那么kXOR(k+1)=1
根据这个可以处理掉k≠3的所有情况。
对于k=3的情况,找到一个大于l的2k,如果满足2k+1≤r,那么就可以构造出三个数亦或值为0的情况。
using namespace std;
typedef long long ll;
ll l, r, k;
void solve (int n) {
int s = 1;
ll ret = l;
for (int i = 2; i < (1<<n); i++) {
ll u = 0;
for (int j = 0; j < n; j++)
if (i&(1<<j))
u ^= (l+j);
if (u < ret) {
ret = u;
s = i;
}
}
int x = 0;
ll arr[10];
for (int i = 0; i < n; i++)
if (s&(1<<i))
arr[x++] = l + i;
printf("%lld\n%d\n", ret, x);
printf("%lld", arr[0]);
for (int i = 1; i < x; i++)
printf(" %lld", arr[i]);
printf("\n");
}
void fuck () {
ll x = 1;
while (x <= l) x <<= 1;
if ((x | (x>>1)) <= r) {
printf("0\n3\n");
printf("%lld %lld %lld\n", l, x | (x>>1), (x | (x>>1)) ^ l);
return;
}
printf("1\n2\n");
if (l&1)
l++;
printf("%lld %lld\n", l, l+1);
}
int main () {
scanf("%lld%lld%lld", &l, &r, &k);
if (k == 1)
printf("%lld\n1\n%lld\n", l, l);
else if (k >= 5) {
if (l&1)
l++;
printf("0\n4\n%lld %lld %lld %lld\n", l, l+1, l+2, l+3);
} else if (k == 4 && (r - l + 1 > 4 || l%2 == 0)) {
if (l&1)
l++;
printf("0\n4\n%lld %lld %lld %lld\n", l, l+1, l+2, l+3);
} else if (k == 2 && (r - l + 1 > 2 || l%2 == 0)) {
if (l&1)
l++;
printf("1\n2\n%lld %lld\n", l, l+1);
} else if (k == 2) {
if ((l^r) > l)
printf("%lld\n1\n%lld\n", l, l);
else
printf("%lld\n2\n%lld %lld\n", l^r, l, r);
} else if (k == 4) {
solve(k);
} else {
fuck();
}
return 0;
}
分享到:
相关推荐
Codeforces 1105B - Zuhair and Strings 测试点37个(全)
Codeforces 1925D Good Trip 题解
codeforces每日一题。 题意: 给出一个数组,让你挑选出能组成任意pair差值为2的幂的序列,并且使这个序列长度尽可能大。 思路: 针对于挑选出来的序列,任意pair对的差值为2的幂数。 假设有多个pair对,设dis(a,b)=2...
Codeforces-Problem-Set
Codeforces 题库 101-200 共~500题 codeforces.com版权所有。 程序可提交至该网站评测。
Codeforces 题库 001-100 共~500题 codeforces.com版权所有。 程序可提交至该网站评测。
题意: 给出 nnn 个点,n−1n-1n−1 条边,最多询问 n2\frac{n}{2}2n 次,每次询问 u,vu,vu,v,会给出 uvuvuv的最近公共祖先,...set g[N]; int ans[N]; int main() { sd(n); rep(i, 1, n - 1) { sdd(u, v); g[u
codeforces编程网站预测分数插件
Educational Codeforces Round 157D. XOR Construction
使用于Google Chrome的Codeforces Enhancer 1.1.2插件安装包。 版本:codeforces enhancer 1.1.2 使用浏览器:Google Chrome
题目大意:给出一个由 n 个点组成的树,现在可以询问 n/2 次(向下取整)LCA,确定根节点是哪个节点 题目分析:因为最多只能求 n/2 次lca,每次需要两个节点作为参数,也就是说每个点我们至多遍历一遍,读完题后没什么...
【并查集】Codeforces 566D Restructuring Company题面在这里对于本题,只需要再维护一个并查集表示i所在联通块的最右位置因为相邻
暴枚最长桌脚的长度$l$,然后长度比$l$长的桌脚全部都要砍掉长度比$l$短的桌脚选择代价前$k$小的砍掉用线段树维护;示例程序 :typedef long l
Codeforces 185A - Plant 全测试点49个
Codeforces 149 D-Coloring Brackets,动态规划求解
codeforces 19 E Fairy 一道比较难的题目的解题报告 推荐阅读
Codeforces global round 10 codes
Codeforces round 678 division 2 codes
Some of the Codeforces problems codes
Codeforces部门2,A # And a2oj Ladder 4 some problems Ladder URL:http://a2oj.com/Ladder.jsp?ID=4难度等级:2问题提示: 1- 4A....... http://codeforc