AHOI2014 JSOI2014 支線劇情

2022-05-09 10:36:09 字數 1459 閱讀 3980

嘟嘟嘟

這是一道上下界費用流的模板題。

源點就是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 如果用後面那一項來...