https://vjudge.net/problem/UVA-1151

题意,给出N个点以及二维坐标,可以在任意两点间建立通路,代价是两点欧几里得距离的平方,同时有q个套餐,套餐x有qx个点,代价是qw,

花费qw就能将这qx个点全部相联通,套餐可以任意选择几种或不选,求将所有的点联通所要的最小代价。

很容易想到一个暴力做法,遍历2^q种套餐方案,将这些点提前加入后再跑kruskal,这样的复杂度有些高了。

其实简单证明一下,我们可以先不买套餐跑一遍kruskal,之后保存下来所选的边。

遍历所有q集合时发现,对于之前没有选到的边,现在加入了几条免费边之后,更不会选到(因为仅凭之前选的边就足以使得这条边无贡献),因为这条边加入后没有贡献,不会因为买套餐而变得有贡献,我们可以提前除去这些边,然后数据就很小了。

 #include<bits/stdc++.h>
using namespace std;
int f[];
int getf(int v){return f[v]==v?v:f[v]=getf(f[v]);}
struct Edge
{
int u,v,w;
bool operator<(const Edge& x)const{
return w<x.w;
}
}e1[],e2[];
int x[],y[],cost[];
int main()
{
int T,N,Q,n,m,xx,i,s,j,k;
//freopen("in.txt","r",stdin);
cin>>T;
while(T--){vector<int> G[];
int m1=,m2=;
cin>>N>>Q;
for(i=;i<Q;++i){
cin>>n>>cost[i];
while(n--){
cin>>xx;
G[i].push_back(xx);
}
}
for(i=;i<=N;++i)
{
cin>>x[i]>>y[i];
for(j=;j<i;++j)
{
e1[m1].u=i;
e1[m1].v=j;
e1[m1++].w=(x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]);
}
}
for(i=;i<=N;++i) f[i]=i;
sort(e1,e1+m1);
int ans=;
s=;
for(i=;s<N-&&i<m1;++i)
{
int fu=getf(e1[i].u),fv=getf(e1[i].v);
if(fv!=fu){
e2[m2++]=e1[i];
s++;
f[fv]=fu;
ans+=e1[i].w;
}
}
for(i=;i<(<<Q)-;++i)
{
for(j=;j<=N;++j) f[j]=j;
int sum=; s=;
for(j=;j<Q;++j)
{
if(i&(<<j)){
sum+=cost[j];
for(int k=;k<G[j].size()-;++k){
int fu=getf(G[j][k]),fv=getf(G[j][k+]);
if(fu!=fv){
f[fv]=fu;
s++;
}
}
}
}
for(j=;j<m2&&s<N-;j++)
{
int fu=getf(e2[j].u),fv=getf(e2[j].v);
if(fu!=fv){
s++;
f[fv]=fu;
sum+=e2[j].w;
}
}
ans=min(ans,sum);
}
cout<<ans<<endl;
if(T) cout<<endl; }
return ;
}

uva 1511 最小生成树的更多相关文章

  1. uva 1151最小生成树

    先求一次最小生成树,可以排除n*(n*1)/2-(n-1)条边,每次利用二进制法枚举套餐的选择,套餐中的点直接处理,如果两个套餐有公共点直接合并,他们一定连通,然后枚举第一步最小生成树得到的n-1条边 ...

  2. UVA - 11354Bond最小生成树,LCA寻找近期公共祖先

    看懂题目意思.他的意思是求将全部的城市走一遍,危急度最小.而且给 你两个s,t后让你求在走的时候,从s到t过程中危急度最大的值,并输出它, 然后就是怎样攻克了,这个题目能够说简单,也能够说难 通过思考 ...

  3. UVa 1395 (最小生成树) Slim Span

    题意: 规定一棵生成树的苗条度为:最大权值与最小权值之差.给出一个n个顶点m条边的图,求苗条度最小的生成树. 分析: 按照边的权值排序,枚举边集的连续区间[L, R]的左边界L,如果这些区间刚好满足一 ...

  4. D5 LCA 最近公共祖先

    第一题: POJ 1330 Nearest Common Ancestors POJ 1330 这个题可不是以1为根节点,不看题就会一直wa呀: 加一个找根节点的措施: #include<alg ...

  5. Root :: AOAPC I: Beginning Algorithm Contests (Rujia Liu) Volume 7. Graph Algorithms and Implementation Techniques

    uva 10803 计算从任何一个点到图中的另一个点经历的途中必须每隔10千米 都必须有一个点然后就这样 floy 及解决了 ************************************* ...

  6. 【UVA 10307 Killing Aliens in Borg Maze】最小生成树, kruscal, bfs

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=20846 POJ 3026是同样的题,但是内存要求比较严格,并是没有 ...

  7. POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / SCU 1132 Invitation Cards / ZOJ 2008 Invitation Cards / HDU 1535 (图论,最短路径)

    POJ 1511 Invitation Cards / UVA 721 Invitation Cards / SPOJ Invitation / UVAlive Invitation Cards / ...

  8. UVa 1151 - Buy or Build(最小生成树)

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  9. 训练指南 UVA - 11354(最小生成树 + 倍增LCA)

    layout: post title: 训练指南 UVA - 11354(最小生成树 + 倍增LCA) author: "luowentaoaa" catalog: true ma ...

随机推荐

  1. junit test 报错,java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=esopCreateTest],

    java.lang.Exception: No tests found matching [{ExactMatcher:fDisplayName=esopCreateTest], {ExactMatc ...

  2. 携程greenlet模块使用

    import greenlet def f1(): print(11) gr2.switch() print(22) gr2.switch() def f2(): print(33) gr1.swit ...

  3. json的相关操作

    最近对json的操作不是很理解 定义: JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式. 它基于 ECMAScript (w3c制定的j ...

  4. Nginx+Springboot+Vue 前后端分离 解决跨域问题

    1:前端vue 写完 打包 npm run build prod 2: 后端api 写完打包 springboot mvn package -Dmaven.test.skip=true 3: ngin ...

  5. Deeplearning——动态图 vs. 静态图

    动态图 vs. 静态图 在 fast.ai,我们在选择框架时优先考虑程序员编程的便捷性(能更方便地进行调试和更直观地设计),而不是框架所能带来的模型加速能力.这也正是我们选择 PyTorch 的理由, ...

  6. Servlet中参数获取方法

    在web.xml里面可以定义两种参数: 一种是全局范围的参数, 一种是servlet内的参数. web.xml里定义参数的应用举例:在做分页功能时,可以在代码中直给定pageSize的值,这样,写死在 ...

  7. list comprehension & generator expression

    List comprehensions(列表推导式) are better when you want to iterate over something multiple times. Howeve ...

  8. xpath中遇到[<Element a at 0x39a9a80>](转)

    Element是什么 回归正题,大家晕头转脑的看完繁杂的语法之后,已经迫不及待写点什么东西了,然后部分同学可能遇到了这个 <Element a at 0x39a9a80>或者类似 Elem ...

  9. django联合查询

    假设A表的主键aid作为B表的外键,A表有属性name,那么想查询B表中name为abc的元素就可以这样写: B.objects.all().filter(aid__name = 'abc') __真 ...

  10. 发布mvc3 遇到的HTTP错误 403.14-Forbidden Web 服务器被配置为不列出此目录的内容

    今天在发布别人提供的MVC3的程序,正常部署后浏览报错,错误内容如图: 根据IIS提供的解决办法,启用目录浏览,刷新页面发现确实不报错了,但页面是以目录显示的,如图 虽然解决了报错问题,但不是正常的效 ...