1. 程式人生 > >【bzoj3298】[USACO 2011Open]cow checkers

【bzoj3298】[USACO 2011Open]cow checkers

opened pow cst 傳送門 hid hive event targe gcd

  題目傳送門:https://www.lydsy.com/JudgeOnline/problem.php?id=3298

  博弈論經典結論題,我也沒什麽好說的。matrix67大佬比我想得深入的多:撿石子遊戲、 Wythoff 數表和一切的 Fibonacci 數列

  代碼:

技術分享圖片
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<ctime>
#include<string>
#include<iostream> 
#include
<algorithm> #include<queue> #include<vector> #include<map> #define ll long long #define ull unsigned long long #define max(a,b) (a>b?a:b) #define min(a,b) (a<b?a:b) #define lowbit(x) (x& -x) #define mod 1000000007 #define inf 0x3f3f3f3f #define eps 1e-18 #define maxn 2000010 inline ll read(){ll tmp
=0; char c=getchar(),f=1; for(;c<0||9<c;c=getchar())if(c==-)f=-1; for(;0<=c&&c<=9;c=getchar())tmp=(tmp<<3)+(tmp<<1)+c-0; return tmp*f;} inline ll power(ll a,ll b){ll ans=1; for(;b;b>>=1){if(b&1)ans=ans*a%mod; a=a*a%mod;} return ans;} inline ll gcd(ll a,ll b){
return b?gcd(b,a%b):a;} inline void swap(int &a,int &b){int tmp=a; a=b; b=tmp;} using namespace std; int vis[maxn]; int a[maxn]; int n,m; int main() { n=read(); m=read(); int now=1; for(int i=1;;i++){ while(vis[now])++now; if(now>n||now>m)break; vis[now]=1; vis[now+i]=1; a[now+i]=now; a[now]=now+i; } int t=read(); while(t--){ int n=read(),m=read(); if(a[n]==m)printf("Farmer John\n"); else printf("Bessie\n"); } }
bzoj3298

【bzoj3298】[USACO 2011Open]cow checkers