Problem G: LZL的柠檬树

Time Limit: 1 Sec  Memory Limit: 128 MB

Description

LZL的柠檬树长出的柠檬可酸了!如果你也想要这棵酸酸的柠檬树的话,那我们就一起来种吧!好心的琳姐共享了她的种植方案~
现在给你一个无向带权的连通图,每条边是黑色或白色的。
你只要求出一颗最小生成树,且这棵树的权值最小,而且刚好有K条白色边即可。
这棵树就是琳姐的柠檬树啦!

Input

第一行V,E,K分别表示点数,边数和需要的白色边数。
接下来E行,每行S,T,W,C表示这条边的端点(点从0开始标号),边权,颜色(0白色1黑色)。

Output

一行表示所求柠檬树的边权和。
1<=V<=50000,1<=E<=100000,所有数据边权为[1,100]中的正整数。

题目保证有解

Sample Input

2 2 1
0 1 1 1
0 1 2 0

Sample Output

2

HINT


题解:(点我查看原题解

很经典的一道题目。考察二分+最小生成树。

我们考虑将所有的白色的边加上一个cost,如x至y有一条白色边权值为len,那我们将它的权值变为cost+len,然后我们做最小生成树,很明显,如果加上的cost越大,所选的白色边越少,所以我们就二分这个cost,直至刚好选了need条时,则答案就是生成树的权值-need*cost。

代码:

#include <bits/stdc++.h>
using namespace std;
int l = -105, r = 105;
int n, m, ans, tot, k, t;int par[100005];
int s[100005], e[100005], v[100005], c[100005];
struct EDGE{int s, e, v, c;
}edge[100005];bool cmp(EDGE a, EDGE b){if(a.v == b.v)return a.c<b.c;return a.v < b.v;
}void Init(int cost){tot = 0;t = 0;for(int i = 1; i <= n; ++i){par[i] = i;}for(int i = 1; i <= m; ++i){edge[i].s = s[i];edge[i].e = e[i];edge[i].c = c[i];if(edge[i].c==0){edge[i].v = v[i] + cost;}else{edge[i].v = v[i];}}sort(edge+1, edge+m+1, cmp);
}int Find(int node){return par[node]==node ? node:par[node]=Find(par[node]);
}bool Kruskal(int cost){Init(cost);for(int i = 1; i <= m; ++i){int fx = Find(edge[i].s);int fy = Find(edge[i].e);if(fx!=fy){if(fx>fy){par[fx] = fy;}else{par[fy] = fx;}tot += edge[i].v;if(edge[i].c==0)t++;}}return t>=k;
}int main(){scanf("%d %d %d", &n, &m, &k);for(int i = 1; i <= m; ++i){scanf("%d %d %d %d", &s[i], &e[i], &v[i], &c[i]);s[i]++;e[i]++;}while(l <= r){int mid = l + r >> 1;if(Kruskal(mid)){l = mid+1;ans = tot - k * mid;}else{r = mid-1;}}printf("%d", ans);   return 0;
}

广东外语外贸大学第15届程序设计竞赛 - G LZL的柠檬树 - 二分 + 最小生成树相关推荐

  1. 浙江农林大学第二十届程序设计竞赛暨团体程序设计天梯赛选拔赛(同步赛) K.来自良心出题人wzc的简单题

    链接 来源:牛客网 题目描述 罗德岛训练室今天的使用人是干员w,她的任务是使用手上的三个遥控炸弹,尽可能摧毁最大价值的目标. 测试区域是一个nn的矩阵,w可以选择任意格子安放炸弹,如果选择了位置[i] ...

  2. 来自wzc的简单拓扑dp———浙江农林大学第二十届程序设计竞赛暨团体程序设计天梯赛选拔赛(同步赛)

    传送门 题目描述 (良心出题人wzc说这是个简单拓扑dp,它就必然是一个简单拓扑dp,wzc是不会骗人的) wzc在一张拓扑图上,他所在的起始位置被标记为0.除了起始位置外,还有被1到n这n个整数所标 ...

  3. 江西财经大学第一届程序设计竞赛 G题小Q的口袋校园

    题目链接:https://www.nowcoder.com/acm/contest/115/G 解题思路:题解就一份代码,贪心的思想.先按开始时间进行排序. 然后不断贪心获得happy[ j ]的最大 ...

  4. 西安电子科技大学第16届程序设计竞赛G题

    链接: https://www.nowcoder.com/acm/contest/107/G 来源:牛客网 题目描述 众所周知,汀老师是XDUACM实验室最优秀的人,无论是学习还是打游戏.今天他突然想 ...

  5. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛——G.养花【网络流】

    题目传送门 题解 直接建图跑网络流即可. 对于区间的最大流,可以使用线段树,也可以直接加边. 注意数据范围不要太小.(奇奇怪怪,开小一点就超时???什么毛病) AC-Code #include < ...

  6. 北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛(重现赛)题解

    题目链接: 北京信息科技大学第十三届程序设计竞赛暨ACM选拔赛(重现赛)_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ大学ACM校赛新生赛是面向ACM/ICPC/CCP ...

  7. 训练实录 | 湖南大学第十六届程序设计竞赛

    湖南大学第十六届程序设计竞赛 传送门 A - Triangles solved by Micky. 00:38:55(+2) 题意: 水题,给三个点的坐标,判断是(钝角,锐角,直角,非)三角形. #i ...

  8. 陕西师范大学第七届程序设计竞赛网络同步赛题解

    心累,昨天一天3个比赛,全部炸掉,这个陕西师范的比赛我真的读不懂题目,只搞出来7题,难受 A,B,F签到题,不讲了,只讲C,D,I,K 链接:https://www.nowcoder.com/acm/ ...

  9. 文远知行杯广东工业大学第十六届程序设计竞赛ABEFHI(记录)

    文远知行杯广东工业大学第十六届程序设计竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ大学ACM校赛新生赛是面向ACM/ICPC/CCPC/区域赛校队选手,巩固经典专 ...

最新文章

  1. mysql 电商项目(一)
  2. 华人小哥开发“黑话”数据集,AI:你连dbq都不知道,xswl!| NAACL 2021
  3. 小时候的小霸王游戏!坦克大战 超级玛丽 魂斗罗 忍者神龟 都有!
  4. linux 设置代理 安装jdk mysql tomcat redis hadoop
  5. centos7装机教程
  6. 81.游戏项目-物体任意角度飞行和停止
  7. Redis 5.0新功能介绍
  8. linux db2 cached太大,cache
  9. 如何开启并配置CITRIX Xenserver的SNMP服务
  10. MySQL怎么导出用户权限表_导出MySQL用户权限_MySQL
  11. 华为机试HJ51:输出单向链表中倒数第k个结点
  12. flash xml+textArea组件+CSS
  13. k3刷机 重置_K3 官改刷官改升级或降级两种方法
  14. fiddler抓包教程
  15. 简述台式计算机的组装流程,台式机怎么组装 台式机组装步骤详细介绍【图文】...
  16. linux win10双系统启动顺序,修改双系统(win10+ubuntu)启动顺序和启动时间
  17. 1、 域名系统的主要功能是什么?互联网的域名结构是怎样的?域名系统中的本地域名服务器、根域名服务器、顶级域名服务器以及权限域名服务器有何区别?2、 假定要从已知的URL获得一个万维网文档。若该万维网服
  18. 【HANA系列】SAP HANA XS Administration Tool登录参数设置
  19. windows打不开应用商店,edge浏览器不能登录同步
  20. 旧电脑没有usb boot 启动选项,有没有光驱如何重装系统。

热门文章

  1. 使用经验 1 C++程序由哪些部分构成
  2. trian和val结果相差很大。
  3. 小内存海量数据,找中位数: 只有2G内存,在10G数据量怎样找到中位数?
  4. 什么是 ECC 内存?(memory with ECC)
  5. windows配置静态路由表
  6. 光驱动器类有哪些最新发表的毕业论文呢?
  7. 面试题19/leetcode10:正则表达式匹配 C++
  8. 数理统计01:线性相关性系数,斯皮尔曼相关性系数计算及详解
  9. [源码和文档分享]基于C语言实现的汽车牌照的快速查询
  10. macbook黑屏的三种解决方法