HDU 4876 ZCC loves cards(暴力剪枝)
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(暴力剪枝)的更多相关文章
- hdu 4876 ZCC loves cards(暴力)
题目链接:hdu 4876 ZCC loves cards 题目大意:给出n,k,l,表示有n张牌,每张牌有值.选取当中k张排列成圈,然后在该圈上进行游戏,每次选取m(1≤m≤k)张连续的牌,取牌上值 ...
- HDU 4876 ZCC loves cards _(:зゝ∠)_ 随机输出保平安
GG,,,g艹 #include <cstdio> #include <iostream> #include <algorithm> #include <st ...
- HDOJ 4876 ZCC loves cards
枚举组合,在不考虑连续的情况下推断能否够覆盖L...R,对随机数据是一个非常大的减枝. 通过检測的暴力计算一遍 ZCC loves cards Time Limit: 4000/2000 MS (Ja ...
- hdu 4873 ZCC Loves Intersection(大数+概率)
pid=4873" target="_blank" style="">题目链接:hdu 4873 ZCC Loves Intersection ...
- 多校训练赛2 ZCC loves cards
ZCC loves cards Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- HDU 4873 ZCC Loves Intersection(可能性)
HDU 4873 ZCC Loves Intersection pid=4873" target="_blank" style="">题目链接 ...
- hdu 5288 ZCC loves straight flush
传送门 ZCC loves straight flush Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K ...
- hdu 4882 ZCC Loves Codefires(数学题+贪心)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4882 ------------------------------------------------ ...
- HDU 5228 ZCC loves straight flush( BestCoder Round #41)
题目链接:pid=5228">ZCC loves straight flush pid=5228">题面: pid=5228"> ZCC loves s ...
随机推荐
- 使用U盘安装win7系统,遇到“无法定位现有系统分区”问题
朋友的本子貌似因为安装360wifi而导致一进入系统就蓝屏重启,虽然之后就卸载了360wifi,但是问题依旧,上网Google了一下,发觉网上不少网友诉苦,也有人分析原因,说是因为360wifi导致了 ...
- Pig Run on Hadoop, V1.0
——安装hadoop参考这篇blog: http://www.cnblogs.com/lanxuezaipiao/p/3525554.html?__=1a36 后面产生的问题,slave和master ...
- C++中的基类与派生类
派生类的继承方式总结: 继承方式 说明 public 基类的public和protected的成员被派生类继承后,保持原来的状态 private 基类的public和protected的成员被派生类继 ...
- 字符串和数组中split().toString(),join(),splice(),slice(),substr()和substring()
<!Doctype html> <head> <mate charset="utf-8"> <title>string change ...
- 【转】Android Intent Action 大全
String ADD_SHORTCUT_ACTION 动作:在系统中添加一个快捷方式.. “android.intent.action.ADD_SHORTCUT” String ALL_APPS_AC ...
- 使用JavaMail API发送邮件
发送邮件是很常用的功能,注册验证,找回密码,到货通知,欠费提醒等,都可以通过邮件来提醒. Java中发送邮件需要使用javax.mail.jar包,读者可以上网搜索或去官方下载,下载地址为: 下面贴上 ...
- Eralng 小知识点
文件属性 提取方法:Module:module_info/1 头文件 包含头文件 -include(FileName). %% FileName为绝对路径或相对路径 引入库中包含文件 -include ...
- NServiceBus-进阶
下载 在本教程中我们将创建一个非常简单的订购系统,将从客户机向服务器发送消息.订单系统包括三个项目:客户端.服务器和消息,来完成这个任务,我们将执行以下步骤: 创建客户端项目 创建项目的消息 创建服务 ...
- mongdb创建自增主键(primary key)的相关讨论 - Jason.Zhi
根据mongodb官方文档介绍,如果在插入(insert)操作时,没有指定主键id,那么它会自动给插入行自动附上一个主键id.看起来不错,但是详细看看,就会发现这个id值有点复杂. 如下图: mong ...
- jQuery - Chaining
jQuery - Chaining @(编程) 通过 jQuery,您可以把动作/方法链接起来. Chaining 允许我们在一条语句中允许多个 jQuery 方法(在相同的元素上). jQuery ...