洛谷2619/bzoj2654 Tree(凸优化+MST)

bzoj的数据是真的水。。
qwq
由于本人还有很多东西不是很理解
qwq
所以这里只写一个正确的做法。

首先,我们会发现,对于你选择白色边的数目,随着数目的上涨,斜率是单调升高的。

那么这时候我们就可以考虑凸优化,也就是\(wqs\)二分来满足题目中所述的正好\(k\)条边的限制。

我们\(erf\)一个\(mid\),然后让每一个白边的权值都加上\(mid\),然后跑\(MST\),看最后的选的白色边数,是否是大于等于\(k\)的,如果是,就调大\(l\),否则调小\(r\)

由于最小生成树选择边的时候可能有一些玄学的错误,所以我们在\(sort\)的时候,对于权值相等的边,我们优先选择白边。

那么通过\(erf\),之后,我们就能得到一个上界,也就是在当前的偏移量下,我们最多的选和1相连的边的个数。

根据\(clj\)的官方题解,这里有两个引理

对于一个图,如果存在一个最小生成树,它的白边的数量是\(x\),那么就称\(x\)是最小合法白边数。所有的最小合法白边数形成一个区间\([l,r]\)
(因为题目保证有解,所以我们只需要找到最小的\(r\)即可)

那么经过这个\(erf\),我们就能得到一个最小的\(r\)

那么我们应该怎么求整个\(MST\)的权值呢,我们会发现,对于权值相等的白边和黑边,由于题目保证有解,所以一定是会存在相互替代的关系的。
那我们可以按照之前的最小生成树的策略选白边,将其记为\(val\),最后输出\(val-k*ans\)\(ans\)表示最后的\(mid\)
为什么是\(k\)而不是具体的选的边的数目呢?

因为题目要求正好选择\(k\)条,而我们这里实际上是把多余的白边都直接视为黑边来做了
qwqwq
那么这个题就能解决了
qwqwqwqwq
但是我根据CF125E那个题,有一个比较特殊的做法,但是套到这个这个题,我并不是很理解。qwq
这个坑还是之后再填吧

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<vector>
#include<map>
#include<vector>
#define mk make_pair
#define pb push_back
#define ll long long
#define int long long
using namespace std;
inline int read()
{int x=0,f=1;char ch=getchar();while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}while (isdigit(ch)){x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}return x*f;
} 
const int maxn = 4e5+1e2;
struct Edge{int u,v,w;int col;
}; 
Edge e[maxn];
int n,m;
int ans;
int l=-200,r=200;
int fa[maxn];
int find(int x)
{if (fa[x]!=x) fa[x]=find(fa[x]);return fa[x];
}
int k;
bool cmp(Edge a,Edge b)
{if (a.w==b.w) return a.col<b.col;return a.w<b.w;
} 
int solve()
{sort(e+1,e+1+m,cmp);int tot=0;for (int i=1;i<=m;i++){int f1 = find(e[i].u);int f2 = find(e[i].v);if (f1==f2) continue;//if(tot==k && e[i].col==0) continue;if (e[i].col==0) ++tot;fa[f1]=fa[f2];}return tot;
}
signed main()
{n=read(),m=read();k=read();for (int i=1;i<=m;i++){e[i].u=read()+1;e[i].v=read()+1;e[i].w=read();e[i].col=read();}while(l<=r){int mid = (l+r) >> 1;for (int i=1;i<=n;i++) fa[i]=i;for (int i=1;i<=m;i++){if (e[i].col==0) e[i].w+=mid; }int tmp = solve();if (tmp<k){r=mid-1;}else l=mid+1,ans=mid;for (int i=1;i<=m;i++) {if (e[i].col==0) e[i].w-=mid;}}for (int i=1;i<=n;i++) fa[i]=i;for (int i=1;i<=m;i++)if (e[i].col==0) e[i].w+=ans;sort(e+1,e+1+m,cmp);int tot=0,val=0;for (int i=1;i<=m;i++){int f1 = find(e[i].u);int f2 = find(e[i].v);if (f1==f2) continue;if (e[i].col==0) ++tot;fa[f1]=fa[f2];val+=e[i].w;}cout<<val-k*ans;return 0;
}

转载于:https://www.cnblogs.com/yimmortal/p/10202290.html

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

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

相关文章

oracle 创交表,创建交叉报表(oracle)_oracle

创建交叉报表create table t1(goodid number(10) not null,saledate date not null,salesum number(10));要求生成本年度每个月的产品销售状况表m1 m2 m3 ... m12g1g2...gn下面是生成报表的sqlSELECT goodid,SUM(decode(to_char(saledate,mm),01,salesum)) "01"…

cass方格网数据excel_讨论|CASS怎么计算回字型土方? 124

大家好,欢迎来到我的专栏。这是我原创的第124篇CASS应用技术干货文章。希望对你有所帮助&#xff0c;写文不易&#xff0c;请点赞哦!回字型土方工程&#xff0c;就是计算区域内部&#xff0c;有一个或多个不参加计算的区域&#xff0c;这种区域也就是常说的“扣岛”。常见的有基…

ATM购物车程序项目规范(更新到高级版)

ATM购物车程序&#xff08;高级版&#xff09; 之前的低级版本已经删除&#xff0c;现在的内容太多&#xff0c;没时间把内容上传&#xff0c;有时间我会把项目源码奉上&#xff01; 我已经把整个项目源码传到群文件里了&#xff0c;需要的可以加主页qq群号。同时群内也有免费的…

垃圾收集器准则和提示

这些是我需要调整GC时通常会看到的一些准则和技巧。 主要由以下两本书组成&#xff0c;而根据我的经验却很少&#xff1a; Java性能 JBoss AS 5性能调优 希望它们对那里的其他人有用&#xff01; 垃圾收集器 XX:AggressiveOpts将HotSpot内部布尔变量设置为true以启用其他性…

MD5加密处理

MD5 加密后的位数一般为两种&#xff0c;16 位与 32 位。16 位实际上是从 32 位字符串中&#xff0c;取中间的第 9 位到第 24 位的部分 using System; using System.Security.Cryptography; using System.Text;namespace _04MD5加密 {internal class Program{private static vo…

php tp 支付宝 支付,php实现的支付宝网页支付功能示例【基于TP5框架】

本文实例讲述了php实现的支付宝网页支付功能。分享给大家供大家参考&#xff0c;具体如下&#xff1a;1.提交支付请求require_once ./payment/zfb/pagepay/service/AlipayTradeService.php;require_once ./payment/zfb/pagepay/buildermodel/AlipayTradePagePayContentBuilder.…

移动前端—H5实现图片先压缩再上传

在做移动端图片上传的时候&#xff0c;用户传的都是手机本地图片&#xff0c;而本地图片一般都相对比较大&#xff0c;拿iphone6来说&#xff0c;平时拍很多图片都是一两M的&#xff0c;如果直接这样上传&#xff0c;那图片就太大了&#xff0c;如果用户用的是移动流量&#xf…

requests模块

python requests用法总结 本文全部来源于官方文档 http://docs.python-requests.org/en/master/ 1、安装 Requests 是一个第三方 Python 模块&#xff0c;其官网的介绍如下&#xff1a; Requests 唯一的一个非转基因的 Python HTTP 库&#xff0c;人类可以安全享用。 警告&…

假期周总结六

放假第六周所做事情为&#xff1a; 1、在网上找了相关教程学习安装Hadoop,但过程中出现了许多问题&#xff0c;中途放弃了 2、继续观看关于大数据的在线课程视频转载于:https://www.cnblogs.com/DaisyYuanyq/p/9583194.html

linux子系统备份,使用LxRunOffline工具备份/还原Linux子系统(WSL)

安装WSL开启WSL组件首先需要打开WSL组件&#xff0c;可以使用以下命令&#xff1a;Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux也可以手动在【控制面板】-【程序】-【启用或关闭Windows功能】-【适用于Linux的Windows子系统】打勾&…

react打包后图片丢失_手搭一个 React,Typescript,Koa,GraphQL 环境

本文系原创&#xff0c;转载请附带作者信息&#xff1a;yhlben项目地址&#xff1a;https://github.com/yhlben/cdfang-spider前言在实际的开发过程中&#xff0c;从零开始初始化一个项目往往很麻烦&#xff0c;所以各种各样的脚手架工具应运而生。crea-react-app&#xff0c;v…

无需改动现有网络,企业高速远程访问内网Linux服务器

某企业为数据治理工具盒厂商&#xff0c;帮助客户摆脱数据问题困扰、轻松使用数据&#xff0c;使得客户可以把更多精力投入至数据应用及业务赋能&#xff0c;让数据充分发挥其作为生产要素的作用。 目前&#xff0c;该企业在北京、南京、西安、武汉等地均设有产研中心&#xff…

AngularJS XMLHttpRequest

$http 是 AngularJS 中的一个核心服务&#xff0c;用于读取远程服务器的数据。 读取 JSON 文件 下是存储在web服务器上的 JSON 文件&#xff1a; {"records": [{"Name": "Alfreds Futterkiste","City": "Berlin","Co…

使用Hazelcast发布和订阅

几周前&#xff0c;我写了一篇有关Hazelcast入门的博客&#xff0c;描述了创建分布式地图&#xff0c;列表和队列是多么简单。 当时我提到Hazelcast还能做很多其他事情。 该博客快速浏览了Hazelcast的另一个功能&#xff1a;基于Publish / Subscribe模式的广播消息系统。 这采用…

接口自动化测试持续集成--Soapui接口功能测试参数化

按照自动化测试分层实现的原理&#xff0c;每一层的脚本实现都要进行参数化&#xff0c;自动化的目标就是要实现脚本代码与测试数据分离。当测试数据进行调整的时候不会对脚本的实现带来震荡&#xff0c;从而提高脚本的稳定性与灵活度&#xff0c;降低脚本的维护成本。Soapui最…

linux的tcpdump命令详解,tcpdump命令

tcpdump命令是一款sniffer工具&#xff0c;它可以打印所有经过网络接口的数据包的头信息&#xff0c;也可以使用-w选项将数据包保存到文件中&#xff0c;方便以后分析。语法tcpdump(选项)选项-a&#xff1a;尝试将网络和广播地址转换成名称&#xff1b;-c&#xff1a;收到指定的…

Codeforces 1027E Inverse Coloring 【DP】

Codeforces 1027E Inverse Coloring 题目链接 1 #include<bits/stdc.h>2 using namespace std;3 #define N 10104 #define LL long long5 #define Mod 9982443536 int n,k;7 LL dp[N][N],ans0;8 LL sum[N][N];9 int main(){ 10 cin>>n>>k; 11 dp[0][…

合并远程仓库到本地_git远程仓库创建和合并

上周发了一个张佳波小朋友关于git的文章&#xff0c;马上就更多小朋友的回馈。其中周玉涛同志发来了自己对于git之前问题的一些理解和解决方法&#xff0c;希望能帮助更多人解决问题。为了保证周玉涛同学提供材料的完整性&#xff0c;以下将他原文和图片发出&#xff0c;不做其…

swfobject.js视频播放插件

在网页中经常会用到视频播放的功能&#xff0c;下面介绍一下swfobject.js的视频播放应用&#xff1a;html代码结构&#xff1a; <div id"video_content"></div> css样式结构&#xff1a; body{background: #003368}#video_content{width:600px;height:40…

项目学生:JPA标准查询

这是Project Student的一部分。 其他职位包括带有Jersey的Webservice Client&#xff0c;带有Jersey的 Webservice Server &#xff0c; 业务层 &#xff0c; 具有Spring Data的持久性 &#xff0c;分片集成测试数据和Webservice Integration 。 我们已经介绍了CRUD的基本操作…