比赛的时候没仔细想,赛后一想这题其实挺简单的,先求出序列的异或前缀和,然后将异或前缀和建出一颗trie树,然后我们可以二分答案,把问题变成判定性问题,判定是否存在一种方案,使得所有的分组的异或和都大于等于这个二分的答案,然后就可以dp了,用f[i][j]表示到j为止能不能分成i组,f[i][j]=f[i-1][j-k]|f[i-1][j-k+1]...|f[i-1][j-1],这个东西用trie树维护一下就可以了。单组数据复杂度O(nmlogn^2)

  代码

 #include<cstdio>
const int N = ;
int num[N],Num[N],trie[N][],tt,sum[N];
int n,m,l,r,i,k,j,a[N],mid;
int flag[][N];
void add(int x,int y)
{
int i;
for (i=;i<=;i++)
num[i]=x&,x>>=;
int t=;
for (i=;i>=;i--)
{
if (trie[t][num[i]]==) trie[t][num[i]]=++tt;
t=trie[t][num[i]];
sum[t]+=y;
}
}
int find(int x,int y)
{
int i;
for (i=;i<=;i++)
{
num[i]=x&,x>>=;
Num[i]=y&,y>>=;
}
int t=;
for (i=;i>=;i--)
{
if (Num[i]==)
{
if (!sum[trie[t][-num[i]]]) return ;
else t=trie[t][-num[i]];
}
else
{
if (sum[trie[t][-num[i]]]) return ;
else if (!sum[trie[t][num[i]]]) return ;
else t=trie[t][num[i]];
}
}
return ;
}
int check(int x)
{
int i,j;
for (i=;i<=m;i++)
for (j=;j<=n;j++)
flag[i][j]=;
flag[][]=;
for (i=;i<=m;i++)
{
for (j=;j<=tt;j++) sum[j]=;
for (j=;j<=n;j++)
{
if (j-k->=)
if (flag[i-][j-k-]) add(a[j-k-],-);
flag[i][j]=find(a[j],x);
if (flag[i-][j]) add(a[j],);
}
}
return flag[m][n];
}
int main()
{
int test;
scanf("%d",&test);
for (int ii=;ii<=test;ii++)
{
for (i=;i<=tt;i++)
trie[i][]=trie[i][]=;
tt=;
scanf("%d%d%d",&n,&m,&k);
for (i=;i<=n;i++)
{
scanf("%d",&a[i]);
a[i]^=a[i-];
}
for (i=;i<=n;i++)
add(a[i],);
l=;r=;
while (l<=r)
{
mid=(l+r)>>;
if (check(mid)) l=mid+;else r=mid-;
}
printf("Case #%d:\n",ii);
printf("%d\n",r);
}
}

hdu5715 XOR 游戏 [2016百度之星复赛D题]的更多相关文章

  1. hdu5713 K个联通块[2016百度之星复赛B题]

    dp 代码 #include<cstdio> ; ; int n,m,k,cnt[N]; ]; ][],i,j,l,a,b; int check(int x,int y) { int i; ...

  2. hdu5714 拍照[2016百度之星复赛C题]

    由于船移动的速度都一样,那么对于往一个方向的船相对距离其实是不变的,我们可以把往一个方向移动的船都视作静止,并求出在哪些观测位置可以看到,很明显对于船[x,y,z],当x+z>=y-z的时候,可 ...

  3. 2016"百度之星" - 复赛(Astar Round3) 1003 拍照

    拍照 思路:先静态,离线树状数组,分别统计每个点向左向右能看到的船的数量.再枚举整个区间求最大值. 应为人和船都是动态的,假设船往左走,处理每个点看到向左最大船的数量,满足动态条件.就是向左的船一开始 ...

  4. 2016百度之星 初赛2A ABEF

    只做了1001 1002 1005 1006.剩下2题可能以后补? http://acm.hdu.edu.cn/search.php?field=problem&key=2016%22%B0% ...

  5. 2016百度之星 资格赛ABCDE

    看题:http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=690 交题:http://acm.hdu.edu.cn/search.php ...

  6. HDU 5690:2016"百度之星" - 初赛 All X

    原文链接:https://www.dreamwings.cn/hdu5690/2657.html All X Time Limit: 2000/1000 MS (Java/Others)    Mem ...

  7. HDU 5688:2016"百度之星" - 资格赛 Problem D

    原文链接:https://www.dreamwings.cn/hdu5688/2650.html Problem D Time Limit: 2000/1000 MS (Java/Others)    ...

  8. HDU 5686:2016"百度之星" - 资格赛 Problem B

    原文链接:https://www.dreamwings.cn/hdu5686/2645.html Problem B Time Limit: 2000/1000 MS (Java/Others)    ...

  9. HDU 5685:2016"百度之星" - 资格赛 Problem A

    原文链接:https://www.dreamwings.cn/hdu5685/2637.html Problem A Time Limit: 2000/1000 MS (Java/Others)    ...

随机推荐

  1. Shell 编程基础之 && 与 ||

    一.引言 Shell 在执行某个命令的时候,会返回一个返回值,该返回值保存在 shell 变量 $? 中.当 $? == 0 时,表示执行成功:当 $? == 1 时,表示执行失败.有时候,下一条命令 ...

  2. Android -- FlipViewController的使用(jar文件)

    1.  此控件的作用 类似于翻书一样,可以上下翻页的控件, 2.  效果图

  3. HTML5新增的标签

    结构性元素<header><footer>定义页眉(与<head>不一样)和页脚 <section>定义section<article> 定 ...

  4. gitlab 创建SSH Keys 报500错

    gitlab 创建SSH Keys 报500错 看了一下日志 root@322323:/home/git/gitlab/log# cat production.log Errno::ENOMEM (C ...

  5. Android自定义控件----RadioGroup实现APP首页底部Tab的切换

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  6. 兼容IE浏览器的js浏览器全屏代码

    众所周知,IE是个奇葩的浏览器,但是由于用户量很大,开发者还是不得不为IE考虑一下,于是,各种浏览器相关的操作,都要多一个特别的判断——专门针对IE浏览器的判断,这里的全屏也不例外.看代码: func ...

  7. linux内核分析作业:以一简单C程序为例,分析汇编代码理解计算机如何工作

    一.实验 使用gcc –S –o main.s main.c -m32 命令编译成汇编代码,如下代码中的数字请自行修改以防与他人雷同 int g(int x) { return x + 3; } in ...

  8. java swing文件内容检索工具

    Java相关技术 - 文件内容检索工具 拿到一个几百M甚至上G的project让你去学习 有时候你会想知道某个关键词是在哪个文件里 比如:spring MVC配置的@RequestMapping,你从 ...

  9. Thinking in Java——笔记(11)

    Holding Your Objects In general, your programs will always be creating new objects based on some cri ...

  10. Linux Vsftpd 连接超时解决方法(被动模式)

    http://blog.csdn.net/qq_15766181/article/details/46554643 使用 FileZilla FTP Client 连接 Vsftpd FTP,在没有配 ...