比赛的时候没仔细想,赛后一想这题其实挺简单的,先求出序列的异或前缀和,然后将异或前缀和建出一颗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. zookeeper心跳机制流程梳理

    zookeeper心跳机制流程梳理 Processor链Chain protected void setupRequestProcessors() { RequestProcessor finalPr ...

  2. 使用 yum 安装 virtualbox 虚拟机

    我的环境是centos7,所以也可以说是在centos7下使用yum安装virtualbox,不过对于其他的LINUX发行版方法都一样. 下面的操作都是在命令行中进行的. 1.首先需要配置yum的源. ...

  3. django manytomany

    转载:http://my.oschina.net/u/572994/blog/105280 例如有如下模型 models.py ? 1 2 3 4 5 6 7 from django.db impor ...

  4. <六>JDBC_DAO 设计模式

    JDBC_DAO设计模式 DAO:Data Access Object(数据访问对象)  why:实现功能的模块化,更有利于代码的维护和升级.  what:访问数据信息的类,包含了对数据的CRUD(c ...

  5. 简明 Git 命令速查表(中文版)

    原文引用地址:https://github.com/flyhigher139/Git-Cheat-Sheet/blob/master/Git%20Cheat%20Sheet-Zh.md在Github上 ...

  6. #20145205 《Java程序设计》第5周学习总结

    教材学习内容总结 1.java中的错误都会被包装为对象这是书上的一句原话,我的理解就是,在java这个大环境中,就像是流水线工厂一样,代码的编译就是进行流水线作业,代码输进来,开始的时候就是打包封装, ...

  7. 连连看final发布视频

    组名:天天向上 组长:王森 组员:张政.张金生.林莉.胡丽娜 代码地址:HTTPS:https://git.coding.net/jx8zjs/llk.git SSH:git@git.coding.n ...

  8. 响应链和UIKit框架

    Event Delivery: The Responder Chain When you design your app, it’s likely that you want to respond t ...

  9. python第一站

    python 第一站,豆瓣-美国末日评论小爬虫 最近学习python,但是光是看书看视频学习,总是觉得掌握的不够扎实.所以就决定自己去写写爬虫,当带着目的性去学,也许更容易发现自己需要什么.这是酝酿多 ...

  10. 记一次【求n以内的素数个数】的优化记录

    最近在leetCode上刷提,还是满锻炼人的,为以后面试打基础吧.不多说下面开始. 问题:求[2,n]之间的素数的个数. 来源:leetCode OJ 提示: Let's start with a i ...