Description

一个有向无环图,每条边有一个权值,起点为11,终点为nn,现在选择一条从起点到终点的路径,使得边权和与经过点数的比值最小。

Solution

首先我们添加一个新起点,连向起点,边权为0,那么题目转化成了求从新起点到终点的路径中边权和与边数的最小比值。

设经过了kk条边,边权分别为a1,a2,⋯,aka_1,a_2,\cdots,a_k,那么答案就是要求∑ki=1aik\dfrac{\sum_{i=1}^ka_i}{k}最小,设答案为ansans,那么就有:∑ki=1aik≥ans\dfrac{\sum_{i=1}^ka_i}{k}\geq ans
∑ki=1ai≥ans⋅k\sum_{i=1}^ka_i\geq ans\cdot k
∑ki=1(ai−ans)≥0\sum_{i=1}^k(a_i-ans)\geq 0

于是二分答案,把边权减去答案,最短路判定即可。

谴责一下这题数据,它并不是有向无环图,他是任意的有向图。所以这里最短路就不能直接拓扑序dp。

Code

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define fo(i,j,k) for(int i=j;i<=k;i++)
#define fd(i,j,k) for(int i=j;i>=k;i--)
#define rep(i,x) for(int i=last[x];i;i=next[i])
#define N 201
#define M 2010
#define eps 0.0001
using namespace std;
int to[M],next[M],last[M],num=0;
double val[M];
void link(int x,int y,double c)
{num++;to[num]=y;next[num]=last[x];last[x]=num;val[num]=c;
}
double f[N];
int d[N*N];
bool vis[N];
int n,m;
int jj=0;
bool check(double mid)
{memset(vis,0,sizeof(vis));fo(i,1,n) f[i]=100000000;d[1]=0;f[0]=0;int l=0,r=1;vis[0]=true;while(l<r){l++;int x=d[l];rep(i,x){int v=to[i];if(f[v]>f[x]+val[i]-mid){f[v]=f[x]+val[i]-mid;if(!vis[v]){vis[v]=true;d[++r]=v;}}}vis[x]=false;}return f[n]>0;
}
int main()
{freopen("calabash.in","r",stdin);freopen("calabash.out","w",stdout);cin>>n>>m;int p=0;fo(i,1,m){int u,v;double w;scanf("%d %d %lf",&u,&v,&w);link(u,v,w);p+=w;}link(0,1,0);double l=0,r=p*1.0;while(l+eps<r){double mid=(l+r)/2;if(check(mid)) l=mid;else r=mid;}printf("%.3lf",l);
}

【JZOJ4826】小澳的葫芦相关推荐

  1. UPC 小澳的葫芦 (最短路+01分数规划 )

    不懂01分数规划的可以先看大佬博客~ 传送门 01分数规划,即给定模型求sum(ai)/sum(bi)的最值: 我们可以改变一下式子的形态: sum(ai)/sum(bi)>=L =sum(ai ...

  2. 小澳的葫芦(最短路)

    小澳的葫芦 时间限制: 1 Sec 内存限制: 128 MB 题目描述 葫芦世界有n个葫芦,标号为 1−n.n个葫芦由m条藤连接,每条藤连接了两个葫芦,这些藤构成了一张有向无环图.小澳爬过每条藤都会消 ...

  3. 三校联训 小澳的葫芦(calabash) 题解

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

  4. 最小比例生成树 小澳的葫芦

    最小比例生成树 最小比例生成树:指路径总长与经过点数比值的最小值 小澳的葫芦 (calabash.cpp/c/pas ) [题目描述 ] 小澳最喜欢的歌曲就是<葫芦娃>. 一日表演唱歌,他 ...

  5. 【jzoj4826】【小澳的葫芦】【二分答案】

    题目大意 葫芦世界有n个葫芦,标号为1~ n.n个葫芦由m条藤连接,每条藤连接了两个葫芦,这些藤构成了一张有向无环图.小澳爬过每条藤都会消耗一定的能量.小澳站在1号葫芦上(你可以认为葫芦非常大,可以承 ...

  6. LYOI 78 小澳的葫芦

    题目描述 葫芦世界有 n n n 个葫芦,标号为 1−n 1 - n 1−n.n n n 个葫芦由 m m m 条藤连接,每条藤连接了两个葫芦,这些藤构成了一张有向无环图.小澳爬过每条藤都会消耗一定的 ...

  7. 01分数规划 东师oj3582: 小澳的葫芦

    题目描述 题目描述 小澳最喜欢的歌曲就是<葫芦娃>. 一日表演唱歌,他尽了洪荒之力,唱响心中圣歌. 随之,小澳进入了葫芦世界. 葫芦世界有n个葫芦,标号为1~ n.n个葫芦由m条藤连接,每 ...

  8. JZOJ 4826. 【NOIP2016提高A组集训第2场10.30】小澳的葫芦

    Problem Description 小澳最喜欢的歌曲就是<葫芦娃>. 一日表演唱歌,他尽了洪荒之力,唱响心中圣歌. 随之,小澳进入了葫芦世界. 葫芦世界有n个葫芦,标号为1~ n.n个 ...

  9. c........x 4^8^2^6 ssl 2554 小澳的葫芦 01分数规划+最短路

    Description 小澳最喜欢的歌曲就是<葫芦娃>. 一日表演唱歌,他尽了洪荒之力,唱响心中圣歌. 随之,小澳进入了葫芦世界. 葫芦世界有n个葫芦,标号为1~ n.n个葫芦由m条藤连接 ...

最新文章

  1. 一个ASP.NET中使用的MessageBox类
  2. 超详细的Python中的字符串常识【赶紧收藏】
  3. Spring - Java/J2EE Application Framework 应用框架 第 10 章 使用JDBC进行数据访问
  4. 3D-BoNet:比3D点云实例分割算法快10倍!代码已开源
  5. linux主机名包含点
  6. autosar架构_(1)Testing-Autosar架构及模块描述
  7. redhat官网关于生成rpm包的文章
  8. 网络工程师中级--上午科目
  9. photoshop cs之菜单栏功能介绍
  10. SEO优化转战移动手机站
  11. Python-修改密码功能
  12. div+css让div内部元素均匀分布
  13. 针对Matlab脑电数据EEG处理、 eeglab工具箱、Neuracle数据采集操作要点事项
  14. SAP中重复制造生产计划编制——表格显示控制
  15. 设计模式之业务实战培训
  16. 话筒性能测试软件,动圈式话筒性能的检测
  17. 采用QSystemTrayIcon实现系统托盘功能
  18. Linux命令取别名 | alias
  19. 2013年春晚刘谦李云迪魔术魔琴解密
  20. tfcenter主动提供映射服务(需要密钥匹配使用)

热门文章

  1. Github两个分支无法合并问题的解决与复现
  2. Softkinetic有望超越Kinect,并加速体感游戏进化
  3. ffmpeg input/output error错误
  4. 简单小游戏雷电逆战的破解
  5. 为什么叫金拱门- golden arch
  6. 6w字教程入门Docker
  7. HTML5饼状图的画法
  8. 2016huasacm暑假集训训练五 C-Common Subsequence
  9. 38岁李光洁二婚小10岁娇妻晒近照,长相甜美颜值高
  10. 本人毕业大学简介----武汉工程大学(2000.09--2004.06)