Bzoj3609[Heoi2014]人人尽说江南好(博弈)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Bzoj3609[Heoi2014]人人尽说江南好(博弈)相关的知识,希望对你有一定的参考价值。
先pia代码
1 #include<iostream> 2 using namespace std; 3 int main(){ 4 int n,a,b; 5 cin>>n; 6 for(int i=0;i<n;i++){ 7 cin>>a>>b; 8 int c=a/b;int d=a%b;//c代表最多分成c份b堆。d代表剩下的那一堆最多为多少 9 if(d==0) d++;//如果根本没有剩下的,那就把d+1,使ans的值不会错~ 10 int ans=c*(b-1)+d-1; 11 if(ans%2==0) cout<<1<<endl; 12 else cout<<0<<endl; 13 } 14 }
首先,这是第一道通过自身的努力,不问大佬后写出来的
其次,这道题我本来在30min内快A掉了,发现W一脸懵逼,找了很久不造为什么,突然发现自己代码没换行(
后来本着试一试的心情把printf和scanf改成cin>>……和cout<<……<<endl;结果就过了==于是乎。。。
没有A的原因是没换行TAT
好了回归正题~:
先说思路:求出合并总次数,然后判断奇偶便可
证一波:
因为每堆石子合并到对后肯定不能超过m,于是乎,最优方案是先把n分解成c对大小为m的石子堆~(这样后面的肯定就不能与前面的合并了吧),然后剩下的在一一处理。判断最后一步合并是谁走的,如果是偶数那就是对手走的,反之便是小Z走的辣
a个一合并成a的次数就是a-1了嘛。。。
附张图片:
这是数字7的分解图
以上是关于Bzoj3609[Heoi2014]人人尽说江南好(博弈)的主要内容,如果未能解决你的问题,请参考以下文章