【题解】洛谷P2323 公路修建问题(生成树)

解题报告:luoguP2868 Sightseeing Cows G(最优比率环,负环判定,二分答案) #include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> #include<queue> #include<map> using namespace std; const int N = 1e4+7; const int M = 5e4+7; const double eps = 1e-6; int f[N]; int head[N],v. 阅读详情

概括一下 就是最小生成树问题对于连接两个点的一条边都可以选择两个权值(一级 二级),一级权值>=二级,要求必须选至少k条一级公路(因为一级权值始终比二级全职大,所以我们就选k条一级公路),求这样构建出来的最小生成树最长的一条大小与选择第几条公路和级别。

这里我们需要写三个排序函数,第一个按照一级公路权值由小到大排序,选出k条公路。第二个按照二级公路权值由小到大排序,选出n-1-k条公路,记录下来答案需要的值后最后进行第三次排序,按照公路序号由小到大排,输出结果。注意这里枚举的是每一条边后在判断各种条件....之前疯狂WA,还要注意题目给的是m-1条公路,以及调用快排函数时的各种范围(.....)

 

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdlib>
using namespace std;
const int maxn=10010;
const int maxm=50010;
int n,m,k;
int ans=-100;
int fa[maxn];
struct edge{
	int u,v,w1,w2;
	int t;
}e[maxm*2];
struct print{
	int first;
	int second;
}qwq[maxm*2];
int find(int x)
{
	if(x!=fa[x]) fa[x]=find(fa[x]);
	return fa[x];
}
bool cmp1(const edge &a,const edge &b)
{
	if(a.w1==b.w1) return a.w2>b.w2;
	return a.w1<b.w1;
}
bool cmp2(const edge &a,const edge &b)
{
	return a.w2<b.w2;
}
void kruskal()
{
	int now=0;
	for(int i=1;i<=m;i++)
	{
		int f1=find(e[i].u);
		int f2=find(e[i].v);
		if(f1!=f2)
		{
			fa[f1]=fa[f2];
			ans=max(ans,e[i].w1);
			qwq[now].first=e[i].t;
			qwq[now].second=1;
			now++;
			if(now==k) break;
		}
	}
	sort(e+1,e+m,cmp2);
	for(int i=1;i<=m;i++)
	{
		int f1=find(e[i].u);
		int f2=find(e[i].v);
		if(f1!=f2)
		{
			fa[f1]=fa[f2];
			ans=max(ans,e[i].w2);
			qwq[now].first=e[i].t;
			qwq[now].second=2;	
			now++;
			if(now==n-1) break;
		}
	}
}
bool cmp3(const print &a,const print &b)
{
	return a.first<b.first;
}
int main()
{
	scanf("%d%d%d",&n,&k,&m);
	for(int i=1;i<=m-1;i++)
	{
		scanf("%d%d%d%d",&e[i].u,&e[i].v,&e[i].w1,&e[i].w2);
		e[i].t=i;
	}
	for(int i=1;i<=n;i++)
	{
		fa[i]=i;
	}
	sort(e+1,e+m,cmp1);
	kruskal();
	sort(qwq,qwq+n-1,cmp3);
	printf("%d\n",ans);
	for(int i=0;i<=n-2;i++)
	{
		printf("%d %d\n",qwq[i].first,qwq[i].second);
	}
	return 0;
}

 

当勒索软件盯上虚拟化层:从CVE-2025-22225漏洞看ESXi安全加固要点 本文深度剖析了针对VMware ESXi虚拟化层的CVE-2025-22225等漏洞链的攻击原理,揭示了攻击者如何利用VMCI、HGFS组件从虚拟机逃逸至宿主机。文章从实战角度出发,系统性地提出了ESXi安全加固的核心策略,包括禁用非必要服务、强化主机配置、实施网络分段、建立实时监控与自动化补丁管理体系,为企业构建纵深防御体系提供了具体可行的操作指南。 阅读详情

相关推荐

机房电脑的“还原”秘密:如何应对重启即清零的困境

机房电脑重启后自动还原是常见的现象,这主要依靠硬件还原卡或软件还原系统(如冰点还原)实现。这类技术会定期将系统盘恢复初始状态,但通常不保护非系统盘。要高效使用公共电脑,建议:1)将个人文件存储在D/E盘;2)使用绿色便携软件;3)必要时可尝试通过热键临时关闭还原功能;4)养成云端备份习惯。掌握这些技巧既能遵守机房规定,又能保证学习资料安全,培养良好的数字资产管理能力。

一位主要以学校学生信息技术,社会工作生活讲解科普拓展的博主 1457

洛谷:铺设道路(P5019,贪心)

春春是一名道路工程师,负责铺设一条长度为 n 的道路。铺设道路的主要工作是填平下陷的地表。整段道路可以看作是 n 块首尾相连的区域,一开始,第 i 块区域下陷的深度为 di​ 。春春每天可以选择一段连续区间[L,R] ,填充这段区间中的每块区域,让其下陷深度减少 1。在选择区间时,需要保证,区间内的每块区域在填充前下陷深度均不为 0 。春春希望你能帮他设计一种方案,可以在最短的时间内将整段道路的下陷深度都变为 0 。 输入格式输入文件包含两行,第一行包含一个整数 n,表示道路的长度。 第二行包含 n 个整数

速溶咖啡味道很中意丶的博客 302

美团mtgsig 3.1.0算法还原:从加密入口到d1生成的完整链路拆解

本文详细拆解了美团mtgsig 3.1.0签名算法的完整逆向过程。通过定位加密入口函数eH,理清a6、a5、a8到d1的生成依赖链,并运用插桩技术,在JSVMP混淆环境下逐步还原了核心参数的生成逻辑,为逆向工程实践提供了清晰的纯算还原方法论。

oo7890的博客 778

最优比率生成树

也就是01规划问题,用实数二分就可以解决。主要问题是使用克鲁斯卡尔算法会tle。。。(稠密图) #include<bits/stdc++.h> #define INF 0x3f3f3f3f using namespace std; int n; int fa[1002]; struct node{ double x,y,z; }a[1002]; struct mode{ int x; int y; double z; }; int get(int x) { if(

qq_52048593的博客 452

双层优化入门(2)—基于yalmip的双层优化求解(附matlab代码)

​上一篇博客介绍了双层优化的基本原理和使用KKT条件求解双层优化的方法,这篇博客将介绍使用yalmip的双层优化问题的求解方法。 1.KKT函数 通过调用yalmip工具箱中的KKT函数,可以直接求出优化问题的KKT条件,省去自己手动写的步骤。 2.solvebilevel函数 solvebilevel是yalmip工具箱内置的求解双层优化问题的函数。也就是通过这个函数,不需要咱手动写KKT条件,也不需要使用KKT函数,直接把上、下层优化的目标函数、约束条件往里面一放,就能求出结果。 ​

配电网和matlab的博客 1万+

1006. 换个格式输出整数 (15)-PAT乙级真题

1006. 换个格式输出整数 (15)让我们用字母B来表示“百”、字母S表示“十”,用“12…n”来表示个位数字n(&lt;10),换个格式来输出任一个不超过3位的正整数。例如234应该被输出为BBSSS1234,因为它有2个“百”、3个“十”、以及个位的4。输入格式:每个测试输入包含1个测试用例,给出正整数n(&lt;1000)。输出格式:每个测试用例的输出占一行,用规定的格式输出n。输入样例1...

柳婼 の blog 2243

洛谷P5019 [NOIP2018 提高组] 铺设道路

应该不可以将d[i]直接排序吧,会破坏原有的顺序关系 题目描述的有瑕疵啊,“首位相连”但后面的“连续区间”又是只能单一从前往后铺路 不管是贪心还是递推原理都一样: 以第一块开始,如果下一块深度没有前一块深,就相当于“免费”顺便铺的,但一旦到某块比前一块深,之前的“免费链”就断了,但“白嫖”过之前的a[i-1]块砖,所以只需要再铺a[i]-a[i-1]块就够了; 当遍历到最浅的那个坑时,下一个肯定会断,不过总体的深度都一起减少了 之后的每块深度都用一样的规律分析。 理解还是很抽象,和上一题一样规律都贼简单,但

Gughost的博客 559

Matlab实战:如何用MMG方程预测船舶轨迹(附完整代码)

本文提供了一份基于MMG方程的Matlab实战指南,详细讲解了如何从零构建船舶轨迹预测模型。内容涵盖MMG模型的核心原理、Matlab代码框架设计、动力学函数实现、参数调优与验证方法,并附有完整代码示例,帮助工程师和研究者快速掌握这一船舶操纵性预测的关键技术。

v6b7n8m9q0的博客 520

洛谷 P2323 [HNOI2006]公路修建问题 解题报告

P2323 [HNOI2006]公路修建问题 题目描述 输入输出格式 输入格式: 在实际评测时,将只会有m-1行公路 输出格式: 思路: 二分答案 然后把每条能加的大边都加上,然后加小边 但在洛谷的题解中,没有采用二分答案而直接先处理k条大边,再处理小边的做法我认为是有问题的,欢迎证明或证伪。 Code: #include <cstdio> #include <alg...

weixin_30735745的博客 141

FPGA实战:基于Basys3的多功能数字钟设计与实现

本文详细介绍了基于Basys3开发板的多功能数字钟设计与实现过程,涵盖FPGA开发、SystemVerilog编程及7段数码管驱动等关键技术。通过模块化设计实现时钟分频、时间计数、按键处理等功能,并提供了优化显示驱动和调试技巧,帮助开发者快速掌握数字电路设计核心概念。

weixin_29186249的博客 659

高通camx架构学习(零)—— 深入理解Camera 硬件抽象层

从上面的定义可以看出,主要是通过hw_module_t 代表了模块,通过其open方法用来打开一个设备,而该设备是用hw_device_t来表示,其中除了用来关闭设备的close方法外,并无其它方法,由此可见谷歌定义的HAL接口,并不能满足绝大部分HAL模块的需要,所以谷歌想出了一个比较好的解决方式,那便是将这两个基本结构嵌入到更大的结构体内部,同时在更大的结构内部定义了各自模块特有的方法,用于实现模块的功能,这样,一来对上保持了HAL的统一规范,二来也扩展了模块的功能。

图像学习之旅 1670

洛谷 P2323 [HNOI2006]公路修建问题

题目描述 输入输出格式 输入格式: 在实际评测时,将只会有m-1行公路 输出格式: 输入输出样例 输入样例#1: 4 2 5 1 2 6 5 1 3 3 1 2 3 9 4 2 4 6 1 3 4 4 2 输出样例#1: 4 2 1 3 2 5 1 输入样例#2: 4 1 5 1 2 6 5 1 ...

weixin_30570101的博客 141

华为OD机试 - TLV格式(Python/JS/C/C++ 2025 C卷 100分)

两端通过TLV格式的报文来通信,现在收到对端的一个TLV格式的消息包,要求生成匹配后的(tag,length,valueOffset)列表。和需要匹配的n个tag对应的n行匹配结果,每一行由长度和偏移量组成。第二行:需要匹配的tag数量n(0 < n < 1000)后面N行:需要匹配n个tag值(十进制表示),递增排列。标签10(0A)存在,长度3,valueOffset=2。标签15(0F)长度4,valueOffset=2。标签14(0E)长度2,valueOffset=8。

学Java,找哪吒 2041

HNOI 2006 公路修建问题

洛谷 P2323 [HNOI2006]公路修建问题 https://www.luogu.org/problem/P2323 JDOJ 2860: [HNOI2006]公路修建问题 D2 T2 https://neooj.com/oldoj/problem.php?id=2860 题目描述 OIisland是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多。然而...

anhaoti3785的博客 234

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

2021.8.11【提高B组模拟3】T2 + P2323 [HNOI2006] 公路修建问题(并查集)

SSL集训

我很菜的好吧 449

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

洛谷P2323 [HNOI2006] 公路修建问题 [二分答案,生成树]

  题目传送门 公路修建问题 题目描述 OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多。然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕。所以,OIER Association组织成立了,旨在建立OI island的交通系统。 OI island有n个旅游景点,不妨将它们从1到n标号。现在,OIER Association需要修公路将这些景点连接起来。一条...

weixin_30480583的博客 246

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

P2323 [HNOI2006]公路修建问题

一道二分好题。 https://www.luogu.org/problemnew/show/P2323 单调性:花费最少的公路要求的费用越低,满足条件的一级&amp;二级公路就越多。 所以,我们二分花费最少的公路的费用即可。 check函数:看在花费最少的公路的费用的限制下,满足条件的公路是否能凑出一棵生成树。我们用类似于kruskal算法的方法进行这个过程,不过有一个地方需要注意:优先选...

guapi2333的博客 372

1196/P2323: [HNOI2006]公路修建问题

1196: [HNOI2006]公路修建问题 Time Limit:10 SecMemory Limit:162 MBSubmit:2191Solved:1258 Description OI island是一个非常漂亮的岛屿,自开发以来,到这儿来旅游的人很多。然而,由于该岛屿刚刚开发不久,所以那里的交通情况还是很糟糕。所以,OIER Association组织成立了...

weixin_30535565的博客 100

【洛谷P2323】【gmoj1255】【8.11模拟赛T2】公路修建问题【kruskal+贪心】

题目链接:gmoj、洛谷 分析 这题一眼看就像是最小生成树,但又好像不完全是。。一开始想着裸的贪心好像也不太可行。 于是,美妙的结合来了。 因为对于一级公路来说最大的一级公路一定是全部公路中最大的。而如果一个二级公路很大,所对应一级公路一定更大。所以就符合贪心啦。 只要选取最小的k条一级公路就可以。如果换成任意一个一级公路都会更大。 而且要记录这k条一级公路连通了几个点,这里用kruskal实现。 然后剩下没有连通的点,再排序二级公路的大小,用最小生成树实现连通。这里并不会选到重复的边,因为选过记录了连..

ssllyr 133

BZOJ1196 [HNOI2006]公路修建问题(洛谷P2323)

最小生成树 BZOJ题目传送门 洛谷题目传送门 因为一级公路的花费一定大于二级公路,那么我们当然恰好选kkk条一级公路时是最优的。先以c1c1c_1为关键字排序选kkk条边,再以c2c2c_2为关键字排序选n−k−1n−k−1n-k-1条边即可。 代码: #include&amp;lt;cctype&amp;gt; #include&amp;lt;cstdio&amp;gt; #include&amp;lt;cstring&amp;g...

forezxl的博客 302

洛谷P2323 [HNOI2006]公路修建问题——题解

题目传送门 思考过程&amp;具体做法: 首先将所有边的价格从小到大排序,然后二分答案,并查集维护是否连通来检验即可。 代码: #include &lt;bits/stdc++.h&gt; using namespace std; const int maxn=2e4+1000; struct stu { int x,y,type,cost,id; }len[maxn...

CleverLarry的博客 477

[Algorithm]01分数规划——Update:2012年7月27日

【关键字】0/1分数规划、最优比率生成树、最优比率环 【背景】 根据楼教主的回忆录,他曾经在某一场比赛中秒掉了一道最优比率生成树问题,导致很多人跟风失败,最终悲剧。自己总结了一些这种问题的解法,因为水平有限,如果有错误或是麻烦的地方,尽管喷,邮箱或是下方留言。 联系我的话perseawe@163.com,欢迎讨论,请在标题前注明[acm]或是[oi],以免被垃圾邮件。 ...

weixin_30586085的博客 329

最优比例生成树(0/1分数规划)

首先这是要解决什么问题:一个带权完全图,每条边都有自己的花费值cost[i]和收益值benifit[i],如果用x[i]来代表一条边取或不取,那么求一个生成树。要求:r=(∑cost[i]*x[i] ) / (∑benifit[i]*x[i] )最小。经典题目:POJ2728 - Desert King如何来求解:这里用到了0-1分数规划思想,对于上式可以变形为 z(r)=∑cost[i]*x[i...

weixin_33911824的博客 227

【洛谷P7528】Portals G【最小生成树】

linklinklink 分析: 很明显是kruskalkruskalkruskal 然后考虑把所有环合并起来的最小代价 那就是加的边的总和 因为kruskalkruskalkruskal 按边权排过序 这样选的一定是最优的 CODE: #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> #include<vector> using namespac..

绫 192

POJ 2728 Desert King(初遇最优比率生成树)

题目链接:http://poj.org/problem?id=2728 题意:给出几个村庄的坐标x[i]和y[i],以及海拔z[i]。要在这些村庄之间建水渠,费用和两个村庄的海拔差成正比,水渠长度和村庄二维坐标(x,y)上的距离成正比,要求一种方案使得(总的花费/总的水渠长度)最小,输出这个最小值,保留三位小数。   这是一道0,1分数规划的题目,求的是一棵生成树sigma(dh)/sigm

kalilili的专栏 751

0-1分数规划

0-1分数规划 定义 我们给定两个数组,a[i]表示选取i的收益,b[i]表示选取i的代价。 如果选取i,定义x[i]=1否则x[i]=0。每个物品只有选和不选的两种方案,求一个选择的方案使得R=sigma(a[i]x[i])/sigma(b[i]x[i]),也就是选择物品的总收益/总代价最大或者最小。 主要问题分类 (1)一般01分数规划 (2)最优比率生成树...

dieguijin5790的博客 575
上一篇: 【题解】洛谷P3388 割点(模板)
下一篇: 【题解】洛谷P2354 [NOI2014] 随机数生成器(贪心 模拟)
Rem_Inory
博客等级 码龄8年 4粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值