嘟嘟嘟
這是一道上下界費用流的模板題。
源點就是1,匯點沒有,所以我們把每乙個點都連向匯點,因為可以在任意乙個點退出遊戲。
上下界費用流的建圖方法和上下界網路流的建圖方法一樣。都是建立附加源匯。只不過每條邊多了個費用。
有費用的邊就是他自己的費用,其他的(比如補償用的邊)的費用全是0。然後我們跑費用流,答案就是費用流的答案加下界流量乘以對應的費用。
上下界費用流的特點是滿足流量限制下的最小(最大)費用。
而不是向普通費用流一樣必須滿流。
#include#include#include#include#include#include#include#include#include#includeusing namespace std;
#define enter puts("")
#define space putchar(' ')
#define mem(a, x) memset(a, x, sizeof(a))
#define in inline
typedef long long ll;
typedef double db;
const int inf = 0x3f3f3f3f;
const db eps = 1e-8;
const int maxn = 305;
const int maxe = 1e7 + 5;
inline ll read()
inline void write(ll x)
int n, s, t, s, t;
int d[maxn], sum = 0;
struct edge
e[maxe];
int head[maxn], ecnt = -1;
in void addedge(int x, int y, int w, int c)
; head[x] = ecnt;
e[++ecnt] = (edge);
head[y] = ecnt;
}bool in[maxn];
int dis[maxn], pre[maxn], flow[maxn];
in bool spfa()
} }
return dis[t] ^ inf;
}int mincost = 0;
in void update()
mincost += flow[t] * dis[t];
}in int mcmf()
in void add(int x, int y, int min, int max, int c)
in void build()
int main()
}build();
write(sum + mcmf()), enter;
return 0;
}
AHOI2014 JSOI2014 騎士遊戲
題目背景 長期的宅男生活中,jyy又挖掘出了一款rpg遊戲。在這個遊戲中jyy會 扮演乙個英勇的騎士,用他手中的長劍去殺死入侵村莊的怪獸。題目描述 在這個遊戲中,jyy一共有兩種攻擊方式,一種是普通攻擊,一種是法術攻擊。兩種攻擊方式都會消耗jyy一些體力。採用普通攻擊進攻怪獸並不能把怪獸徹底殺死,怪...
AHOI2014 JSOI2014 騎士遊戲
題目 思博貪心題寫了乙個半小時沒救了,我也沒看出這是乙個 spfa 來啊 設 dp i 表示徹底乾掉第 i 只怪物的最小花費,乙個非常顯然的事情,就是對於 k i 值最小的怪物滿足 dp i k i 非常好理解,反正到最後都要乾掉這個怪物,何必再把它乾成別的怪物 於是我們按照 k i 的值先排序一下...
AHOI2014 JSOI2014 騎士遊戲
傳送門 考慮 text 設 dp i 表示滅種 霧 乙隻編號為 i 的怪物的代價。那麼轉移顯然是 dp i min k i,s i sum dp 但是我們會發現這個東西是有後效性的。所以我們會想要用建圖然後跑乙個最短路什麼的來搞。於是我們觀察到上面那個 text 式子中,dp i 如果用後面那一項來...