BZOJ2828 火柴遊戲

2021-09-07 09:27:30 字數 684 閱讀 4761

設$f[i][j][k]$表示考慮了前$i$個數字,增加了$j$根火柴,刪掉了$k$根火柴是否可能,用bitset加速dp。

然後設$g[i][j]$表示增加了$i$根火柴,刪掉了$j$根火柴的最小代價,列舉移動次數進行更新。

決策滿足單調性,故可以分治求解。

設$m=14n$,則時間複雜度為$o(\frac+m^2\log m)$。

#include#includeusing namespace std;

const int n=205,m=2810,inf=~0u>>1;

int n,m,p1,q1,p2,q2,p3,q3,i,j,k,o,w1[m],w2[m],w3[m],g[m],ans=inf;

int s[10]=,dx[10][10],dy[10][10];

char a[n],b[n];

bitsetf[2][m];

inline void up(int&a,int b)

void solve(int l,int r,int dl,int dr)

int main()

f[0][0][0]=1;

for(i=o=1;i<=n;i++,o^=1)

for(i=0;i<=m;i++)

return printf("%d",ans),0;

}

取火柴遊戲

玩完幾把遊戲後。突然想起了乙個比較老的遊戲 取火柴遊戲!遊戲規則簡單 不需要撿裝備,也沒有危險的空投。emm言歸正傳!有n根火柴,每人每次最多取4根火柴,最少取一根火柴。如果某人取到最後一根火柴,那麼恭喜你,輸了!emmm上 void quhuochai last last user if last...

拿火柴遊戲

桌子上有一堆火柴,遊戲開始時共有n根火柴,兩個玩家輪流拿走1 2 3 4根火柴 選擇一種方案拿 拿走最後一根火柴的玩家為獲勝方。請問先走的玩家設計乙個制勝的策略 如果該策略存在 若桌子上只有只有1 4根火柴,那麼先手必贏 若桌子上只有5根火柴,那麼無論先手拿幾根都必輸 也就是意味著先手若要贏,那麼快...

取火柴遊戲

include include include using namespace std float num1 0 float num2 0 struct treenode class tree float chance treenode ptr void run tree tree1 protect...