jzoj100042-保留道路【最小生成树,图论】

正题


题目大意

一张无向图,求剩下一些边使图联通且wG∗max{gVi}+wS∗max{sVi}wG*max\{g_{V_i}\}+wS*max\{s_{V_i}\}wGmax{gVi}+wSmax{sVi}最小
VVV表示选的边集


解题思路

我们可以枚举max{si}max\{s_i\}max{si}的值,然后用ggg跑最小生成树。时间复杂度O(m2)O(m^2)O(m2),就可以成功TLETLETLE

这时,就需要用到最小生成树的性质。对于新的一个max{si}max\{s_i\}max{si},你只能加入一条新的边,直接用这个加进去跑一边最小生成树就好了。


codecodecode

#include<cstdio>
#include<algorithm>
#define Inf 1e18
#define N 500
#define M 50010
#define ll long long
using namespace std;
struct node{ll x,y,g,s;
}a[M];
ll n,m,wS,wG,ans,tot;
ll fa[N],s[M],p[N];
bool cmp(node x,node y)
{return x.g<y.g;}
ll find(ll x)
{return fa[x]==x?x:fa[x]=find(fa[x]);}
void unionn(ll x,ll y)
{ll Fa=find(x),Fb=find(y);if(Fa<Fb) fa[Fb]=Fa;else fa[Fa]=Fb;
}
int main()
{scanf("%lld%lld%lld%lld",&n,&m,&wG,&wS);for(ll i=1;i<=m;i++){scanf("%lld%lld%lld%lld",&a[i].x,&a[i].y,&a[i].g,&a[i].s);}ans=Inf;sort(a+1,a+1+m,cmp);for(ll i=1;i<=m;i++){if(a[i].x==a[i].y)continue;ll j,k=0,cnt=0;for(j=1;j<=n;j++)fa[j]=j;for(j=tot;j>=1;j--)if(a[p[j]].s>a[i].s) p[j+1]=p[j];else break;p[j+1]=i;tot++;for(j=1;j<=tot;j++){if(find(a[p[j]].x)!=find(a[p[j]].y)){unionn(a[p[j]].x,a[p[j]].y);k=max(k,a[p[j]].s);p[++cnt]=p[j];}if(cnt==n-1) break;}if(cnt==n-1) ans=min(ans,k*wS+a[i].g*wG);tot=cnt;}if(ans==Inf) printf("-1");else printf("%lld",ans);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/323163.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++描述杭电OJ 2000. ASCII码排序 ||

C描述杭电OJ 2000. ASCII码排序 || Problem Description 输入三个字符后&#xff0c;按各字符的ASCII码从小到大的顺序输出这三个字符。 Input 输入数据有多组&#xff0c;每组占一行&#xff0c;有三个字符组成&#xff0c;之间无空格。 Output 对于每组输入数据&#xf…

【LSB】图片隐写文档大纲

第一章 绪论 1.1研究背景 1.2研究意义 1.3主要工作 第二章 图片隐写和LSB算法 2.1关于图片隐写术 2.2LSB算法 第三章 系统设计与实现 3.1图像的加载 3.2文本的预编码 3.3文字编码 3.4图片编码 第四章 功能测试及线上部署 4.1功能测试 4.2线上部署 第五章 总结及展望 5.1总结…

C++描述杭电OJ 2005.第几天? ||

C描述杭电OJ 2005.第几天&#xff1f;|| Problem Description 给定一个日期&#xff0c;输出这个日期是该年的第几天。 Input 输入数据有多组&#xff0c;每组占一行&#xff0c;数据格式为YYYY/MM/DD组成&#xff0c;具体参见sample input ,另外&#xff0c;可以向你确保所…

.NET下使用HTTP请求的正确姿势

一、前言 去年9月份的时候我看到过外国朋友关于.NET Framework下HttpClient缺陷的分析后对HttpClient有了一定的了解。前几日也有园友写了一篇关于HttpClient的分析文章, 于是我想深入探索一下在.NET下使用HTTP请求的正确姿势。姿势不是越多越好, 而在于精不精。如果不深入了解…

jzoj5123-diyiti【统计,容斥】

正题 题目大意 n个木棒&#xff0c;求用6个木棒组成正方形的方案总数。 解题思路 这个正方形边有的木棒数两种可能3,1,1,13,1,1,13,1,1,1和2,2,1,12,2,1,12,2,1,1。 第一种可以枚举111&#xff0c;然后用fxf_xfx​表示两根木棒和为x的方案数&#xff0c;用fxf_xfx​加容斥可…

【LSB】图片隐写主体函数

关于图像隐写 图像隐写是一种有效的方式来交换隐藏的消息&#xff0c;而不会引起怀疑。它的工作原理是用lbs算法将消息编码为图像像素的颜色值。 这种功能基于浏览器的最新特性比如File API和Canvas&#xff0c;如果你的浏览器不支持该该功能&#xff0c;请下载最新的浏览器。…

C++描述杭电OJ 2012. 素数判定 ||

C描述杭电OJ 2012. 素数判定 || Problem Description 对于表达式n^2n41&#xff0c;当n在&#xff08;x,y&#xff09;范围内取整数值时&#xff08;包括x,y&#xff09;(-39<x<y<50)&#xff0c;判定该表达式的值是否都为素数。 Input 输入数据有多组&#xff0c;…

欢乐纪中某B组赛【2018.12.8】

前言 题目有毒系列。反正我觉得第1题最难&#xff0c;3,4题简单些。 跟jz大佬做题 成绩 RankRankRank是有算别人的 RankRankRankPersonPersonPersonScoreScoreScoreAAABBBCCCDDD111meselfmeselfmeself280280280000808080100100100100100100121212xjqxjqxjq1001001000000001001…

【Ajax】创建并封装

创建 <!DOCTYPE html> <html> <head><title></title><style>#button1{background:skyblue;border-radius:20px;width:100px;}</style> </head> <body> <button id"button1">按钮</button> <i…

C++描述杭电OJ 2016. 数据的交换输出 ||

C描述杭电OJ 2016. 数据的交换输出 || Problem Description 输入n(n<100)个数&#xff0c;找出其中最小的数&#xff0c;将它与最前面的数交换后输出这些数。 Input 输入数据有多组&#xff0c;每组占一行&#xff0c;每行的开始是一个整数n&#xff0c;表示这个测试实例…

ABP从入门到精通(2):aspnet-zero-core 使用MySql数据库

关于 asp.net zero core 项目的启动及说明&#xff0c;请观看我前面的博文ABP从入门到精通&#xff08;1&#xff09;&#xff1a;aspnet-zero-core项目启动及各项目源码说明 本操作对于ABP默认项目应该也是适用的&#xff01; 一.移除默认的SqlServer相关程序包 需要移除“MyC…

P3629-[APIO2010]巡逻【树的直径】

正题 题目大意 刚开始一棵树&#xff0c;在树中加入k条边(k<2)使得这些边都得走过的情况下&#xff0c;每个点都到达并回到原点的最少边。 解题思路 首先我们发现如果不加边的话答案是2∗(n−1)2*(n-1)2∗(n−1)。 之后我们考虑k1k1k1的情况&#xff0c;我们找树的直径&am…

15个顶级Java多线程面试题及答案

转载自 15个顶级Java多线程面试题及答案 在任何Java面试当中多线程和并发方面的问题都是必不可少的一部分。如果你想获得更多职位&#xff0c;那么你应该准备很多关于多线程的问题。 他们会问面试者很多令人混淆的Java线程问题。面试官只是想确信面试者有足够的Java线程与并…

Visual Studio 15.5预览版先睹为快

Microsoft延续了Visual Studio 2017快速迭代开发的步伐&#xff0c;最新发布了15.5预览版&#xff0c;这是VS2017这一广受欢迎的IDE自发布以来的第五次更新&#xff0c;该预览版的发布使用户可以先睹为快。 该预览版启用了一个称为“Stepping Back”的调试历史新特性。IntelliT…

C++描述杭电OJ 2017.字符串统计||

C描述杭电OJ 2017.字符串统计|| Problem Description 对于给定的一个字符串&#xff0c;统计其中数字字符出现的次数。 Input 输入数据有多行&#xff0c;第一行是一个整数n&#xff0c;表示测试实例的个数&#xff0c;后面跟着n行&#xff0c;每行包括一个由字母和数字组成…

【Android】实现页面跳转

对比html&#xff0c;安卓的页面跳转要难的多。 html只需要一个a标签即可实现页面的跳转&#xff0c;而安卓要分三步走 第一步 在activity_main.xml创建一个按钮 <Buttonandroid:id"id/btn1"android:layout_width"match_parent"android:layout_heigh…

jzoj100046-收集卡片【暴力】

正题 题目大意 给一个字符串&#xff0c;求一个最短的子串包含所有在这个字符串里出现的字母。 解题思路 枚举右指针&#xff0c;左指针移动到刚好满足要求的位置。每次就一个最小值。 时间复杂度:O(56n)O(56n)O(56n) code #include<cstdio> #include<algorithm>…

C++描述杭电OJ 2019. 数列有序 ||

C描述杭电OJ 2019. 数列有序 || Problem Description 有n(n<100)个整数&#xff0c;已经按照从小到大顺序排列好&#xff0c;现在另外给一个整数x&#xff0c;请将该数插入到序列中&#xff0c;并使新的序列仍然有序。 Input 输入数据包含多个测试实例&#xff0c;每组数…

【Android布局】控件布置

居中对齐 在相对布局中简单点 RelativeLayout 水平居中&#xff1a;android:layout_centerHorizontal“true” 垂直居中&#xff1a;android:layout_centerVertical“true” 水平垂直居中&#xff1a;android:layout_centerInParent“true” 在线性布局中 LinearLayout 首先必…

jzoj100047-基因变异【位运算,bfs】

正题 题目大意 一个长度为nnn的序列aaa。 对于一个数每秒可以将一个二进制位取反或异或aaa中的一个数。 qqq个询问&#xff0c;询问从xxx变化到yyy最少要多少秒。 解题思路 对于一个x和yx和yx和y&#xff0c;设 xxorwyx\ xor\ wyx xor wy ⇒xyxorw\Rightarrow xy\ xor\ w⇒xy…