博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ4347 : [POI2016]Nim z utrudnieniem
阅读量:7078 次
发布时间:2019-06-28

本文共 682 字,大约阅读时间需要 2 分钟。

将石子从小到大排序,然后DP。

设$f[i][j][k]$表示考虑了前$i$堆的石子,当前扔掉的堆数模$d$为$j$,没有扔掉的石子的异或和为$k$的方案数。

因为石子排过序,所以转移的复杂度为$O(md)$。

对于空间的问题,注意到$f[i][j][k]$和$f[i][j][k\ xor\ a[i]]$的转移是互补的,于是可以同时处理,省去滚动数组,直接做到原地DP,当然$f[i][0][k]$要特别处理。

最后注意特判$n$是$d$的倍数的情况,此时答案应该减去$1$。

 

#include
const int N=1048576,P=1000000007;int n,d,m,p,i,j,k,x,a[N],f[10][N],g[N];inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}inline int add(int a,int b){ a+=b; if(a>=P)a-=P; return a;}int main(){ for(read(n),read(d);i
m)m=j; } for(f[0][0]=i=p=1;i<=m;i++){ while(p<=i)p<<=1; while(a[i]--){ for(k=0;k

  

转载地址:http://jppml.baihongyu.com/

你可能感兴趣的文章
《数据分析实战:基于EXCEL和SPSS系列工具的实践》一3.4.2 用专业工具处理
查看>>
MySQL运维之神奇的参数(终结篇)
查看>>
《Photoshop图层调整深度剖析》目录—导读
查看>>
《Wireshark网络分析就这么简单》—Excel文件的保存过程
查看>>
《高度安全环境下的高级渗透测试》—第1章1.4节探索BackTrack
查看>>
《Origin 9.0科技绘图与数据分析超级学习手册》一2.5 本章小结
查看>>
深度解析 API 监控那些事儿
查看>>
互联网企业安全高级指南3.7.3 因地制宜的SDL实践
查看>>
centos7.0体验与之前版本的不同
查看>>
《Docker生产环境实践指南》——1.2 从开发环境到生产环境
查看>>
Java NIO系列教程(五) 通道之间的数据传输
查看>>
open-falcon安装使用监控树莓派
查看>>
【基础篇】零碎时间整理JS
查看>>
理解 Android Battery 信息
查看>>
js红宝书总结-正则表达式
查看>>
Python2.7爬取acg178全站(大雾)
查看>>
iview 使用render渲染InputNumber,并格式化数字
查看>>
使用swoole改造laravel应用
查看>>
微信自动化工具---自动发送朋友圈(非root权限)
查看>>
在kubernetes集群中部署open-falcon
查看>>