葫芦

描述

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分数规划 - 葫芦相关推荐

  1. 转载二分 01 分数规划即最大化平均值的证明0/1分数规划、最优比率生成树、最优比率环

    首页 新随笔 联系 管理 订阅 随笔- 20  文章- 0  评论- 9 [Algorithm]01分数规划--Update:2012年7月27日 [关键字] 0/1分数规划.最优比率生成树.最优比率 ...

  2. 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) ...

  3. bzoj 3232 圈地游戏——0/1分数规划(或网络流)

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3232 当然是0/1分数规划.但加的东西和减的东西不在一起,怎么办? 考虑把它们合在一起.因为 ...

  4. jzoj3852-单词接龙【0/1分数规划,负环】

    正题 题目链接:https://jzoj.net/senior/#main/show/3852 题目大意 nnn个单词串,头尾有两个相同单词就可以连在一起,求一个最长的环使得平均单词长度最长. 解题思 ...

  5. 训练日志 2018.10.11

    这两天一直在弄树形DP,至此除了概率DP还没看,DP 专题基本就告一段落了,这个学期还剩下三个月左右,图论.数据结构.计算几何三个专题一个月一个. 之前学的一些算法还是掌握的不牢,打算先花一个星期左右 ...

  6. [学习笔记]0/1分数规划

    对于一类:每个元素有两个属性A,B 选择若干个元素,使得$\frac{\sum A_i}{\sum B_i}$取到最值. 这类问题可以采用二分的方法.然后构造出模型用于判定. 推导: 二分mid 如果 ...

  7. #0/1分数规划,SPFA,负环#洛谷 1768 天路

    题目链接 分析 可以发现,这是一道0/1分数规划的题目,需要二分答案,然后判定是否存在负环,所以说bfs貌似不高效,那就用dfs吧,若二分答案为0,即不合法 代码 #include <cstdi ...

  8. 【2018/10/11测试T3】葫芦

    [题目] 传送门 题目描述: Tom 最喜欢的歌曲就是<葫芦娃>. 一日表演唱歌,他尽了洪荒之力,唱响心中圣歌. 随之,Tom 进入了葫芦世界. 葫芦世界有 nnn 个葫芦,标号为 111 ...

  9. [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{ ...

最新文章

  1. SpringBoot + Elasticsearch7.6实现简单查询及高亮分词查询
  2. 面向对象三大特性(封装,继承,多态)之多态
  3. 实时监视同步数据库变更,这个框架真是神器
  4. **52.常用的存储保护方法有哪些?
  5. 一个演示A星相关的寻路的网站
  6. 台式机共享笔记本的无线网络(只需要一根网线)
  7. 根据当月数据库自动生成下个月数据库--3
  8. oracle基础学习---------1
  9. 小学二年级上学期计算机教案,小学二年级上学期信息技术教案范文【三篇】
  10. 卷积神经网络的参数量和计算量
  11. sql自动生成编码函数
  12. 任务26:dotnet watch run 和attach到进程调试
  13. NLPIR/ICTCLAS中文分词系统 java相关api文档总结
  14. 苹果ppt_苹果又开发布会了,这几个PPT设计技巧值得学习
  15. 计算机课ppt免费,第1课 认识计算机ppt课件.ppt
  16. win8 怎么桌面计算机图标不见了,win8系统桌面图标不见了怎么办?如何恢复
  17. 微信公众号的订阅号和服务号权限区别
  18. 蓝牙(BlueTooth)技术标准
  19. 「实时视频流分析的边缘计算技术」最新2022研究综述
  20. BPDU保护与边缘端口、RLDP防环

热门文章

  1. 微信小程序直播卖货模式怎么开启
  2. MySQL统计数据库所有表的数据量
  3. 魔戒世界服务器维护,我的世界魔戒 The Lord of the Rings 服务器1.7.10
  4. 基于破壳漏洞的蠕虫实践
  5. 夏培肃完成了第一台电子计算机运算器,【判断题】夏培肃完成了第一台电子计算机运算器和控制器的设计工作,同时编写了我国第一本电子计算机原理讲义。...
  6. 连接mongodb提示目标计算机拒绝,MongoDB 由于目标计算机积极拒绝,无法连接 2014-07-25T11:00:48.634+0...
  7. 时间字符串解析(格式问题如2020-04-25T07:00:00+00:00)
  8. 淘宝代购系统|代购网站建设|代购系统开发代码对接教程
  9. EXCEL排产太麻烦?现在都用APS图形化排产啦
  10. Vue UI 组件库大起底 element VS iview VS ...