bzoj 4600 硬币游戏 博弈论
来源:互联网 发布:c语言开方函数 编辑:程序博客网 时间:2024/06/08 15:49
反硬币操作与c无关,只与2和3的指数有关。设sg[i][j]为2和3的指数分别为i和j时,且前面的硬币都不可翻时的sg值。然后就可以枚举p,q,对于每一个p,q,它的sg值为 sg[i-k*q][j]的异或和以及sg[i][j-k*q]的异或和,求mex。
#include<cstdio>#include<cstring>#include<iostream>#define maxn 30005using namespace std;int p[maxn];int n,mxq;bool mark[500];int sg[20][20];void get_sg(){ memset(sg,0,sizeof(sg)); for(int i=0;i<=15;i++) for(int j=0;j<=15;j++) { memset(mark,0,sizeof(mark)); for(int p=1;p<=i;p++) for(int q=1;q<=mxq;q++) { if(p*q>i) break;int X=0; for(int k=1;k<=q;k++) X^=sg[i-k*p][j]; mark[X]=1; } for(int p=1;p<=j;p++) for(int q=1;q<=mxq;q++) { if(p*q>j) break;int X=0; for(int k=1;k<=q;k++) X^=sg[i][j-k*p]; mark[X]=1; } int k=0;while(mark[k]) k++; sg[i][j]=k; }}int c[maxn],a[maxn],b[maxn];void calc(int x){ int t=x; while(t%2==0) a[x]++,t/=2; while(t%3==0) b[x]++,t/=3; c[x]=t;}int main(){ int T;scanf("%d",&T); for(int i=1;i<=30000;i++)calc(i); while(T--) { scanf("%d%d",&n,&mxq); get_sg(); int Xor=0; for(int i=1;i<=n;i++) { scanf("%d",&p[i]); if(!p[i]) Xor^=sg[a[i]][b[i]]; } if(Xor) puts("win"); else puts("lose"); } return 0;}
1 0
- bzoj 4600 硬币游戏 博弈论
- 博弈论翻硬币游戏
- BZOJ - 1411 硬币游戏
- 【bzoj4600】【SDOI2016】【硬币游戏】【博弈论+dp】
- bzoj 1188 分裂游戏 博弈论
- HDU 3537 Daizhenyang's Coin (博弈论、翻硬币游戏)
- bzoj 1874 取石子游戏 博弈论
- BZOJ 1188 分裂游戏 (博弈论)
- BZOJ 1188: [HNOI2007]分裂游戏 博弈论
- BZOJ 1411 ZJOI2009 硬币游戏 递推
- bzoj 1411: [ZJOI2009]硬币游戏 找规律
- [KMP 高斯消元] BZOJ 4820: [Sdoi2017]硬币游戏
- 4600: [Sdoi2016]硬币游戏
- 博弈论-美女的硬币
- BZOJ 1022 SHOI2008 小约翰的游戏John 博弈论
- bzoj 1413 [ZJOI2009]取石子游戏 博弈论 dp
- bzoj 1022: [SHOI2008]小约翰的游戏John 博弈论
- [博弈论][阶梯博弈] BZOJ 1115:POI2009 石子游戏Kam
- XZ_iOS之Application' in SDK 'iOS 10.0错误的解决_
- 设计模式(二):抽象工厂模式
- Android 的滑动分析以及各种实现
- Mercury:唯品会全链路应用监控系统解决方案详解(含 PPT)
- Unity给力插件之ShaderForge(一)
- bzoj 4600 硬币游戏 博弈论
- atl异步线程调用js函数
- swustoj自守数(0485)
- saltstack--用户管理
- [美国签证]准备材料及面签过程
- 基于Jetson TX1的摄像头API函数例程
- Wix使用
- 【转】微信JS-SDK选择相册或拍照并上传PHP实现
- Oracle数据库建表 Oracle数据库的统一命名与编码规范