BZOJ4347 POI2016Nim z utrudnieniem(博弈+动态规划)
2024-09-25 15:25:19
由nim游戏的结论,显然等价于去掉一些数使剩下的数异或和为0。
暴力的dp比较显然,设f[i][j][k]为前i堆移走j堆(模意义下)后异或和为k的方案数。注意到总石子数量不超过1e7,按ai从小到大排序,这样k的枚举范围就不会超过2ai,于是复杂度O(md)。
注意空间卡的非常紧,连滚动都开不下,改为留下的有j堆(模意义下)可能比较方便,存一下j=d-1时的数组,对j=1~d-1倒序转移完后再特判j=0即可。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 500010
#define P 1000000007
int n,m,a[N],u[N<<],f[][<<],tmp[<<];
inline void inc(int &x,int y){x+=y;if (x>=P) x-=P;}
int main()
{
#ifndef ONLINE_JUDGE
freopen("bzoj4347.in","r",stdin);
freopen("bzoj4347.out","w",stdout);
const char LL[]="%I64d\n";
#else
const char LL[]="%lld\n";
#endif
n=read(),m=read();
for (int i=;i<=n;i++) a[i]=read();
sort(a+,a+n+);
int t=;
for (int i=;i<=;i++)
{
if (t<i) t=t<<|;
u[i]=t;
}
f[][]=;
for (int i=;i<=n;i++)
{
memcpy(tmp,f[m-],u[a[i]]+<<);
for (int j=m-;j>=;j--)
for (int k=;k<=u[a[i]];k++)
inc(f[j][k],f[j-][k^a[i]]);
for (int k=;k<=u[a[i]];k++)
inc(f[][k],tmp[k^a[i]]);
}
cout<<(f[n%m][]-(n%m==)+P)%P;
return ;
}
最新文章
- LPC1768\1769之中断优先级与中断优先级组
- [转载]Python &; Selenium -- 页面加载时间过长&;启动指定FF
- 面向对象版js分页
- GridView控件 Reapter控件 DataList控件 的区别和用法
- (转)ultraedit for linux 安装与注册破解
- Ant学习实例
- CONSOLE_SCREEN_BUFFER_INFO 结构体
- ROS机器人程序设计(原书第2版)补充资料 (玖) 第九章 导航功能包集进阶 navigation
- Struts2源码解析2
- nginx+lua学习
- XamarinSQLite教程在Xamarin.Android项目中定位数据库文件
- 谁说delphi没有IOCP库,delphi新的IOCP类库,开源中
- golang-gorm框架支持mysql json类型
- ​Error -4075: File not found. An error occurred merging module <;MODULENAME>; for feature <;FEATURENAME>;.
- Java:当前线程运行完毕,再运行后续逻辑
- 巨蟒python全栈开发flask7 语音识别升级版&;&;mongoDB
- 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0” 提供程序
- Mybatis-Spring包学习
- zabbix监控tcp连接数的脚本!!
- ibatis核心内容概述
热门文章
- alias,unalias命令
- 14.2 multiprocessing--多线程
- webpack 之 webpack-dev-server自动刷新
- Sencha Themer
- [MIP]mip-script组件自定义 JS 代码使用限制
- pyecharts的简单使用
- R语言绘图:词云图
- java使用java.util.Properties读取properties文件的九种方法
- Mac下用tomcat搭建下载服务器
- 2016弱校联盟十一专场10.3 We don&#39;t wanna work!