【Earthquake, 2001 Open 】 0-1 分数规划
71 奶牛施工队
一场地震把约翰家园摧毁了,坚强的约翰决心重建家园。约翰已经修复了 N 个牧场,他需要再
修复一些道路把它们连接起来。碰巧的是,奶牛们最近也成立了一个工程队,专门从事道路修复。而
然,奶牛们很有经济头脑,如果无利可图,它们是不会干的。
约翰和奶牛达成了协议,约翰向奶牛支付 F 元,奶牛负责修路,但不必修复所有道路,只要确保
所有牧场连通即可。可供奶牛选择修复的道路有 M 条,第 i 条道路连接第 Ui 个牧场和第 Vi 个牧场,
修复需要 Ti 分钟,支出成本为 Ci。保证连通所有牧场的道路修复方案总是存在的。奶牛们关注的是
挣钱速度,即总利润和总施工时间的比值。请帮助奶牛们选择修复哪些道路,才能使它们在单位时间
里的利润最大?
输入格式
• 第一行:三个整数 N, M 和 F, 1 ≤ N ≤ 400 , 1 ≤ M ≤ 10000 , 1 ≤ F ≤ 2 × 109
• 第二行到第 M + 1 行:第 i + 1 行有四个整数 Ui, Vi, Ci 和 Ti, 1 ≤ Ui,Vi ≤ N, 1 ≤ Ci,Ti ≤
2 × 109
输出格式
• 单个浮点数:表示施工队的最大挣钱速度,以四舍五入的方法保留四位小数,如果这个项目一
定亏本,输出 0.0000
样例输入
5 5 100
1 2 20 5
1 3 20 5
1 4 20 5
1 5 20 5
2 3 23 1
样例输出
1.0625
解释
修最后四条道路,成本总和为 83,时间总和
为 16,所以单位时间的利润为 (100 − 83)/16 =
1. 0625
【分析】
因为又是一题0-1分数规划,就再写一下。。
其实就是个二分?
二分答案mid,即要求[F-sigma(Ci) ]/sigma(Ti)>=mid
就是F>=sigma(Ci+mid*Ti)
右边尽量小就更有可能成立,就用最小1生成树krustal。
嗯
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<cmath>
using namespace std;
#define Maxn 410
#define Maxm 10010 struct node
{
int x,y,a,b;
double c;
}t[Maxm*]; int fa[Maxn],n,m;
double f; bool cmp(node x,node y) {return x.c<y.c;} int ffa(int x)
{
if(fa[x]!=x) return ffa(fa[x]);
return fa[x];
} bool check(double x)
{
for(int i=;i<=m;i++) t[i].c=t[i].a+x*t[i].b;
sort(t+,t++m,cmp);
double sum=;int cnt=;
for(int i=;i<=n;i++) fa[i]=i;
for(int i=;i<=m;i++)
{
if(ffa(t[i].x)!=ffa(t[i].y))
{
fa[ffa(t[i].x)]=ffa(t[i].y);
cnt++;
sum+=t[i].c;
}
if(cnt==n-) break;
}
return (cnt==n-)&&(f>=sum);
} void ffind(double l,double r)
{
while(r-l>0.000001)
{
double mid=(l+r)/;
if(check(mid)) l=mid;
else r=mid;
}
printf("%.4lf\n",l);
} int main()
{
double sm=;
scanf("%d%d%lf",&n,&m,&f);
for(int i=;i<=m;i++)
{
scanf("%d%d%d%d",&t[i].x,&t[i].y,&t[i].a,&t[i].b);
sm+=t[i].a;
}
ffind(,sm);
return ;
}
OwO
2016-10-31 20:09:07
【Earthquake, 2001 Open 】 0-1 分数规划的更多相关文章
- poj 2976 Dropping tests 0/1分数规划
0/1分数规划问题,用二分解决!! 代码如下: #include<iostream> #include<stdio.h> #include<algorithm> # ...
- bzoj 3597: [Scoi2014]方伯伯运椰子 0/1分数规划
3597: [Scoi2014]方伯伯运椰子 Time Limit: 30 Sec Memory Limit: 64 MBSubmit: 144 Solved: 78[Submit][Status ...
- LOJ 3089 「BJOI2019」奥术神杖——AC自动机DP+0/1分数规划
题目:https://loj.ac/problem/3089 没想到把根号之类的求对数变成算数平均值.写了个只能得15分的暴力. #include<cstdio> #include< ...
- poj2728 Desert King【最优比率生成树】【Prim】【0/1分数规划】
含[最小生成树Prim]模板. Prim复杂度为$O(n^2),适用于稠密图,特别是完全图的最小生成树的求解. Desert King Time Limit: 3000MS Memory Li ...
- POJ - 2976 Dropping tests && 0/1 分数规划
POJ - 2976 Dropping tests 你有 \(n\) 次考试成绩, 定义考试平均成绩为 \[\frac{\sum_{i = 1}^{n} a_{i}}{\sum_{i = 1}^{n} ...
- [SDOI2017]新生舞会 0/1分数规划
---题面--- 题解: 0/1分数规划,,,但是竟然有诡异的精度问题???因为这个被卡了好久 中途还写过一次KM,,,结果陷入死循环,,,我大概是写了一个假KM,,,于是放弃KM,回来调费用流 这个 ...
- bzoj3232圈地游戏——0/1分数规划+差分建模+判环
Description DZY家的后院有一块地,由N行M列的方格组成,格子内种的菜有一定的价值,并且每一条单位长度的格线有一定的费用. DZY喜欢在地里散步.他总是从任意一个格点出发,沿着格线行走直到 ...
- Bzoj1486/洛谷P3199 最小圈(0/1分数规划+spfa)/(动态规划+结论)
题面 Bzoj 洛谷 题解(0/1分数规划+spfa) 考虑\(0/1\)分数规划,设当前枚举到的答案为\(ans\) 则我们要使(其中\(\forall b_i=1\)) \[ \frac{\sum ...
- Bzoj4753/洛谷P4432 [JSOI2016]最佳团体(0/1分数规划+树形DP)
题面 Bzoj 洛谷 题解 这种求比值最大就是\(0/1\)分数规划的一般模型. 这里用二分法来求解最大比值,接着考虑如何\(check\),这里很明显可以想到用树形背包\(check\),但是时间复 ...
随机推荐
- nyoj 24 素数距离问题
素数距离问题 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度. ...
- 查询制定行数的数据(2)对了,mysql不能用top关键字
采用嵌套查询的方式,倒序之后前10条 倒序之后前9条 采用嵌套查询的方式,倒序之后前10条 排正序之后从第一条开始弄十条数据 排正序之后从第一条开始弄九条数据 排正序之后从第十条开始弄十条数据 排正序 ...
- Mysql下在某一列后即表的某一位置添加新列的sql语句
Mysql简介 MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司.MySQL被广泛地应用在Internet上的中小型网站中.由于其体积小.速度快.总体拥有成本低,尤 ...
- oracle 高版本导出低版本数据库并且导入到低版本数据的方法
第一步:sqlplus system/egis@orcl as sysdba; 进入sqlplus (输入管理员用户名/密码@数据库密码) 第二步: create directory dumpdir ...
- window redis 安装配置
1 下载 https://github.com/MSOpenTech/redis/releases 当前最新版本为 redis-2.8.21 下载的为zip包,下载连接为:https://gith ...
- java新手笔记20 抽象类模板(letter)
1.抽象类 package com.yfs.javase; //信模板 public abstract class Templater { public abstract String toName( ...
- ASP.NET中Json的处理
要使用.NET自带的JSON处理工具需要引用下面的命名空间: using System.Web.Script.Serialization; 1.编码 myConfig mc = new myConfi ...
- MySQL的多实例
一.准备工作 1.关闭mysql进程 # pkill # service mysqld stop 2.从系统服务中删除mysqld # chkconfi ...
- shell sort
sort is awesome! 22 hpp_national:talk:recentAtUsers-64490 23 hpp_national:talk:site_online_users:178 ...
- 【PHP】解决html网页乱码问题
在自己制作一个网页时,时常会遇到网页乱码的问题. 其实导致网页乱码主要有几个原因,以下给出解决方法. 1.HTML的字符编码问题 该问题较常见,也是最明显和最容易解决的. 在网页<head> ...