【bzoj2654]】tree
给白色边都加上一个值,二分这个值,使得选取的白边数量减少
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std; typedef long long LL; #define N 100010 struct Node
{
int x,y,z,c;
}e[N],a[N]; int n,m,need; LL ans,cnt,tot; int l,r,mid; int f[N]; int cmp(Node a,Node b)
{
return a.z==b.z ? a.c<b.c : a.z<b.z;
} int find(int x)
{
return f[x]!=x ? f[x]=find(f[x]) : f[x];
} void kruskal()
{
cnt=0,ans=0;
int k=0;
for (int i=1;i<=n;i++)
f[i]=i;
for (int i=1;k<n-1;i++)
{
int fa=find(e[i].x);
int fb=find(e[i].y);
if (fa!=fb)
{
f[fa]=fb;
ans+=e[i].z;
k++;
if (!e[i].c)
cnt++;
}
}
} int main()
{
scanf("%d%d%d",&n,&m,&need);
for (int i=1;i<=m;i++)
scanf("%d%d%d%d",&a[i].x,&a[i].y,&a[i].z,&a[i].c),a[i].x++,a[i].y++;
l=-1010,r=1010;
while (l<=r)
{
mid=(l+r)>>1;
for (int i=1;i<=m;i++)
e[i]=a[i];
for (int i=1;i<=m;i++)
if (!e[i].c)
e[i].z-=mid;
sort(e+1,e+m+1,cmp);
kruskal();
if (cnt<need)
l=mid+1;
else
r=mid-1,tot=ans+need*mid;
}
printf("%lld\n",tot);
return 0;
}
【bzoj2654]】tree的更多相关文章
- 【BZOJ2654】Tree(凸优化,最小生成树)
[BZOJ2654]Tree(凸优化,最小生成树) 题面 BZOJ 洛谷 题解 这道题目是之前\(Apio\)的时候写的,忽然发现自己忘记发博客了... 这个万一就是一个凸优化, 给所有白边二分一个额 ...
- 【BZOJ2654】tree 二分+最小生成树
[BZOJ2654]tree Description 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树. 题目保证有解. Input 第一行V,E,need ...
- 【bzoj2654】 tree
http://www.lydsy.com/JudgeOnline/problem.php?id=2654 (题目链接) 题意 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有nee ...
- 二分+最小生成树【bzoj2654】: tree
2654: tree 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树. 题目保证有解. 二分答案,然后跑最小生成树判断. 注意优先跑白色边. code: ...
- 【BZOJ2654】tree
Time Limit: 30 Sec Memory Limit: 512 MB Description 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树 ...
- 【bzoj2654】tree 二分+Kruscal
题目描述 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树.题目保证有解. 输入 第一行V,E,need分别表示点数,边数和需要的白色边数. 接下来E行,每 ...
- 【BZOJ2654】tree(生成树 二分)
题目链接 大意 给你一个无向带权连通图,每条边是黑色或白色,求一棵最小权的恰好有\(Need\)条白色边的生成树. 题目保证有解,输出最小权值. 其中每条边权在\([1,100]\)范围内. 思路 首 ...
- 【POJ3237】Tree 树链剖分+线段树
[POJ3237]Tree Description You are given a tree with N nodes. The tree's nodes are numbered 1 through ...
- 【BZOJ】【2631】Tree
LCT 又一道名字叫做Tree的题目…… 看到删边加边什么的……又是动态树问题……果断再次搬出LCT. 这题比起上道[3282]tree的难点在于需要像线段树维护区间那样,进行树上路径的权值修改&am ...
随机推荐
- vue开发 - 根据vue-router的meta动态设置html里标签的内容
路由文件 :router/index.js import Vue from 'vue'import Router from 'vue-router'import index '@/view/index ...
- 使用HTML5+调用手机摄像头和相册
前言:前端时间使用HTML5做了一个WEB端APP,其中用到了H5页面调用手机摄像头的功能,当时也是花了不少时间去研究.最终是采用了HTML5plus(HTML5+)的方式完成了该功能,现将具体方法简 ...
- Hibernate-02
一.hibernate实体创建规则 1.hibernate---->持久层ORM 映射框架,专注于数据的持久化工作. 2.持久化类创建规则 --->1.提供无参数的构造方法 2.私有化.对 ...
- 树莓派 - platform总线,设备和驱动
以树莓派为例子,分析一下其中LED的 platform device 和 platform driver. 查看LED设备,被挂载在/sys/devices/platform下. 注意其中的drive ...
- Nginx的初识
今日刚接触了解到Nginx的反向代理,正向代理,并发,集群,同个站点不同域名的解析访问等等. 1.反向代理:Nginx充当一个桥接的作用,对用户和服务端进行链接,进行服务端的代理,这样有什么好处: a ...
- TensorFlow2-维度变换
目录 TensorFlow2-维度变换 Outline(大纲) 图片视图 First Reshape(重塑视图) Second Reshape(恢复视图) Transpose(转置) Expand_d ...
- php使用trait遇到的一个问题
php是单继承语言,也是就是一个类只能继承一个单独的原始类自PHP5.4.0起,PHP实现了一种代码复用的方法,称为Traittrait 是在一些类(Class)的应该具备的特定的属性或方法,而同父级 ...
- 51nod 1298 圆与三角形 (计算几何)
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1298 求出圆心到三条线段的最短距离,然后判断是否有顶点在圆外,就把全部情 ...
- zoj2479 Cover the Rectangular Ground
肯定是dfs搜一下的,但是呢存在一个很大的剪枝,也就是面积必定要是相等的,那么如何去操作呢,可以想到的是二进制枚举选取的方法,然后把方法中选取的矩形面积求和并判断一下即可,然后dfs搜索,要注意的是, ...
- maven的安装与环境变量配置
1.下载maven 地址:http://maven.apache.org/download.cgi 点击下载 apache-maven-3.2.1-bin.zip. 2.安装配置,假设maven 解压 ...