題目描述
小a也聽說了取石子這個遊戲,也決定和小b一起來玩這個遊戲。總共有n堆石子,雙方輪流取石子,每次都可以從任意一堆中取走任意數量的石子,但是不可以不取。規定誰先取完所有的石子就獲勝。但是小a實在是太想贏了,所以在遊戲開始之前,小a有一次機會,可以趁小b不注意的時候選擇其中一堆石子拿走其中的k個,當然小a也可以選擇不拿石子。小a先手。雙方都會選擇最優的策略,請問在這樣的情況下小a有沒有必勝的策略,如果有輸出yes,否則就輸出no。
輸入描述:
一行兩個整數n,k,表示分別有n堆石子以及小a可以拿走的石子個數k。
接下來n個整數表示每一堆的石子個數ai
輸出描述:
一行乙個結果表示小a是否有必勝策略,如果有則輸出yes,否則輸出no。
示例1輸入
複製3 2
1 1 1
輸出複製
yes備註:
1≤n≤1e5,1≤ai≤1e5,0≤k≤1e5
思路:尼姆博弈,取石子問題,參考部落格:尼姆博弈之 poj-2975-nim
//#include
#include
#include
#include
#include
#include
#include
#include
using namespace std ;
typedef
long
long ll;
#define maxn 100005
#define inf 0x3f3f3f3f
#define mall (endtree *)malloc(sizeof(endtree));
int a[maxn]
;int
main()
if(ans)
cout <<
"yes"
<<
'\n'
;else}if
(flag)
cout <<
"no"
<<
'\n';}
return0;
}
其實啊,,讓我費解的是,,,為什麼下面的**也可以ac?!(是不是樣例太™水了。。。。)
//#include
#include
#include
#include
#include
#include
#include
#include
using namespace std ;
typedef
long
long ll;
#define maxn 100005
#define inf 0x3f3f3f3f
#define mall (endtree *)malloc(sizeof(endtree));
int a[maxn]
;int
main()
if(ans)
cout <<
"yes"
<<
'\n'
;else
cout <<
"no"
<<
'\n'
;() return0;
}
牛客小白月賽13 補題(ACDG)
a 通過已經給的 打表找規律,偶數輸出 1,奇數輸出1 includeusing namespace std int main void huaj ll a,ll b int main qianz 0 0 houz n 1 0 qianz 1 mp 1 houz n mp n for i 2 i n...
I 排名 牛客小白月賽3
題目描述 cwbc和xhrlyb都參加了sdoi2018,他們特別關心自己的排名。我們定義每一場比賽每位選手的標準分為它的分數乘以滿分再除以比賽中選手所獲得的最高分。noip2017的滿分為600分,sdoi2018每一天的比賽滿分均為300分。我們定義總分為noip2017的標準分的25 加上sd...
牛客小白月賽13題解(更新中。。)
小白月賽太真實了 連小白都算不上 先放上會的,不會的乙個乙個補,後面會一直更新 發現了好多不會的演算法,在解決這個題的同時也會更新的文章來系統的學習那一方面 還是放個鏈結吧 傳送門 a.這是真簽到了,直接交 是不行的,打個表就能發現規律 偶數輸出 1,奇數輸出1 後面想了想這應該算乙個數學公式吧,你...