BZOJ1431 : MLand
考虑任意一棵生成树,它的代价是一个一次函数。
因此所有生成树的最小值随着时间变化呈现出的是一个上凸壳。
三分查找最大值即可。
时间复杂度$O(m\log m\log w)$。
#include<cstdio>
#include<algorithm>
int n,m,t1,t2,f[205],i;
struct E{
int u,v,a,b;double w;
void set(double t){w=a*t+b;}
}e[1205];
inline bool cmp(const E&a,const E&b){return a.w<b.w;}
int F(int x){return f[x]==x?x:f[x]=F(f[x]);}
double cal(double t){
int i;
for(i=0;i<m;i++)e[i].set(t);
std::sort(e,e+m,cmp);
for(i=0;i<n;i++)f[i]=i;
double ret=0;
for(i=0;i<m;i++)if(F(e[i].u)!=F(e[i].v))ret+=e[i].w,f[f[e[i].u]]=f[e[i].v];
return ret;
}
int main(){
scanf("%d%d%d%d",&n,&m,&t1,&t2);
for(i=0;i<m;i++)scanf("%d%d%d%d",&e[i].u,&e[i].v,&e[i].a,&e[i].b);
double l=t1,r=t2;
for(i=100;i--;){
double len=(r-l)/3,m1=l+len,m2=r-len;
double f1=cal(m1),f2=cal(m2);
if(f1>f2)r=m2;else l=m1;
}
return printf("%.3f",cal(l)),0;
}
BZOJ1431 : MLand的更多相关文章
- Direct3D11学习:(八)Effects介绍
转载请注明出处:http://www.cnblogs.com/Ray1024 一.概述 Effects框架是一组用于管理着色器程序和渲染状态的工具代码.例如,你可能会使用不同的effect绘制水.云. ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
随机推荐
- luogu P3810 三维偏序(陌上花开)cdq分治
题目链接 思路 对一维排序后,使用$cdq$分治,以类似归并排序的方法处理的二维,对于满足$a[i].b \leq a[j].b$的点对,用树状数组维护$a[i].c$的数量.当遇到$a[i].b&g ...
- java平台学习笔记
java程序从编写源码开始到程序执行一共有三个阶段,编写期,编译期,运行期. 通常,人们都希望自己的程序更快(不仅仅是执行更快,也有编写更快),因此java在不断更新. java源码先通过javac编 ...
- 论文学习笔记--无缺陷样本产品表面缺陷检测 A Surface Defect Detection Method Based on Positive Samples
文章下载地址:A Surface Defect Detection Method Based on Positive Samples 第一部分 论文中文翻译 摘要:基于机器视觉的表面缺陷检测和分类可 ...
- 015_ICMP专项研究监控
一.数据demo cat /proc/net/snmp Ip: Forwarding DefaultTTL InReceives InHdrErrors InAddrErrors ForwDatagr ...
- session前后台交互
下面是需求需要,不同的人群进来显示不同,但是还必须是这个走到哪都的存在,不能说点击别的页面,下面红框处的数据就没有了,必须是存在的并且登陆的类型不一样,显示的也不一样,开始的时候想到的是直接调用方法, ...
- Mysql 多实例 +表损坏
什么是实例? 进程+多个线程+预分配的内存结构 MySQL多实例: 多个进程+多个线程+多个预分配内存结构 多个配置文件: 1)多个端口 2)多个数据目录 3)多个socket文件 ./mysql_i ...
- HTML基本语法
一.什么是HTML? HTML不是编程语言,是用来描述网页文档(页面结构)的一种标记语言: HTML指超文本标记语言(Hyper Text Markup Language),之所以称为超文本标记语言, ...
- JavaScript代码规范
变量名:驼峰命名法(首单词小写,后面每个单词首字母大写) firstName = "John"; lastName = "Doe"; price = 19.90 ...
- matlab读取图片的异常表现
在对人脸图片进行对齐时,发现有两张人脸图片一直检测不到人脸,但这两张图片中的人脸明明很好检测(证件照),经过 排查,最终发现问题所在:图片的格式不对. img = imread("**.jp ...
- 企业面试必会shell
企业面试题1: 使用for循环在/oldboy目录下通过随机小写10个字母加固定字符串oldboy批量创建10个html文件,名称例如为: [root@oldboy oldboy]# sh /serv ...