時間限制:c/c++ 1秒,其他語言2秒
空間限制:c/c++ 131072k,其他語言262144k
64bit io format: %lld
多組資料,資料第一行t表示資料組數。每組資料第一行乙個n,k表示一共有n堆石子,接下來你試圖從第k堆開始取,從第二行開始,每隔乙個空格乙個第i堆石子的數量ai。
n≤105, ai≤109
輸出「yes」或「no」代表從該堆開始取是否可以必勝(如果足夠聰明)。示例1
23 21 2 3
2 12 1
noyes
小太陽哥哥說,如果想贏,就試圖把每堆石子數量的異或和變為0,最終便可以獲得勝利,不相信自己證一下。
小資料較多,不要使用memset,可能導致tle。ac**:
#includeusingnamespace
std;
int a[100005
];int
main()
int num=0
;
if((ans^a[k])++num;
if(num==0
) cout
<<"no"
cout
<<"
yes"
<}
return0;
}
今天也是元氣滿滿的一天!good luck!
慄醬的異或和
多組資料,資料第一行t表示資料組數。每組資料第一行乙個n,k表示一共有n堆石子,接下來你試圖從第k堆開始取,從第二行開始,每隔乙個空格乙個第i堆石子的數量ai。n 105,ai 109輸出 yes 或 no 代表從該堆開始取是否可以必勝 如果足夠聰明 示例1複製 2 3 21 2 3 2 12 1複...
牛客網 慄醬的異或和(博弈論)
博弈論初步。基本上算裸的nim問題。但注意必須從k堆開始取,之後就相當於乙個nim問題。經典博弈論問題,奇異局勢為所有的石子堆數量的異或和為0,在此局勢下先手必敗,反之,如果我們盡量給對手製造奇異局勢,則必勝。由於除了第k堆以外的拿取是自由的,我們先求出它們的異或和,如果這個異或和小於第k堆的數量,...
慄醬的數列
慄醬有乙個長度為n的數列a,乙個長度為m的數列b,現在詢問a中有多少個長度為m的連續子串行a 滿足 a 1 b1 k a 2 b2 k a m bm k。輸入描述 第一行乙個數t,表示有t組資料。對於每組資料,第一行三個整數,n,m,k。第一行輸入n個數,a1,a2,an,表示a數列中的數,第二行輸...