【2018/10/11】T3 - 0/1分数规划 - 葫芦
葫芦
描述
Tom 最喜欢的歌曲就是《葫芦娃》。
一日表演唱歌,他尽了洪荒之力,唱响心中圣歌。
随之,Tom 进入了葫芦世界。
葫芦世界有 n 个葫芦,标号为 1~ n。n 个葫芦由 m 条藤连接,每条藤连接了两个葫芦, 这些藤构成了一张有向无环图。Tom 爬过每条藤都会消耗一定的能量。
Tom 站在 1 号葫芦上(你可以认为葫芦非常大,可以承受 Tom 的体重),他想沿着藤爬 到 n 号葫芦上,其中每个葫芦只经过一次。
Tom 找到一条路径,使得消耗的能量与经过的葫芦数的比值最小。
输入
输入文件第一行两个正整数 n,m,分别表示葫芦的个数和藤数。
接下来 m 行,每行三个正整数 u,v,w,描述一条藤,表示这条藤由 u 连向 v,Tom 爬过 这条藤需要消耗 w 点能量。
输出
一行一个实数,表示答案(误差不超过 10^-3)。
样例输入
4 6
1 2 1
2 4 6
1 3 2
3 4 4
2 3 3
1 4 8
样例输出
2.000
提示
有 4 种爬法:
1->4,消耗能量 8,经过 2 个葫芦,比值为 8/2=4。
1->2->4,消耗能量 1+6=7,经过 3 个葫芦,比值为 7/3≈2.33。
1->3->4,消耗能量 2+4=6,经过 3 个葫芦,比值为 6/3=2。
1->2->3->4,消耗能量 1+3+4=8,经过 4 个葫芦,比值为 8/4=2。
所以选第三种或第四种方案,答案为 2。
测试点编号 | n | m | 特殊说明 |
---|---|---|---|
1 | 2 | 1 | |
2 | 100 | 99 | 除 1 外,所有葫芦的入度均为 1 |
3 | 100 | 105 | 所有从 1 到 n 的路径经过的葫芦数相等 |
4 | 100 | 1000 | |
5 | 100 | 1000 | |
6 | 199 | 198 | 除 1 外,所有葫芦的入度均为 1 |
7 | 200 | 231 | 所有从 1 到 n 的路径经过的葫芦数相等 |
8 | 200 | 2000 | |
9 | 200 | 2000 | |
10 | 200 | 2000 |
对于所有数据,Tom 爬过每条藤消耗的能量不会超过 10^3,且一定存在一条从 1 到 n 的路径。
分析
水题*3
很明显啊,一眼分数规划
但是笨笨的我一不小心推错了
看到分数规划,首先想到sigma(ai)/sigma(bi)这个式子
然后将这道题具体的 ai 和 bi 代入进去,得到
令
相当于现在就是要求 x ,我们就二分求解,问题就在于如何check了,再转化一下:
现在来二分,得到一个mid,如果
那么显然mid还可以调大一些,同理如果就说明mid太大了
check的主要部分完了,我们又该怎么判这个关系呢?
根据题意我们需要最小值,那就新建一个图在原图的基础上将边权改为,跑一遍最短路就好啦
代码
#include<bits/stdc++.h>
#define ll long long
#define in read()
#define N 205
#define M 4005
#define inf 0x3f3f3f3f
using namespace std;
inline int read(){char ch;int f=1,res=0;while((ch=getchar())<'0'||ch>'9') if(ch=='-') f=-1;while(ch>='0'&&ch<='9'){res=(res<<3)+(res<<1)+ch-'0';ch=getchar();}return f==1?res:-res;
}
int n,m;
int nxt[M],to[M],head[N],cnt=0,from[N];
double w[M];
void add(int x,int y,int z){nxt[++cnt]=head[x];head[x]=cnt;to[cnt]=y;w[cnt]=z;
}
double wne[M],d[N];
bool vis[N];
void spfa(){memset(d,127,sizeof(d));queue<int > q;q.push(1);vis[1]=1;d[1]=0;while(!q.empty()){int u=q.front();q.pop();vis[u]=0;for(int e=head[u];e;e=nxt[e]){int v=to[e];if(d[v]>d[u]+wne[e]){d[v]=d[u]+wne[e];if(!vis[v]){vis[v]=1;q.push(v);}}}}
}
bool check(double l){for(int i=1;i<=cnt;++i) wne[i]=w[i]-l;spfa();if(d[n]>l) return true;return false;
}
int main(){n=in;m=in;int flag=0;for(int i=1;i<=m;++i){int u,v,w;u=in;v=in;w=in;add(u,v,w);}double l=0,r=3000000;while(l+1e-10<r){double mid=(l+r)/2.0;if(check(mid)) l=mid;else r=mid;注意实数的二分,不存在加1减1 }printf("%lf",l);return 0;
}
memset(128)-->极小值
memset(127)->极大值
【2018/10/11】T3 - 0/1分数规划 - 葫芦相关推荐
- 转载二分 01 分数规划即最大化平均值的证明0/1分数规划、最优比率生成树、最优比率环
首页 新随笔 联系 管理 订阅 随笔- 20 文章- 0 评论- 9 [Algorithm]01分数规划--Update:2012年7月27日 [关键字] 0/1分数规划.最优比率生成树.最优比率 ...
- jzoj4017-逃跑【0/1分数规划,线段树,dp】
正题 题目链接:https://jzoj.net/senior/#contest/show/3011/2 题目大意 n+1n+1n+1个连续的地方,每个地方有(a,b,c)(a,b,c)(a,b,c) ...
- bzoj 3232 圈地游戏——0/1分数规划(或网络流)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3232 当然是0/1分数规划.但加的东西和减的东西不在一起,怎么办? 考虑把它们合在一起.因为 ...
- jzoj3852-单词接龙【0/1分数规划,负环】
正题 题目链接:https://jzoj.net/senior/#main/show/3852 题目大意 nnn个单词串,头尾有两个相同单词就可以连在一起,求一个最长的环使得平均单词长度最长. 解题思 ...
- 训练日志 2018.10.11
这两天一直在弄树形DP,至此除了概率DP还没看,DP 专题基本就告一段落了,这个学期还剩下三个月左右,图论.数据结构.计算几何三个专题一个月一个. 之前学的一些算法还是掌握的不牢,打算先花一个星期左右 ...
- [学习笔记]0/1分数规划
对于一类:每个元素有两个属性A,B 选择若干个元素,使得$\frac{\sum A_i}{\sum B_i}$取到最值. 这类问题可以采用二分的方法.然后构造出模型用于判定. 推导: 二分mid 如果 ...
- #0/1分数规划,SPFA,负环#洛谷 1768 天路
题目链接 分析 可以发现,这是一道0/1分数规划的题目,需要二分答案,然后判定是否存在负环,所以说bfs貌似不高效,那就用dfs吧,若二分答案为0,即不合法 代码 #include <cstdi ...
- 【2018/10/11测试T3】葫芦
[题目] 传送门 题目描述: Tom 最喜欢的歌曲就是<葫芦娃>. 一日表演唱歌,他尽了洪荒之力,唱响心中圣歌. 随之,Tom 进入了葫芦世界. 葫芦世界有 nnn 个葫芦,标号为 111 ...
- [JSOI2016] 最佳团体(0/1分数规划 + 树形dp)
problem luogu-P4322 solution 假设每个人是否被招募,用 xi={0,1}x_i=\{0,1\}xi={0,1} 代替,max∑pi∗xi∑si∗xi\max\frac{ ...
最新文章
- SpringBoot + Elasticsearch7.6实现简单查询及高亮分词查询
- 面向对象三大特性(封装,继承,多态)之多态
- 实时监视同步数据库变更,这个框架真是神器
- **52.常用的存储保护方法有哪些?
- 一个演示A星相关的寻路的网站
- 台式机共享笔记本的无线网络(只需要一根网线)
- 根据当月数据库自动生成下个月数据库--3
- oracle基础学习---------1
- 小学二年级上学期计算机教案,小学二年级上学期信息技术教案范文【三篇】
- 卷积神经网络的参数量和计算量
- sql自动生成编码函数
- 任务26:dotnet watch run 和attach到进程调试
- NLPIR/ICTCLAS中文分词系统 java相关api文档总结
- 苹果ppt_苹果又开发布会了,这几个PPT设计技巧值得学习
- 计算机课ppt免费,第1课 认识计算机ppt课件.ppt
- win8 怎么桌面计算机图标不见了,win8系统桌面图标不见了怎么办?如何恢复
- 微信公众号的订阅号和服务号权限区别
- 蓝牙(BlueTooth)技术标准
- 「实时视频流分析的边缘计算技术」最新2022研究综述
- BPDU保护与边缘端口、RLDP防环
热门文章
- 微信小程序直播卖货模式怎么开启
- MySQL统计数据库所有表的数据量
- 魔戒世界服务器维护,我的世界魔戒 The Lord of the Rings 服务器1.7.10
- 基于破壳漏洞的蠕虫实践
- 夏培肃完成了第一台电子计算机运算器,【判断题】夏培肃完成了第一台电子计算机运算器和控制器的设计工作,同时编写了我国第一本电子计算机原理讲义。...
- 连接mongodb提示目标计算机拒绝,MongoDB 由于目标计算机积极拒绝,无法连接 2014-07-25T11:00:48.634+0...
- 时间字符串解析(格式问题如2020-04-25T07:00:00+00:00)
- 淘宝代购系统|代购网站建设|代购系统开发代码对接教程
- EXCEL排产太麻烦?现在都用APS图形化排产啦
- Vue UI 组件库大起底 element VS iview VS ...