description
這是個劍與魔法的世界.英雄和魔物同在,動盪和安定並存.但總的來說,庫爾特王國是個安寧的國家,人民安居樂業,魔物也比較少.但是.總有一些魔物不時會進入城市附近,干擾人民的生活.就要有一些人出來守護居民們不被魔物侵害.魔法使艾公尺莉就是這樣的乙個人.她騎著她的坐騎,神龍公尺格拉一起消滅干擾人類生存的魔物,維護王國的安定.艾公尺莉希望能夠在損傷最小的前提下完成任務.每次戰鬥前,她都用時間停止魔法停住時間,然後公尺格拉他就可以發出火球燒死敵人.公尺格拉想知道,他如何以最快的速度消滅敵人,減輕艾公尺莉的負擔.
input
資料有多組,你要處理到eof為止.每組資料第一行有兩個數,n,m,(1<=n,m<=15)表示這次任務的地區範圍. 然後接下來有n行,每行m個整數,如為1表示該點有怪物,為0表示該點無怪物.然後接下一行有兩個整數,n1,m1 (n1<=n,m1<=m)分別表示公尺格拉一次能攻擊的行,列數(行列不能互換),假設公尺格拉一單位時間能發出乙個火球,所有怪物都可一擊必殺.
output
輸出一行,乙個整數,表示公尺格拉消滅所有魔物的最短時間.
sample input
4 4
1 0 0 1
0 1 1 0
0 1 1 0
1 0 0 1
2 24 4
0 0 0 0
0 1 1 0
0 1 1 0
0 0 0 0
2 2
sample output41
建圖,dlx重複覆蓋
#include#include#include#include#includeusing namespace std;
typedef long long ll;
const ll maxn = 25;
int n, m, x, y, mp[maxn][maxn], t1, t2;
inline void read(int &ret)
while (c < '0' || c > '9');
ret = c - '0';
while ((c = getchar()) >= '0' && c <= '9')
ret = ret * 10 + (c - '0');
}struct dlx
void reset(int n, int m, int x)
l[0] = m; r[m] = 0; sz = m + 1;
} void insert(int x, int y)
else
++cnt[y]; ++sz;
} //精確覆蓋
void remove(int now) }
void resume(int now)
r[l[now]] = now;
l[r[now]] = now;
} int dfs(int x)
resume(now);
return 0;
} //精確覆蓋
//重複覆蓋
void remove(int now) }
void resume(int now)
int vis[maxn];
int flag[maxn];
int a()
return dis;
} void dfs(int x)
}} //重複覆蓋
}dlx;
int main()
scanf("%d%d", &x, &y);
t1 = (n - x + 1)*(m - y + 1);
dlx.reset(t1, t2, 1);
t1 = 0;
for (int i = 1; i + x - 1 <= n; i++)
for (int j = 1; j + y - 1 <= m; j++)
dlx.dfs(0);
printf("%d\n", dlx.num);
} return 0;
}
1686 道路重建
時間限制 1 sec 記憶體限制 128 mb 提交 11 解決 7 提交 狀態 討論版 現在有一棵n個結點的樹 結點從1到n編號 請問至少要刪除幾條邊,才能得到乙個恰好有p個結點的子樹?第一行輸入兩個數n和p 1 n 150,1 p n 接下來輸入n 1行,每行兩個整數x y,表示x和y之間有一條...
FZU 單詞問題
給出乙個完整的句子,這個句子中不包含不可見字元或者空格,於是在這個句子中有許多不同的單詞。乙個單詞是指一串連續的最長的英文本母 大寫或小寫 例如 abc 中,abc 就是乙個單詞,而 ab bc 都不算單詞。輸入包含多組資料 輸入資料第一行是乙個句子,只包含可見字元 不包含空格 句子長度不超過 10...
fzu 單詞問題
description 給出乙個完整的句子,這個句子中不包含不可見字元或者空格,於是在這個句子中有許多不同的單詞。乙個單詞是指一串連續的最長的英文本母 大寫或小寫 例如 abc 中,abc 就是乙個單詞,而 ab bc 都不算單詞。input 輸入包含多組資料 輸入資料第一行是乙個句子,只包含可見字...