GDKOI2016 染色大戰

2021-07-10 05:46:13 字數 870 閱讀 5093

乙個矩形,每個格點初始時是黑或白。

兩方輪流操作,每次將乙個白格點染黑,如果因為這次操作每將乙個1*1正方形的四個格點都變黑可以獲得該正方形的權值,一次操作使得獲得權值不為0那麼可以繼續操作。

求兩者採用最優策略下先手得到的分數與後手得到的分數的差。

列個狀壓dp然後就是模擬題意,注意使用位運算優化常數。

#include

#include

#include

#define fo(i,a,b) for(i=a;i<=b;i++)

using namespace std;

struct dong;

int i,j,k,l,t,n,m,tot;

int two[25];

int id[25][25];

dong pic[25];

dong f[2][1

<<21];

int w[25];

bool bz[2][1

<<21];

void dfs(int

x,int

y) else

}else

else}}

f[x][y].a=j;

f[x][y].b=k;

}int main()

}fo(i,1,n-1)

fo(j,1,m-1)

scanf("%d",&w[id[i][j]]);

dfs(0,t);

printf("%d\n",f[0][t].a-f[0][t].b);

//fclose(stdin);fclose(stdout);

return

0;}

GDKOI2016 Day2 T1 染色大戰

給出乙個n m的格點圖,每個點有黑色和白色兩種狀態。有a,b兩個人輪流操作,a先手。每一次操作可以把乙個白點染成黑點。若這次染色產生了新的簡單黑色正方形 即最小的正方形,四個頂點都為黑色 則獲得其得分,並獎勵多一次染色。求兩人都在最優策略的情況下,a的得分 b的得分的值。簡單博弈。只要會博弈就會做。...

GDKOI2016賽後總結 比賽做題策略

今年的gdkoi一如既往的考的不好,一開始以為能比上一年好一點,但也沒好多少,想到的題居然沒有想出來。先瀏覽了一遍題目。第 一 第二題都有想法,但還沒有確定的解法,靜下心來思考了一下,發現第一題用線段樹維護幾個值就可以做到合併兩個區間,考慮到怕寫不完程式,就先開始打第一題,想第一題打完了再思考第二題...

GDKOI2016 小學生數學題

給定n,k,p 求 ni 1 1i modpk 若答案不存在則輸出 1n pk 10 18 p 105 p 為質數這道題的確是道不錯的數學題。設f n,k ni 1 1i modpk 那麼我們將1,2,n 分為兩類 1.p 的倍數,設為集合 s2.其他,設為集合t 那麼很顯然,集合 t中的數都與pk...