雕刻时光

just do it……nothing impossible
随笔 - 547, 文章 - 0, 评论 - 82, 阅读 - 86万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

随笔分类 -  博弈专辑

摘要:N个石子,A和B轮流取,A先。每个人每次最少取一个,最多不超过上一个人的个数的2倍。取到最后一个石子的人胜出,如果A要有必胜策略,第一次他至少要取多少个。找规律发现是一个Fibnaci数列,变下型就AC了View Code #include<stdio.h>long long a[1009];int main(){ long long n,i; while(scanf("%lld",&n)!=EOF) { a[0]=0;a[1]=1; if(n==1){ printf("1\n");continue; } ... 阅读全文

posted @ 2012-02-05 09:36 huhuuu 阅读(479) 评论(0) 推荐(0) 编辑

摘要:类似多对石头的博弈判断哪个先取时,再第i个数与总的S取异或,如果a[i]>=(s^a[i])就是先取它、View Code #include<iostream>#include<stdio.h>#include<algorithm>#include<stdlib.h>#include<string.h>#include<math.h>using namespace std;int a[1000009];int b[1000009];int prim[100009];int padd=0;int pp(int a){ 阅读全文

posted @ 2011-09-17 21:05 huhuuu 阅读(361) 评论(0) 推荐(0) 编辑

摘要:就是找必败态>=162为p(162/9)18——161为N 想要进入必败态你就赢了,所以范围大(17/2)9——17为P 进入N必胜态你就输了,玩家没办法才要进入,所以范围小(8/9)1——8为NView Code #include<stdio.h>int main(){ unsigned int n; while(scanf("%d",&n)!=EOF) { unsigned int i=1,t=n,add; while(t!=1) { if(i%2==1) { if(t%9>0) add=1; else add=0; t=t/9; t+= 阅读全文

posted @ 2011-04-11 18:31 huhuuu 阅读(368) 评论(0) 推荐(0) 编辑

摘要:先找必败态如:一堆石头有8个NO:0 1 2 3 4 5 6 7 8S :P N N N P N N N P即s=a%(b+1)if s==0 就为必败态在用nim博弈是s^(a%(b+1))即可View Code #include<stdio.h>int main(){ int t; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); int i,a,b,s; for(i=1;i<=n;i++) { scanf("%d%d",&a,& 阅读全文

posted @ 2011-04-10 21:21 huhuuu 阅读(315) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示