当前位置: 首页 > 编程日记 > 正文

Luogu P2619 [国家集训队2]Tree I(WQS二分+最小生成树)

P2619 [国家集训队2]Tree I

题意

题目描述

给你一个无向带权连通图,每条边是黑色或白色。让你求一棵最小权的恰好有\(need\)条白色边的生成树。

题目保证有解。

输入输出格式

输入格式:

第一行\(V,E,need\)分别表示点数,边数和需要的白色边数。

接下来\(E\)

每行\(s,t,c,col\)表示这边的端点(点从\(0\)开始标号),边权,颜色(\(0\)白色\(1\)黑色)。

输出格式:

一行表示所求生成树的边权和。

输入输出样例

输入样例#1:

2 2 1
0 1 1 1
0 1 2 0

输出样例#1:

2

说明

\(0:V<=10\)

\(1,2,3:V<=15\)

\(0,..,19:V<=50000,E<=100000\)

所有数据边权为\([1,100]\)中的正整数。

\(By\ WJMZBMR\)

思路

\(WQS\)二分真的强。

定义一个东西\(delta\),把它加在所有白边的边权上。对原图直接跑最小生成树,如果白边少了,就调小\(delta\);反之,则调大\(delta\)。最后得到答案。

证明并不会,只会感性理解(毕竟我是蒟蒻)。安利一篇博客好了:关于WQS二分算法以及其一个细节证明 --Creeper_LKF。

AC代码

#include<bits/stdc++.h>
using namespace std;
const int MAXN=5e4+4,MAXM=1e5+5;
int n,m,ned,ans,tot,fa[MAXN];
struct Edge
{int u,v,d,col;bool operator < (const Edge &sjf) const{if(d!=sjf.d) return d<sjf.d;return col<sjf.col;}
}edge[MAXM];
int read()
{int re=0;char ch=getchar();while(!isdigit(ch)) ch=getchar();while(isdigit(ch)) re=(re<<3)+(re<<1)+ch-'0',ch=getchar();return re;
}
int fd(int x)
{int r=x;while(r!=fa[r]) r=fa[r];int i=x,j;while(i!=r) j=fa[i],fa[i]=r,i=j;return r;
}
bool check(int lzq)
{for(int i=0;i<m;i++) if(!edge[i].col) edge[i].d+=lzq;for(int i=0;i<n;i++) fa[i]=i;int white=0,cnt=1;tot=0;sort(edge,edge+m);for(int i=0;i<m;i++){int x=edge[i].u,y=edge[i].v;if(fd(x)==fd(y)) continue;fa[fd(x)]=fd(y),cnt++,tot+=edge[i].d,white+=(!edge[i].col);if(cnt==n) break;}for(int i=0;i<m;i++) if(!edge[i].col) edge[i].d-=lzq;return white>=ned;
}
int main()
{n=read(),m=read(),ned=read();for(int i=0;i<m;i++) edge[i].u=read(),edge[i].v=read(),edge[i].d=read(),edge[i].col=read();int L=-15000,R=15000;while(L<=R){int M=(L+R)>>1;if(check(M)) L=M+1,ans=tot-M*ned;else R=M-1;}printf("%d",ans);return 0;
}

转载于:https://www.cnblogs.com/coder-Uranus/p/9904037.html

相关文章:

关于OSD::mkfs: ObjectStore::mkfs failed with error (5) Input/output error问题的解决

环境&#xff1a; ceph L版本12.2.1升级到12.2.12 这个问题是由于升级后进行12.2.12环境中的使用ceph-disk 进行osd部署时出现如下问题&#xff0c;执行命令 ceph-disk -v prepare /dev/sdb;ceph-disk -v activate /dev/sdb1 出现如下问题&#xff0c;出现这个问题之前我的磁盘…

福大计算机国二,福大学子喜获中国大学生计算机设计大赛二三等奖

新闻中心讯/8月9日&#xff0c;第十一届中国大学生计算机设计大赛暨第五届中国大学生动漫游戏创意设计大赛(爱果冻杯)决赛在福建农林大学闭幕。福州大学获得了全国决赛的二等奖3项&#xff0c;三等奖1项。据了解&#xff0c;本次大赛共有来自中央美术学院、中央民族大学、东北大…

Ubuntu下如何解压缩zip,tar,tar.gz,tar.bz2文件

转自&#xff1a;http://wangli-5665.diandian.com/post/2011-08-18/4039228 这么多年来&#xff0c;数据压缩对我们来说是非常有用的。无论是在邮件中发送的图片用的zip文件还是在服务器压缩数据文件&#xff0c;我们都可以让下载更容易或者有效 的节约磁盘空间。某些压缩格式…

DataGridView和ListT绑定不显示问题

在学习DataGridView 和List<T>绑定时发现DataGridView不会显示数据。后来发现要用类的属性才能正常显示&#xff0c;如果直接用类的字段等来显示&#xff0c;则无法显示数据。 代码如下&#xff1a; using System; using System.Collections.Generic; using System.Compo…

【pytorch】pytorch-backward()的理解

pytorch-backword函数的理解 函数&#xff1a;\(tensor.backward(params)\) 这个params的维度一定要和tensor的一致&#xff0c;因为tensor如果是一个向量y [y1,y2,y3]&#xff0c;那么传入的params[a1,a2,a3]&#xff0c;这三个值是系数&#xff0c;那么是什么的系数呢&#…

CEPH集群更换ip(更换ip前的防范和更换ip后的恢复)

文章目录修改/etc/hosts中的ip设置修改ceph.conf中的ip地址获取monmap将monmap注入到集群最近测试部在测试一些功能&#xff0c;在我们不知情得情况下更换了集群内外网ip&#xff0c;之后直接甩锅到我这里&#xff08;大哭&#xff09;接手到的集群是ceph各个组件之间无法成功通…

vim使用大全

鸟哥介绍的几个高级功能1.区块选择的按键意义v字符选择&#xff0c;会将光标经过的地方反白选择&#xff01;V行选择&#xff0c;会将光标经过的行反白选择&#xff01;[Ctrl]v区块选择&#xff0c;可以用长方形的方式选择资料y将反白的地方复制起来d将反白的地方删除掉 2.多档…

ajax默认超时时间多久,请问chrome浏览器的默认超时时间是多久?

测试时间&#xff1a;2019/02/26MacOS 环境下&#xff0c;timeout在各浏览器默认值为(以下浏览器都为当前时间最新版本)chrome 72.x 为4minsafari 12 为8minfirefox 65 貌似没有超时时间测试代码Documentqueryconst ajax (url /api/timeout) > {const xhr new XMLHttpReq…

Nginx 做图片服务器

呵呵 说来搞笑 我们公司领导那个决定啊&#xff0c;公司的图片Windows服务机器 准备迁移到Linux&#xff0c;我勒个去&#xff0c;也不搞个正规的文件系统&#xff0c;先喷下公司 2.8KW 张零碎图片 1.8T 文件占有量&#xff0c; 哥刚刚接手也是被吓了一跳。 Nginx 带动 整个公司…

SUSTechTripleH队墓志铭

SUSTechTripleH队建于2017年7月队员包括朱泓霖 贺启旸 黄博11月获南方科技大学第一枚ICPC区域赛奖牌次年获第一枚广东省省赛金牌2018年8月新增队员张文灏11月4日获得南方科技大学第一枚ICPC区域赛金牌于2018年11月5日解散享年16个月祝愿南科大ACM集训队越办越好转载于:https:/…

ceph-deploy rpm包的制作

今天需要部署一个ceph L 版本12.2.12的环境&#xff0c;无奈最近公司网络无法访问到ceph官网&#xff0c;只能使用之前下载好的ceph-deploy-1.5.39版本&#xff0c;安装上之后一口老血喷了出来&#xff0c;没有mgr的部署选项。 无奈之下只能自己制作一个1.5.38版本的ceph-depl…

ajax post的回调函数另一个方法,jQueryajax–post()方法 - 米扑博客

jQuery ajax - post() 实例请求 test.php 网页&#xff0c;忽略返回值&#xff1a;$.post("test.php");通过 AJAX POST 请求改变 div 元素的文本&#xff1a;$("input").keyup(function(){txt$("input").val();$.post("demo_ajax.asp"…

将excel中是数据导入数据库

2019独角兽企业重金招聘Python工程师标准>>> 将excel中是数据导入数据库 1.利用excel生成sql语句&#xff1a; 列如&#xff1a; 1&#xff09;.insert&#xff1a; CONCATENATE("insert into Company (ID,Name,Address,Tell,Brief,URL,Fax,Contact,TradeI…

Java工具类-转换字符编码

package common; /***字符串处理公用类 */ public class DealString {/*** 转换字符编码 由“iso-8859-1”西文转换为简体中文*/public static String toGb(String uniStr){String gbStr"";if(uniStrnull){uniStr"";}try{byte[] tempByteuniStr.getBytes(&…

partprobe源码分析

partprobe工具 操作系统目录/usr/sbin/partprobe 程序安装包parted-3.1-17.el7.x86_64.rpm 命令用法&#xff1a; partprobe是用来告知操作系统内核 分区表发生变化的工具&#xff0c;告知方式是请求内核重读分区表 选项如下&#xff1a; -d 不会让内核重读分区表&#xff0c…

数据库和服务器什么协议,数据库服务器协议

数据库服务器协议 内容精选换一换本章节适用于MRS 3.x之前版本。Loader支持以下多种连接&#xff0c;每种连接的配置介绍可根据本章节内容了解。obs-connectorgeneric-jdbc-connectorftp-connector或sftp-connectorhbase-connector、hdfs-connector或hive-connectorOBS连接是Lo…

VC实用小知识总结 (一),转http://blog.csdn.net/myiszjf/article/details/10007431

在上一篇中,我们以经介绍了程序的流程和框架,在本篇将详细讨论各个功能的实现主要包括1.获取磁盘信息2.获取目录信息3.获取文件信息4.运行指定文件5.删除指定文件6.删除指定目录7.创建指定目录8.上传下载文件9.获取远程文件图标获取磁盘信息磁盘信息可以用API GetDriveType来实…

Linux下快速分区格式化大于2T大容量存储

在生产环境中&#xff0c;我们会遇到分区大于2T的磁盘&#xff08;比如&#xff1a;添加一个10TB的存储&#xff09;&#xff0c;由于MBR分区表只支持2T磁盘&#xff0c;所以大于2T的磁盘必须使用GPT分区表&#xff0c;而我们在做raid时会划分多个VD来进行装系统&#xff0c;但…

ubuntu18.04 Desktop版本部署13.2.6版本ceph

文章目录选择系统安装系统网络配置CEPH部署想要查看版本较高的ceph在进行录像业务存储且在磁盘占用率在70%左右时且ceph底层出现slow_request是否会对上层录像业务造成显性影响 所以需要在ubuntu 18.04版本部署mimic版本ceph&#xff0c;先将部署步骤描述如下&#xff1a; 选…

java获取ajax上传的文件,Java使用Ajax异步上传文件

相关代码示例:html代码片段:名称class"layui-input">描述文件请选择配置文件立即提交重置js代码片段://上传配置文件$("#save_config_file").click(function () {var name $("#config_name").val();var desc $("#config_desc").v…

hdu 1423

最长公共上升子序列&#xff1a;O(n*m)的算法&#xff1b; 1 #include<cstdio>2 #include<cstring>3 #define maxn 10004 using namespace std;5 int a[maxn],b[maxn],f[maxn];6 int main()7 {8 int t,n,m;9 scanf("%d",&t); 10 while(t…

从HP发布BSM新版套件看网管与安管的融合

2012年11月底&#xff0c;HP发布了新版的BSM套件。在这个新的套件有一个BSM与ArcSight Logger整合的方案。我之前在RSA2012大会观后感系列文章中也提及过HP的这个动向&#xff0c;就是将网管与安管整合的动向。他们正在按部就班地进行中。不过&#xff0c;由于他们的身躯过于庞…

PHP学习课程和培训方向学习路线分享

PHP学习课程和培训方向学习路线分享 php语言的优越性&#xff0c;集结了很多的开发爱好者&#xff0c;无论行业前景和个人发展来说&#xff0c;php正飞速的发展&#xff0c;php在不断兼容着类似closures和命名空间 等技术&#xff0c;同时兼顾性能和当下流行的框架。版本是7之后…

编译ceph源码:cython module not found问题的解决

环境&#xff1a;centos7.5 ceph版本:12.2.1 在当前环境对ceph源码rpm包进行重新编译 执行命令rpmbuild --rebuild ceph-12.2.1-0.el7.src.rpm 最后出现错误如下&#xff1a; Could not find cython3. Please install Cython. 查看此时对Cython3模块的编译规则 vim /BUILD/ce…

把mysql 中的字符gb2312 改为gbk的方法

第一步&#xff1a;查找mysql的字符: mysql> show variables like %char%;------------------------------------------------------------| Variable_name | Value |------------------------------------------------------------|…

1h2g云服务器做网站,云服务器1h2g

云服务器1h2g 内容精选换一换IP地址组是多个IP地址的集合&#xff0c;可被安全组规则引用&#xff0c;可统一管理具有相同安全要求或需要频繁修改的IP地址。通过使用IP地址组&#xff0c;可有效应对需要重复多次编辑安全组规则的场景&#xff0c;方便管理。您需要先创建一个IP地…

×××S:Reporting Services 技巧

S&#xff1a;Reporting Services 技巧 表达式 1、序号&#xff1a;RunningValue(1, sum, nothing) 2、总记录数&#xff1a; CountRows() 3、今天日期&#xff1a;Today 4、本月初&#xff1a;CDate(Now().ToString("yyyy-MM-01")) 5、换行效果&#xff08;<br/&…

vim 常用指令

1 移动光标 光标动作 hjkl&#xff0c;方向键 移动一位&#xff0c;hjkl代表左、下、上、右 数字0 移至本行开头 ^ 移至本行第一个非空字符&#xff0c;匹配开头 $ 移至本行结尾&#xff0c;可以包含空格 w 移至下一单词或标点的开头…

ceph osd 由于“No space left on device” 异常down,通过扩容文件系统或者显式运行osd进程解决

文章目录ceph版本:环境配置&#xff1a;异常问题&#xff1a;问题解决&#xff1a;总结ceph版本: ceph 12.2.1 环境配置&#xff1a; tier_pool 16个分区大小800G 的osd容量 3副本 data_pool 32个4T盘 3副本 异常问题&#xff1a; ps:在分布式存储中遇到任何问题都不要先…

java云服务器系统选择,java云服务器系统选择

java云服务器系统选择 内容精选换一换登录Windows操作系统弹性云服务器时&#xff0c;无法正常进入系统。自启动系统修复模式&#xff0c;但选择修复选项后报错&#xff0c;无法继续进行系统恢复。Windows文件已损坏。登录管理控制台&#xff0c;选择“计算 > 弹性云服务器”…