乙個矩形,每個格點初始時是黑或白。
兩方輪流操作,每次將乙個白格點染黑,如果因為這次操作每將乙個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...