Codeforces 1451F Nimm博弈變形

2021-10-10 23:11:52 字數 1010 閱讀 3555

題目給定乙個 n∗m

n*mn∗

m 大小的網格圖,每個格仔有乙個非負整數。

每個人從乙個非零格仔作為矩形的左上角,將該格仔的數減去乙個非零值,其餘矩形內的格仔的數值任意變化(可不變),兩人輪流操作,問先手後手贏?

當且僅當所有左斜對角線的異或值為 0

00 時,後手勝,否則先手贏。

簡單證明:當局面存在若干個左斜對角線的異或值不為0,則先手選擇其中最左上方的對角線,上的不為 0

00 的乙個格仔(要能減去乙個數使得該對角線異或值為 0

00)作為矩形左上角。

然後再選右下角 an,

ma_

an,m

​,此時把所有異或值不為 0

00 的對角線都包含進來了,任意改變網格的格仔值至所有左斜對角線異或值為 0

00 即可。

無論後手做什麼操作,先手都可以重複該操作直到全部網格為 0

00。(選擇矩形左上角可以視作,左斜對角線上的 nim

mnimm

nimm

博弈)

#include

#define endl '\n'

#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

using

namespace std;

typedef

long

long ll;

const ll maxn =

1e2+5;

// √n

int ans[maxn <<1]

;int

main()

bool flag =

false

;for

(int i =

2; i <= n + m; i++)}

cout <<

(flag ?

"ashish"

:"jeel"

)<< endl;

}}

codeforces 1194F 組合數學

傳送門 你有n個事件,你需要按照1 n的順序完成這些事件,每個事件需要 t i 的時間完成,你現在一共有t的時間去做這些事情,每做一件事情的時候,你有0.5的概率花費 t i 的時間完成他,也有0.5的概率花費 t i 1 的時間去完成他,如果在做這個事件的時候時間花完了,你就相當於沒有做成這個事件...

codeforces 1114F 線段樹練習

這是一道用線段樹維區間值的一道題,題意很簡單,就是對於給定的乙個序列,初始時每個數的值不大於300,然後有兩中操作,乙個是對區間 l,r 的每個數乘上以個數x,乙個是詢問區間的乘積的尤拉函式值,首先對於第乙個操作顯然可以用線段樹的延遲更新來完成,對於第二個操作,我最先沒考慮資料,就想著直接維護區間的...

Codeforces 985F 字串雜湊

題目鏈結 題意簡述 給定乙個長度為n n 2e5 的字串s 僅含有小寫字母 有m m 2e5 次查詢。每次查詢給三個數,x,y,len,求在s x s x len 1 和s y s y len 1 是否存在相應位置唯一對應關係。例如aba和brb,aaa和kkk,abs和ert是唯一對應。aab和a...