HDU 4876 ZCC loves cards

题目链接

题意:给定一些卡片,每一个卡片上有数字,如今选k个卡片,绕成一个环,每次能够再这个环上连续选1 - k张卡片,得到他们的异或和的数,给定一个L,问能组成[L,R]全部数字的情况下,R的最大值是多少

思路:暴力C(20, 6),然后对于每一个序列去全排后模拟计算值, 只是之前要有个剪枝。全排前。先把k个数随机取数(即不用连续),然后假设这样还满足不了,那么连续的情况肯定也满足不了。直接结束。不进入全排。这样一来因为满足不了的情况实际上是占绝大多数的。所以整体的时间复杂度不会非常高,又因为这题是随机数据。所以还是能过的

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std; int n, k, l, r, a[25], save[25], have[25], v[205], Max, vis[205]; void calmax(int num, int sum) {
vis[sum] = 1;
if (num == k) return;
calmax(num + 1, sum ^ save[num]);
calmax(num + 1, sum);
} bool Maxcal() {
memset(vis, 0, sizeof(vis));
calmax(0, 0);
for (int i = l; i <= r; i++)
if (!vis[i]) return false;
return true;
} void cal() {
if (!Maxcal()) return;
for (int i = 0; i < k; i++)
have[i] = save[i];
do {
memset(v, 0, sizeof(v));
for (int i = 0; i < k; i++) {
int ans = 0;
for (int j = i; j < k + i; j++) {
ans ^= have[(j % k)];
v[ans] = 1;
}
}
for (int i = l; i <= l + k * k; i++)
if (!v[i]) {
r = max(r, i - 1);
break;
}
} while(next_permutation(have + 1, have + k));
} void dfs(int now, int num) {
if (num == k) {
cal();
return;
}
for (int i = now; i < n; i++) {
save[num] = a[i];
dfs(i + 1, num + 1);
}
} int main() {
while (~scanf("%d%d%d", &n, &k, &l)) {
for (int i = 0; i < n; i++)
scanf("%d", &a[i]);
sort(a, a + n);
r = l - 1;
dfs(0, 0);
if (r < l) printf("0\n");
else printf("%d\n", r);
}
return 0;
}

HDU 4876 ZCC loves cards(暴力剪枝)的更多相关文章

  1. hdu 4876 ZCC loves cards(暴力)

    题目链接:hdu 4876 ZCC loves cards 题目大意:给出n,k,l,表示有n张牌,每张牌有值.选取当中k张排列成圈,然后在该圈上进行游戏,每次选取m(1≤m≤k)张连续的牌,取牌上值 ...

  2. HDU 4876 ZCC loves cards _(:зゝ∠)_ 随机输出保平安

    GG,,,g艹 #include <cstdio> #include <iostream> #include <algorithm> #include <st ...

  3. HDOJ 4876 ZCC loves cards

    枚举组合,在不考虑连续的情况下推断能否够覆盖L...R,对随机数据是一个非常大的减枝. 通过检測的暴力计算一遍 ZCC loves cards Time Limit: 4000/2000 MS (Ja ...

  4. hdu 4873 ZCC Loves Intersection(大数+概率)

    pid=4873" target="_blank" style="">题目链接:hdu 4873 ZCC Loves Intersection ...

  5. 多校训练赛2 ZCC loves cards

    ZCC loves cards Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  6. HDU 4873 ZCC Loves Intersection(可能性)

    HDU 4873 ZCC Loves Intersection pid=4873" target="_blank" style="">题目链接 ...

  7. hdu 5288 ZCC loves straight flush

    传送门 ZCC loves straight flush Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K ...

  8. hdu 4882 ZCC Loves Codefires(数学题+贪心)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4882 ------------------------------------------------ ...

  9. HDU 5228 ZCC loves straight flush( BestCoder Round #41)

    题目链接:pid=5228">ZCC loves straight flush pid=5228">题面: pid=5228"> ZCC loves s ...

随机推荐

  1. Windows Azure Platform 系列文章目录

    Windows Azure Platform (一) 云计算的出现 Windows Azure Platform (二) 云计算的分类和服务层次 Windows Azure Platform (三) ...

  2. about云资源共享

      Nosql资源: http://www.aboutyun.com/thread-5655-1-1.html (1)redis安置(2)RedisAdminUI.zip(3)redis安装部署(4) ...

  3. 理解OAuth 2.0 -摘自网络

    OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版.                                      本文对OA ...

  4. MVC中过虑特殊字符检测

    [ValidateInput(false)] [HttpPost] public ActionResult Modify(Models.BlogArticle model) { //...... } ...

  5. 使用AndroidStudio dump heap,再用 Eclipse MAT插件分析内存泄露

    1.eclipse mat插件的安装 Help->Install new software,如下图,一直下一步即可 2.AndroidStudio dump heap 3.AndroidStud ...

  6. Python基础 初识Python

    机器码 机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的CPU可直接解读的数据. 通常意义上来理解的话,机器码就是计算机可以直接执行,并且执 ...

  7. Dom操作的分类

    1.DOM core 使用DOM core来获取表单对象的方法: document.getElementByTagName("form"); 使用DOM Core来获取某元素的sr ...

  8. 为什么 Apple 开发者网站关闭是件好事?

    作者:趋势科技 Apple 的开发者中心网站在 7 月 18 日因为安全漏洞或攻击而关闭.在他们的通知里,Apple 公司表示,这起安全事件可能导致开发商的姓名.通讯地址和电子邮件地址被盗取,虽然该公 ...

  9. C# 抽象类和接口的区别

    从表象上来说,抽象类可以给出一些成员的实现,而接口却不包含成员的实现,抽象类的成员可以被继承类来部分实现,而接口类中的成员要子类来全部实现 .还有一个类可以实现多个接口,但只可以继承一个抽象类,这只是 ...

  10. typedef block

    给同一种类型的block定义一个别名 typedef int (^MyBlock) (int , int); int main(int argc, const char * argv[]) { @au ...