點選開啟鏈結
題意:在點的地方放炸彈,炸彈可以炸到的地方無限遠並且是十字的形式,但是如果炸到#或者*則這個方向停下來,問最少需要多少炸彈同時引爆才可以將所有#炸掉
思路:一道模版舞蹈鏈了,對於建圖我們將所有的#看做列,然後所有的點也就是放炸彈的地方看做行,然後找一下每個點可以炸的#就可以了,建圖後跑個舞蹈鏈可重複的模版就可以了
#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 另一題...