E - 邂逅明下 HDU - 2897-----------------------思维(巴什博弈变形)

    科技2024-08-13  29

    解析: 巴什博弈变形

    巴什博弈模板结论 : n%(m+1)==0 先手必败,后手必胜 证明: 1) n==m+1 先手随意取k个,那么后手一定能取到m+1-k 所以后手先取完 2) n=(m+1)*r+s 2-1) s=0 就是(1)的结论 2-2) s!=0 先手想要取胜的决策 先手取s个,剩余 (m+1)*r个 后手取k个,剩余 (m+1)*r-k个 先手取m+1-k个 ,剩余 (m+1)*r-k-m-1+k = (m+1)*(r-1)个 那么后手面对的局面就是 n%(m+1)==0 的 回到了(1)的结论 所以后手必败,先手必胜 对于本题相反的是,最少取p个,最多取q个,并且谁先取完谁就输了 一定得记住谁先取完谁就输了 1) n%(p+q)==0 先手必胜,后手必败 2) n=(p+q)*r+s (1<=s<=p) 后手必胜 先手取k个 剩 (p+q)*r+s-k 后手取p+q-k个 剩 (p+q)*(r-1)+s . . . 最终由后手取完(p+q)*r个,还剩s个轮到先手来取 因为 1<=s<=p 所以s会被一次取完 则先手取完所有数,先手必败,后手必胜 n=(p+q)*r+s (p<s<=q) 先手必胜 先手取t个 1<s-t<=p 剩 (p+q)*r+s-t 后手取k个 剩 (p+q)*r+s-t-k 先手取(p+q-k)个 剩 (p+q)*(r-1)+s-t。 . . . . . 最终由先手取完(p+q)*(r-1)个, 还剩s-t个 由于(1<s-t<=p) 所以后手一次性取完,那么先手就胜,后手就必败 #include<bits/stdc++.h> using namespace std; int n,p,q; int main() { while(~scanf("%d %d %d",&n,&p,&q)&&n&&p&&q) { if(n%(p+q)==0) puts("WIN"); else { int t=n%(p+q); if(t<=p) puts("LOST"); else puts("WIN"); } } }
    Processed: 0.012, SQL: 8