題目鏈結:
題意:兩人博弈,給出兩個數a和b,較大數減去較小數的任意倍數,結果不能小於0,將兩個數任意乙個數減到0的為勝者。
題解:
假設a大於b,
若 a=b,當前玩家勝利。
若 a%b=0,當前玩家勝利。
若 a>2*b,當前玩家能決定是讓自己取(b,a%b)還是讓對手取(b,a%b),當然,按照最優策略,此時他一定是知道(b,a%b)這個狀態是可以讓自己必勝還是必敗。如果是必敗態,當前玩家將(a,b)變成(a%b,b),那麼肯定贏。如果是必勝態,當前玩家將(a,b)變成(a%b+b,b),那麼對手只有將這兩個數變成(a%b,b),必勝態又回到了自己手裡。
若 b#includeusing namespace std;
int main()
if(stan) printf("stan wins\n");
else printf("ollie wins\n");
}return 0;
}
Hdu 1525 歐幾里得博弈
兩堆石子每次可以在大堆中取小堆的倍數個石子 第乙個拿光某個堆的玩家贏 假設a b 必勝狀態 a b 0或a b 2 因為當a b 2時 當前玩家可以選擇將狀態轉移至 a b b或a b 同時a b b可轉移至a b 則這兩個狀態中必有乙個為必勝態 includeusing namespace std...
通俗易懂的C STL
泛型程式設計 generic programming 是一種語言機制,通過它可以實現乙個標準的容器庫。像類一樣,泛型也是一種抽象資料型別,但是泛型不屬於物件導向,它是物件導向的補充和發展。泛型程式設計在c 上的應用主要體現在兩方面 函式模板和類模板。接下來舉個栗子 csdn部落格 anyway,模板...
通俗易懂的CRC校驗
1.crc校驗原理 crc校驗原理看起來比較複雜,好難懂,因為大多數書上基本上是以二進位制的多項式形式來說明的。其實很簡單的問題,其根本思想就是先在要傳送的幀後面附加乙個數 這個就是用來校驗的校驗碼,但要注意,這裡的數也是二進位制序列的,下同 生成乙個新幀傳送給接收端。當然,這個附加的數不是隨意的,...