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. 一步步实现Promise

    最近在https://github.com/ThoughtWorksInc/rest-rpc上工作,遇到了一个scala隐式转换的问题,简单的说是要实现这么个东西: implicit def json ...

  2. MarkdownPad 破解学习

    最近学习 Markdown,从网上下载了 Windows 下的编辑器:MarkdownPad.这款软件分为免费版和专业版(收费), 对于普通用户来说免费版已经足够,专业版比免费版多了如下几个功能: 一 ...

  3. AI钻石天鹅风格

    第1步:描绘轮廓 你需要对你的设计有个总体的概念.利用照片和钢笔工具(P)描出轮廓.把填充颜色设为无,描边颜色设为黑色,1pt 粗细.这将作为你完成剩下设计的指导.编组 (Ctrl+G)你的线条并在图 ...

  4. dom 筛选器

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  5. ControlsFX8.0.2中对话框无法判断是否显示的修改

    在org.controlsfx.dialog.FXDialog.java中加入 public abstract boolean isShowing(); 在org.controlsfx.dialog. ...

  6. 删除Ngnix 日志

    删除Ngnix日志的脚本 #!/bin/bash #初始化 LOGS_PATH=$(pwd)/logs YESTERDAY=$(date -d "yesterday" +%Y-%m ...

  7. ArcGIS Desktop10.2与CityEngine2012兼容问题

    要培训ArcGIS Desktop和Esri CityEngine2012.在一台机器上装好Desktop10.2之后,在注册Esri CityEngine2012时报出了"7019:Inv ...

  8. tty & pty & pts

    [tty & pty & pts] 基本概念: 1> tty(终端设备的统称):tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过 ...

  9. [iOS微博项目 - 3.3] - 封装网络请求

    github: https://github.com/hellovoidworld/HVWWeibo   A.封装网络请求 1.需求 为了避免代码冗余和对于AFN框架的多处使用导致耦合性太强,所以把网 ...

  10. Leetcode226:Invert Binary Tree

    Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 /** * Definition for a ...