慄醬的異或和

2021-08-22 19:34:11 字數 690 閱讀 9125

多組資料,資料第一行t表示資料組數。

每組資料第一行乙個n,k表示一共有n堆石子,接下來你試圖從第k堆開始取,從第二行開始,每隔乙個空格乙個第i堆石子的數量ai。

n≤105,  ai≤109

輸出「yes」或「no」代表從該堆開始取是否可以必勝(如果足夠聰明)。

示例1複製

2

3 21 2 3

2 12 1

複製

no

yes

小太陽哥哥說,如果想贏,就試圖把每堆石子數量的異或和變為0,最終便可以獲得勝利,不相信自己證一下。
小資料較多,不要使用memset,可能導致tle。
#include #include #include using namespace std ;

const int max = 100000 + 10 ;

typedef long long ll ;

ll a[max] ;

int main()

if(a[k]>ans)/*如果第k堆的石子大於其餘石子的異或和,那麼只需拿走多的那部分,使剩餘的所有堆的石子異或和為0,則先手必贏*/

cout<<"yes"

cout<<"no"<}

return 0 ;

}

慄醬的異或和

時間限制 c c 1秒,其他語言2秒 空間限制 c c 131072k,其他語言262144k 64bit io format lld 多組資料,資料第一行t表示資料組數。每組資料第一行乙個n,k表示一共有n堆石子,接下來你試圖從第k堆開始取,從第二行開始,每隔乙個空格乙個第i堆石子的數量ai。n ...

牛客網 慄醬的異或和(博弈論)

博弈論初步。基本上算裸的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數列中的數,第二行輸...