bzoj2669 cqoi2012 區域性極小值

2022-05-21 13:21:16 字數 1020 閱讀 6749

(題目鏈結)

給出乙個$n*m$的整數矩陣,其中$[1,nm]$中的整數每個出現一次,有一些位置為區域性最小值。問方案數。

好神的dp啊。

$cnt_j$表示的是,在區域性最小值被填充的狀態為$j$的情況下,目前有多少個位置可以填,這些位置中包括已經被填了數的位置。

最後加模再取模

// bzoj2669

#include#include#include#include#include#include#define ll long long

#define inf (1ll<<30)

#define mod 12345678

#define pi acos(-1.0)

#define free(a) freopen(a".in","r",stdin),freopen(a".out","w",stdout);

using namespace std;

int xx[9]=;

int yy[9]=;

int f[30][1000],cnt[1000],fil[10][10],bin[30],ans,n,m;

pairt[10];

char s[10][10];

int dp()

} f[0][0]=1;

for (int i=1;i<=n*m;i++)

for (int j=0;jreturn f[n*m][bin[top]-1];

}void dfs(int x,int y,int c)

if (y==m) dfs(x+1,1,c);

else dfs(x,y+1,c);

int k;

for (k=0;k<9;k++) if (s[x+xx[k]][y+yy[k]]=='x') break;

if (k==9)

}int main()

dfs(1,1,0);

printf("%d\n",(ans+mod)%mod);

return 0;

}

bzoj2669 CQOI2012 區域性極小值

洛谷bzoj 這道題的方法是用dfs進行搜尋容斥時,dp統計答案 感覺痛苦的同學建議做做 乙個區域性最小值就可以覆蓋最少四個點 放在四個角上 最多九個 放在中間 所以最多隻會有8個區域性最小值,可以考慮一下狀壓 我們可以考慮從小到大地放入每個元素 dp i j 表示在選擇的區域性最小值狀態為j時,已...

bzoj 2669 區域性極小值

bzoj 2669 區域性極小值 有乙個n行m列的整數矩陣,其中1到nm之間的每個整數恰好出現一次。如果乙個格仔比所有相鄰格仔 相鄰是指有公共邊或公共頂點 都小,我們說這個格仔是區域性極小值。給出所有區域性極小值的位置,你的任務是判斷有多少個可能的矩陣。有乙個和dp求n的排列中有k個逆序對的方案數一...

BZOJ2669 區域性極小值

題目 有乙個n行m列的整數矩陣,其中1到nm之間的每個整數恰好出現一次。如果乙個格仔比所有相鄰格仔 相鄰是指有公共邊或公共頂點 都小,我們說這個格仔是區域性極小值。給出所有區域性極小值的位置,你的任務是判斷有多少個可能的矩陣。思路看到資料範圍馬上想到狀壓dp。先分析狀態數,會發現區域性極小值在一張圖...