這道題感覺思路非常巧妙, 我是看了別人的部落格才想明白的。
這裡用到了並查集, 以根節點為中心城市, 然後把邊從大到小排序, 每次的當前的邊即為容量,
因為是目前的最小值, 然後去算總的容量, 每次選容量大的點作為新的根節點, 也就是新的
中心城市。細節見**。
#include#include#define rep(i, a, b) for(int i = (a); i < (b); i++)
using namespace std;
typedef long long ll;
const int maxn = 212345;
struct node
}edge[maxn];
ll sum[maxn], cnt[maxn];
int f[maxn], n;
int find(int x)
int main()
printf("%lld\n", ans); }
return 0;
}
紫書 習題 9 8 uva1632
題意 有n個寶藏,每個都在乙個位置p i 在規定的時間t i 就會消失。阿里巴巴要在寶藏消失前收集齊所有寶藏,問 有方法嗎?有的話最少多少秒?思路 開始想的是用狀態轉移方程來乙個個判斷,不好寫。看了題解知道在一段區間 l,r 要使時間最短必須從端點出來,然後果斷寫了乙個記憶化搜尋,tle了。再看題解...
紫書 習題 9 8 uva 10163
解題感想 好久沒刷題了,自己連揹包dp都差不多忘了。題目看著很複雜,可以將問題分解來看,和高中數學題的感覺一樣 1.求任意一組組合的最小的保護值 的最大值 2.求在改最大組合的情況下的,求最小的工資和,和某圖論一樣的思路。解題思路 第乙個揹包 任意組合 抽象成模板 在n個應聘者中選x人使得看守m個倉...
紫書 習題8 12 UVa 1153(貪心)
本來以為這道題是考不相交區間,結果還專門複習了一遍前面寫的,然後發現這道題的區間是不是 固定的,是在乙個範圍內 滑動的 只要右端點不超過截止時間就ok。然後我就先考慮有包含關係的時候怎麼選,然後發現當兩個區間只能放乙個的時候時間更短而截 至時間更長的時候,顯然更優。然後我就試著每個區間放的時候後後面...