博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj 2654: tree
阅读量:5288 次
发布时间:2019-06-14

本文共 1118 字,大约阅读时间需要 3 分钟。

2654: tree

Time Limit: 30 Sec  Memory Limit: 512 MB
Submit: 2893  Solved: 1191
[][][]

Description

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

 

Input

第一行V,E,need分别表示点数,边数和需要的白色边数。
接下来E行,每行s,t,c,col表示这边的端点(点从0开始标号),边权,颜色(0白色1黑色)。

 

Output

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

 

 

Sample Input

2 2 1
0 1 1 1
0 1 2 0

Sample Output

2

HINT

 

原数据出错,现已更新 by liutian,但未重测---2016.6.24

 
 
    APIO讲的凸优化模板。。。。。
    凸优化大致就是 对限制某种物品选的数量 的dp 的一种手段,(但得适合像最小生成树这样有拟阵性质的贪心)
    
随着二分值的变化,选的物品的数量也会单调变化,并且最优化的都是一种东西。。所以。。。
 
#include
#define ll long longusing namespace std;const int maxn=100005;int n,m,K,L,R,mid,ans,p[maxn];struct lines{ int u,v,w,W,T; bool operator <(const lines &u)const{ return W==u.W?T
=K){ ans=now; return 1;} else return 0;} inline void solve(){ L=-100,R=100; while(L<=R){ mid=L+R>>1; if(work()) L=mid+1; else R=mid-1; }}int main(){ scanf("%d%d%d",&n,&m,&K); for(int i=1;i<=m;i++){ scanf("%d%d%d%d",&l[i].u,&l[i].v,&l[i].w,&l[i].T); l[i].u++,l[i].v++; } solve(); printf("%d\n",ans); return 0;}

  

转载于:https://www.cnblogs.com/JYYHH/p/9048621.html

你可能感兴趣的文章
angular(1.5.8)
查看>>
h5的video标签支持的视频格式
查看>>
大数据没那么重要
查看>>
TCP/IP详解学习笔记(3)IP协议ARP协议和RARP协议
查看>>
简单【用户输入验证】
查看>>
学android:直接用jdk来helloworld
查看>>
Access Jira RESTful API by cURL
查看>>
python tkinter GUI绘制,以及点击更新显示图片
查看>>
Spark基础脚本入门实践3:Pair RDD开发
查看>>
HDU4405--Aeroplane chess(概率dp)
查看>>
RIA Test:try catch 对 Error #1009 (无法访问空对象引用的属性或方法)的处理
查看>>
python使用easyinstall安装xlrd、xlwt、pandas等功能模块的方法
查看>>
一个杯子的测试用例
查看>>
数据之间的转换
查看>>
前端面试总结——http、html和浏览器篇
查看>>
CS0103: The name ‘Scripts’ does not exist in the current context解决方法
查看>>
20130330java基础学习笔记-语句_for循环嵌套练习2
查看>>
JavaScript之注释和运算符
查看>>
openCV(一)---将openCV框架导入iOS工程中
查看>>
Spring面试题
查看>>