題目鏈結
大意是說,調整k條特殊邊邊的值,並在原圖的基礎上構建最小生成樹。使得經過所有特殊邊的值之和最大。
感謝das***學長指出題目要素(加上新邊,兩點之間最多只有一條邊),請各位在理解下文解法時特別注意,如果沒有這一要求是不能設計如下演算法的。在此安利一下hgeek首席程式設計師的部落格。
大致解法:
先縮點。可以知道,對答案有貢獻的只有k條新邊。先將k條邊進行最小生成樹,再構建一棵完成的最小生成樹。
除去那些新邊會產生k+1個連通塊,而這連通塊中的邊的連線方法對答案是沒有貢獻的,起到主要貢獻的是連線這些連通塊的新邊。當然也會有k條原邊可以替代它們。
先進行暴力列舉k條邊的選或者不選,總共2k
2
k種狀態。用選定的新邊將連通塊相連,不足的部分用原邊代替。那麼在這棵樹中主要是求到每個點的人數和所有新邊的最大值。每點人數用樹上字首和即可;求新邊最值需要借用kruskal的思想,即在樹上從u到v的路徑中的所有邊權必須小於等於新加進的邊,不然就可以用新邊代替之,如此約束每條新邊的值即可。
code:
#include
typedef
long
long ll;
const
int inf=1
<<30;
using
namespace
std;
ll ans;
int n,m,k,top,cnt,st;
int fa[100005],fa2[100005],p[100005];
struct edgegee[300005],ne[25],q[300005];
struct dataedge[50];
int ag[25],dep[100005],head[100005],mn[100005];
ll val[100005],sum[100005];
bool mark[300005];
void insert(int u,int v)
;head[u]=cnt;
edge[++cnt]=(data);head[v]=cnt;
}int find(int x)
int find2(int x)
bool
operator
<(edgege a,edgege b)
}void solve()
for(int i=1;i<=k;i++)
if(mark[i])
//將新邊加入mst
for(int i=1;i<=k;i++)
//構建完整的mst
dp(st);//樹上字首和(人數)
for(int i=1;i<=k;i++)
}//退化版lca
ll res=0;
for(int i=1;i<=k;i++)
if(mark[i])
ans=max(res,ans);
}void dfs(int x)
mark[x]=0;dfs(x+1);
mark[x]=1;dfs(x+1);
}int main()
}//這裡find合併成了一棵樹
//find2是k+1塊
st=find2(1);//初始1所在集合
for(int i=1;i<=n;i++)
for(int i=1;i<=k;i++)
ne[i].u=find2(ne[i].u),ne[i].v=find2(ne[i].v);
for(int i=1;i<=m;i++)
e[i].u=find2(e[i].u),e[i].v=find2(e[i].v);
//重構邊,負責連塊
for(int i=1;i<=m;i++)
for(int i=1;i<=m;i++)
if(mark[i])q[++top]=e[i];//取那些有用的邊
memset(mark,0,sizeof(mark));
dfs(1);
printf("%lld\n",ans);
return
0;}
APIO2013 道路費用
給定一張無向連通圖,存在邊權 c c 與點權a role presentation aa。加入kk 條特殊邊,構造出這些邊的邊權使得存在一棵最小生成樹使得所有點到 1 role presentation 1 1號點的距離 只考慮特殊邊的長度 乘以該點點權的乘積最大。n 1000000,m 30000...
bzoj3206 Apio2013 道路費用
第一行包含三個由空格隔開的整數n,m和k。接下來的 m行描述最開始的m 條道路 這m行中的第i行包含由空格隔開的整數ai,bi和c i,表示有一條在a i和b i之間,費用為c i的雙向道路。接下 來的k行描述新建的k條道路。這 k行中的第i行包含由空格隔開的整數 xi和yi,表示有一條連線城鎮xi...
C 心路歷程30 APIO2013 道路費用
問題描述 皮特現在是c國最富有的人。c國共有n個城市 用1 n 編號 現在這些城市由m條雙向道路連線,其中城市1為首都。保證乙個人從城市1出發,經過這些道路可以到達其他的任何乙個城市。當然,所有的這些道路都是要收費的,使用道路i需要向該道路的所有者支付ci的費用。已知所有的ci互不相同。最近c國計畫...