自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 UVA 1494 Qin Shi Huang's National Road System(次小生成树+Prim)

#include #include #include #include #include #include using namespace std; const int maxn=1000+5; int x[maxn],y[maxn],val[maxn]; int n; struct edge{ int u,v; double dist; edge(int u=0,int

2016-12-31 23:40:06 263

原创 SPOJ Make them equal !

把所有数加起来,对个数取模,如果刚好等于0,那么都可凑成n各ans/n,如果不等于0,可以凑成n-1个(ans-ans%n)/(n-1)。 #include using namespace std; const int maxn=100000+5; int a[maxn]; int main() { int t; cin>>t; while(t--) {

2016-12-31 20:27:13 232

原创 POJ 1704 Georgia and Bob(阶梯博弈)

第一题阶梯博弈 之前HDU1730做过两个棋子的,这次是n个棋子,那么2个一组,它们之间的距离就是一个nim,两组之外不需要管,因为前面一个动了,后面跟进维持距离,后面动了,就是距离缩短了,所以某一组的第一个与前一组的后一个的距离是无所谓的。 #include #include using namespace std; const int maxn=1000+5; int pos[maxn];

2016-12-30 20:13:55 174

原创 HDU 1517 A Multiplication Game(巴什博弈)

普通的博弈推理,[n,无穷]为必败点,那么[n/9,n-1]为必胜点,#include #include using namespace std; int main() { int n; while(cin>>n) { int i; for(i=0;n>1;i++) { if(i&1)

2016-12-21 22:01:40 196

原创 HDU 1536 S-Nim(sg函数)

这题两个坑点,g要排序,这个不难想。 最坑的是Hash数组要换成bool型,int就TLE到死吧。 #include #include #include using namespace std; const int maxn=1e4+5; int sg[maxn],g[maxn]; bool Hash[maxn]; int k; void cal_sg() { memset(sg,fa

2016-12-21 21:42:50 201

原创 HDU 5996 dingyeye loves stone(Nim 变形)

对数深度为偶数的节点,不需要考虑,因为这是必败态,留给对手,每次对手动,跟进就可以了。 对于奇数深度的节点是正常比赛的关键,并且这些节点符合Nim博弈。 #include using namespace std; const int maxn=1e5+5; int dep[maxn]; int main() { int t; scanf("%d",&t); while(

2016-12-21 20:56:59 227

原创 HDU 1849 Rabbit and Grass(Nim game)

#include using namespace std; int main() { int n; while(cin>>n) { if(n==0) break; int k,ans=0; for(int i=0;i>k;ans^=k;} if(ans==0) cout<<"Grass Win!"<<endl;

2016-12-21 16:04:01 206

原创 sg函数模版

可以根据题目要求,设计好g,然后求sg,模版中的g是斐波那契数列。void cal_sg() { g[1]=1;g[2]=2; for(int i=3;i<=20;i++) g[i]=g[i-1]+g[i-2]; memset(sg,0,sizeof(sg)); for(int i=1;i<=1000;i++) { memset(Hash,0

2016-12-21 15:59:31 282

原创 HDU 1848 Fibonacci again and again(博弈sg函数)

#include #include using namespace std; const int maxn=1000+5; int Hash[maxn]; int sg[maxn],f[maxn]; int g[20]; void cal_sg() { g[1]=1;g[2]=2; for(int i=3;i<=20;i++) g[i]=g[i-1]+g[i-2]; mem

2016-12-21 15:58:25 322

原创 HDU 1847 Good Luck in CET-4 Everybody!(博弈sg函数)

#include #include using namespace std; const int maxn=1000+5; int Hash[maxn]; int sg[maxn],f[maxn]; int g[15]={1,2,4,8,16,32,64,128,256,512,1024}; void cal_sg() { memset(sg,0,sizeof(sg)); for(

2016-12-21 15:53:30 253

原创 HDU 2149 Public Sale(巴什博弈)

#include using namespace std; int main() { int m,n; while(cin>>m>>n) { if(m<=n){ for(int i=m;i<=n;i++){ if(i==m) cout<<i; else cout<<" "

2016-12-20 21:25:48 190

原创 HDU 2188 悼念512汶川大地震遇难同胞——选拔志愿者(巴什博弈)

#include using namespace std; int main() { int t; cin>>t; while(t--) { int n,m; cin>>n>>m; if(n%(m+1)==0) cout<<"Rabbit"<<endl; else cout<<"Grass"<<endl

2016-12-20 21:04:47 196

原创 HDU 2147 kiki's game(巴什博弈)

* 博弈论:组合博弈 * 必败点(P点) :前一个选手(Previous player)将取胜的位置称为必败点。 * 必胜点(N点) :下一个选手(Next player)将取胜的位置称为必胜点。 * 必败(必胜)点的属性: * (1) 所有终结点是必败点(P点); * (2) 从任何必胜点(N点)操作,至少有一种方法可以进入必败点(P点); * (3)无论如何操作, 从必败点

2016-12-20 20:51:15 200

原创 HDU 1846 Brave Game(巴什博弈)

#include using namespace std; int main() { int t; cin>>t; while(t--) { int n,m; cin>>n>>m; if(n%(m+1)==0) cout<<"second"<<endl; else cout<<"first"<<endl

2016-12-20 20:05:45 169

原创 HDU 1730 Northcott Game(Nim game)

把黑子与白子之间的距离当作每一堆石子的个数,那么只要第一次看一下异或后的值ans是否为0即可判断是否必败还是必胜了。 因为ans不等于0,那么先手走完一部后,后手面对的局面就是必败态了,后手移动以后,那一堆的石子增加了,那么先手只要使那一堆石子恢复成必败态即可。 ans等于0的情况也类似。#include #include using namespace std; int main() {

2016-12-20 10:16:22 239

原创 HDU 1907 John(Nim game)

这题需要特判一下, 如果所有堆都为孤独堆,那么看n的奇偶性来判断胜负。 其他情况普通的Nim判断就可以了。#include using namespace std; int main() { int t; cin>>t; while(t--) { int n; cin>>n; int x,ans=0;

2016-12-19 21:18:23 182

原创 HDU 2176 取(m堆)石子游戏(Nim game)

#include using namespace std; const int maxn=200000+5; int N[maxn]; int main() { int m; while(cin>>m) { if(m==0) break; int ans=0; for(int i=0;i>N[i];ans^=N[i];}

2016-12-19 21:01:13 334

原创 尼姆博弈(Nimm's Game)

尼姆博弈(Nimm's Game) 题型 尼姆博弈模型,大致上是这样的: 有3堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取1个,多者不限,最后取光者得胜。   分析 1、首先自己想一下,就会发现只要最后剩两堆物品一样多(不为零),第三堆为零,那面对这种局势的一方就必败 那我们用(a,b,c)表示某种局势,首先(0,0,0)显然是必败态,无论谁面对(

2016-12-19 20:50:08 243

原创 HDU 1850 Being a Good Boy in Spring Festival(Nim game)

#include using namespace std; const int maxn=100+5; int N[maxn]; int main() { int m; while(scanf("%d",&m)&&m) { int ans=0; for(int i=0;i<m;i++) {scanf("%d",&N[i]);ans=ans^N

2016-12-19 20:49:38 160

原创 哈尔滨理工大学第六届程序设计团队赛网络同步赛

弱队只过了7题,吃完饭回来补吧。

2016-12-10 14:03:08 490

原创 Codeforces Round #383 (Div. 2)

A #include using namespace std; int main() { int n; scanf("%d",&n); if(n==0) printf("1\n"); else{ int m=n%4; if(m==1) printf("8\n"); else if(m==2) printf("4\n"); else if(m==3) printf("2\n

2016-12-07 22:58:13 194

原创 Hrbust 1475 Blocks(Fibonacci)

矩阵递推关系 学过代数的人可以看出,下面这个式子是成立的: &lt;img src="https://pic1.zhimg.com/d900e0509f9d056286ff9455e7706f90_b.jpg" data-rawwidth="284" data-rawheight="69" class="cont

2016-12-05 23:55:15 161

原创 哈尔滨理工大学软件学院ACM程序设计全国邀请赛(网络同步赛)

比赛的时候只写了四题,考完试把题补完。

2016-12-04 21:51:45 458

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除