HDU 3529 舞蹈鏈之可重複覆蓋

2022-04-07 12:56:59 字數 1054 閱讀 9752

點選開啟鏈結

題意:在點的地方放炸彈,炸彈可以炸到的地方無限遠並且是十字的形式,但是如果炸到#或者*則這個方向停下來,問最少需要多少炸彈同時引爆才可以將所有#炸掉

思路:一道模版舞蹈鏈了,對於建圖我們將所有的#看做列,然後所有的點也就是放炸彈的地方看做行,然後找一下每個點可以炸的#就可以了,建圖後跑個舞蹈鏈可重複的模版就可以了

#include

#include

#include

#include

#include

#include

using namespace std;

typedef long long ll;

typedef unsigned long long ull;

const int inf=0x3f3f3f3f;

const ll inf=0x3f3f3f3f3f3f3f3fll;

const int maxn=230;

int l[maxn*maxn],r[maxn*maxn],u[maxn*maxn],d[maxn*maxn];//節點的上下左右四個方向的鍊錶

int c[maxn*maxn],h[maxn],cnt[maxn],vis[maxn];//c列h行cnt列煉表中元素個數

int n,m,id,fans;

void init(int lll)

r[lll]=0;id=lll+1;

memset(h,-1,sizeof(h));

}void link(int r,int c)

id++;

}void remove(int size)

void resume(int size)

int h()

}return sum;

}void dance(int k)

}char str[20][20];

int a[20][20];

int main()ii--;

}ii=i;jj=j;

while(ii1)jj--;

}ii=i;jj=j;

while(jj

hdu1285 hdu4857 拓撲排序

一 原題內容 problem description 有n個比賽隊 1 n 500 編號依次為1,2,3,n進行比賽,比賽結束後,裁判委員會要將所有參賽隊伍從前往後依次排名,但現在裁判委員會不能直接獲得每個隊的比賽成績,只知道每場比賽的結果,即p1贏p2,用p1,p2表示,排名時p1在p2之前。現在...

樹狀陣列 hdu2689 hdu2838

題意 給定乙個正整數n,和乙個1 n的乙個排列,每個數可以和旁邊的兩個數的任意乙個交換,每交換一次總次數就要加一,問將這個排列轉換成乙個遞增的排列需要多少次交換?題意可以轉換成求這個排列的逆序對數。include include include include using namespace std...

hdu2068 hdu 2049 錯排組合

這部分涉及的知識為組合數和錯排 參考 比較簡單 hdu2068 include include int64 c int n,int m 組合數公式 return u d main sum for i 3 i 13 i f i i 1 f i 1 f i 2 while scanf d n n 另一題...