BZOJ4973 位元戰爭

2021-08-29 10:20:07 字數 1290 閱讀 6431

time limit: 3 sec  memory limit: 256 mb

submit: 122  solved: 76

在位元世界,a國正與b國爆發著戰爭!b國有n個城市,編號依次為1到n。這些城市之間通過m條雙向道路連線,其

中第i條道路連線著u_i,v_i這兩個城市。任意兩個城市之間可能有多條道路,也有可能從1號點出發不能到達所有

城市。對於第i個城市,占領這座城市則需要在這裡聚集a_i個特種兵,而在這裡空降1個特種兵的代價為b_i。對於

第i條道路,占領這條道路需要在道路兩端點的城市累計聚集c_i個特種兵,即:假如一條邊連線著1號和2號城市,

而c=9,那麼你可以在1號城市聚集3個特種兵,在2號城市聚集6個特種兵。a國的目標是占領b國所有的城市(不需

要占領所有道路),對於占領過的城市和道路,即使從這裡撤兵,它也將永遠屬於a國,a國不需要派兵一直駐守。

請寫乙個程式,幫助a國以最小的總代價占領b國所有的城市。

第一行包含兩個正整數n,m(1<=n<=100000,0<=m<=200000),表示城市數和道路數。

接下來n行,每行兩個正整數a_i,b_i(1<=a_i,b_i<=10000),分別表示每個城市的相關引數。

接下來m行,每行三個正整數u_i,v_i,c_i(1<=u_i,v_i<=n,u_i!=v_i,1<=c_i<=10000)

分別表示每條雙向道路的相關引數。

輸出一行乙個整數,即占領b國所有城市的最小總代價。

3 210 5

20 10

10 3

1 2 22

2 3 200

解析:見noip模擬。

**:

#include using namespace std;

const int max=100010;

int n,m;

long long ans=1e18,sum,f[max];

int fa[max],num[max],mn[max],mx[max],u[max],v[max],s[max];

struct shuedge[max<<1];

inline int get_int()

inline int min(int a,int b)

inline int max(int a,int b)

inline bool comp(const shu &a,const shu &b)

inline int get(int v)

signed main()

cout

}

bzoj 3993 星際戰爭

題目大意 x軍 和y軍 正在激烈地作戰 在戰鬥的某一階段,y軍 一共 遣了n個巨型機械人進攻x軍 的陣地,其中第i個巨型機械人的裝甲值為ai 當乙個巨型機械人的裝甲值減少到0或者以下時,這個巨型機械人就被摧毀了 x軍 有m個雷射 其中第i個雷射 每秒可以削減乙個巨型機械人bi的裝甲值 雷射 的攻擊是...

BZOJ3993 星際戰爭 最大流

顯然這是乙個二分圖。我們假設在k時間內能夠摧毀所有機械人,那麼第i個雷射 總共能夠削弱k bi的裝甲值。也就是說,k bi ai 那麼構建一張網路流的圖,s向雷射 連邊,容量為k bi,雷射 向對應的機械人連邊,容量為inf,機械人向t連邊容量為ai 決策滿足單調性,二分最短時間k 最後判斷是否滿流...

bzoj3993 SDOI2015 星際戰爭

3333年,在銀河系的某星球上,x軍團和y軍團正在激烈地作戰。在戰鬥的某一階段,y軍團一共派遣了n個巨型機械人進攻x軍團的陣地,其中第i個巨型機械人的裝甲值為ai。當乙個巨型機械人的裝甲值減少到0或者以下時,這個巨型機械人就被摧毀了。x軍團有m個雷射 其中第i個雷射 每秒可以削減乙個巨型機械人bi的...