LightOj1296Again Stone Game(手推SG函式)
題意
把Nimm遊戲的任意改成每次取的數量不超過當前的一半。
題解
暴力遞推SG函式的話複雜度是 O ( n m 2 ) O(nm^2) O(nm2),n是堆數,m是堆的大小。稍微思考(實際上我是打表找規律發現的)可以發現,狀態k和狀態2k+1擁有相同的SG值,而偶數的SG值是它除以2。所以對於一個奇數,把他減1在除以2,一直到變為偶數,SG值就是這個偶數除以2。注意開始的幾項不太一樣,要特判。
AC程式碼
#include <bits/stdc++.h>
using namespace std;
int n;
int main()
{
int t;scanf("%d",&t);
for(int z=1;z<=t;z++){
scanf("%d",&n);
int ans=0;
for(int i=1;i<=n;i++){
int x;scanf("%d",&x);
int res=0;
while(x%2==1){
x=(x-1)/2;
if(x==1){
res=1;break;
}
}
if(x==2){
res=0;
}
else res=x/2;
ans^=res;
}
printf("Case %d: ",z);
if(ans!=0){
printf("Alice\n");
}
else printf("Bob\n");
}
return 0;
}
相關文章
- HDU 1729 Stone GameGAM
- 【Leetcode】1690. Stone Game VIILeetCodeGAM
- NIM遊戲/SG函式遊戲函式
- HDU 1848 Fibonacci again and again(SG函式)AI函式
- 博弈論基礎之sg函式與nim函式
- ECNU OJ 3354 領外賣(博弈-SG函式)函式
- HDU 1848 Fibonacci again and again (尼姆博弈+sg函式)AI函式
- HDU 5795 A Simple Nim (SG函式+打表找規律)函式
- 【博弈論】組合遊戲及SG函式淺析遊戲函式
- 兩個需要求 sg 函式的樹上博弈問題函式
- 生成器 推導式 內建函式函式
- oracle函式手冊(轉)Oracle函式
- 函式文件或者手冊函式
- 手撕字串操作函式字串函式
- 三角函式公式推導函式公式
- 實現call函式,手寫Function.prototype.call函式函式Function
- day10-內建函式和推導式函式
- 迴圈_推導式_繪製棋盤_函式函式
- The Mark by Stone and Flower Made
- ORACLE分析函式手冊(轉)Oracle函式
- 手寫JavaScript常用的函式JavaScript函式
- 手寫CommonJS 中的 require函式JSUI函式
- ORACLE分析函式手冊二(轉)Oracle函式
- 手寫一個bind函式(大概)函式
- 手撕記憶體操作函式記憶體函式
- 三大分佈密度函式推導函式
- [手寫系列] Spirit帶你實現防抖函式和節流函式函式
- 遞迴匿名函式手動實現 http_build_query 系統函式遞迴函式HTTPUI
- 【Leetcode】1046. Last Stone WeightLeetCodeAST
- MySQL函式大全(字串函式,數學函式,日期函式,系統級函式,聚合函式)MySql函式字串
- 手寫JS函式的call、apply、bindJS函式APP
- C++模板函式實現型別推導C++函式型別
- python中id()函式、zip()函式、map()函式、lamda函式Python函式
- Python 擴充之特殊函式(lambda 函式,map 函式,filter 函式,reduce 函式)Python函式Filter
- JS-非同步函式鏈式呼叫2(精簡版,推薦)JS非同步函式
- 推薦一個js常用工具函式庫JS函式
- 十個推薦使用的 Laravel 的輔助函式Laravel函式
- Python推導式(列表推導式、元組推導式、字典推導式和集合推導式)Python