【题目】

传送门

题目描述:

Tom 最喜欢的歌曲就是《葫芦娃》。

一日表演唱歌,他尽了洪荒之力,唱响心中圣歌。

随之,Tom 进入了葫芦世界。

葫芦世界有 nnn 个葫芦,标号为 111 ~ nnn。nnn 个葫芦由 mmm 条藤连接,每条藤连接了两个葫芦, 这些藤构成了一张有向无环图。Tom 爬过每条藤都会消耗一定的能量。

Tom 站在 111 号葫芦上(你可以认为葫芦非常大,可以承受 Tom 的体重),他想沿着藤爬到 nnn 号葫芦上,其中每个葫芦只经过一次。

Tom 找到一条路径,使得消耗的能量与经过的葫芦数的比值最小。

输入格式:

输入文件第一行两个正整数 n,mn,mn,m,分别表示葫芦的个数和藤数。

接下来 mmm 行,每行三个正整数 u,v,wu,v,wu,v,w,描述一条藤,表示这条藤由 uuu 连向 vvv,Tom 爬过这条藤需要消耗 www 点能量。

输出格式:

一行一个实数,表示答案(误差不超过 10−310^{-3}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  −>41\;->41−>4,消耗能量 888,经过 222 个葫芦,比值为 8/2=48/2=48/2=4。
1  −>2  −>41\;->2\;->41−>2−>4,消耗能量 1+6=71+6=71+6=7,经过 333 个葫芦,比值为 7/3≈2.337/3≈2.337/3≈2.33。
1  −>3  −>41\;->3\;->41−>3−>4,消耗能量 2+4=62+4=62+4=6,经过 333 个葫芦,比值为 6/3=26/3=26/3=2。
1  −>2  −>3  −>41\;->2\;->3\;->41−>2−>3−>4,消耗能量 1+3+4=81+3+4=81+3+4=8,经过 444 个葫芦,比值为 8/4=28/4=28/4=2。

所以选第三种或第四种方案,答案为 222。

测试点编号 nnn mmm 特殊说明
111 222 111
222 100100100 999999 除 111 外,所有葫芦的入度均为 111
333 100100100 105105105 所有从 111 到 nnn 的路径经过的葫芦数相等
444 100100100 100010001000
555 100100100 100010001000
666 199199199 198198198 除 111 外,所有葫芦的入度均为 111
777 200200200 231231231 所有从 111 到 nnn 的路径经过的葫芦数相等
888 200200200 200020002000
999 200200200 200020002000
101010 200200200 200020002000

对于所有数据,Tom 爬过每条藤消耗的能量不会超过 10310^3103,且一定存在一条从 111 到 nnn 的路径。

【分析】

50 pts:

直接暴力 dfsdfsdfs 一遍即可

100 pts:

新建一个起点 000,连接一条 000 到 111 长度为 000 的边,这样做的好处是直接将问题转化为长度和边数(就不是点数了)的最小比值,更为方便

假设有一个数 ansansans,对于任意一条由 kkk 条边组成的路径,若 ansansans 合法,必然有:
(w1+w2+w3+…+wk)/k>=ans(w_1+w_2+w_3+…+w_k)/k>=ans(w1​+w2​+w3​+…+wk​)/k>=ans移一下项,得:
(w1+w2+w3+…+wk)>=ans∗k(w_1+w_2+w_3+…+w_k) >=ans*k(w1​+w2​+w3​+…+wk​)>=ans∗k再转换一下,即
(w1−ans)+(w2−ans)+(w3−ans)+…+(wk−ans)>=0(w_1-ans)+(w_2-ans)+(w_3-ans)+…+(w_k-ans)>=0(w1​−ans)+(w2​−ans)+(w3​−ans)+…+(wk​−ans)>=0
很显然我们可以二分答案,每次将所有边权减去 midmidmid 后求最短路,然后判断 dnd_ndn​ 是否大于等于 000,若是,说明 ans&gt;=midans&gt;=midans>=mid,需要把 midmidmid 调大,不然就说明 ans&lt;midans&lt;midans<mid,要把 midmidmid 调小

01分数规划简单题,但由于掌握不熟没有拿满分。。。

【代码】

#include<queue>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 205
#define M 2005
#define eps 1e-8
using namespace std;
int n,m,t;
int first[N];
int v[M],w[M],next[M];
bool vis[N];
double ww[M],dis[N];
void add(int x,int y,int z)
{t++;next[t]=first[x];first[x]=t;v[t]=y;w[t]=z;
}
bool check(double mid)
{int x,y,i,j;for(i=1;i<=t;++i)  ww[i]=w[i]-mid;memset(dis,127,sizeof(dis));memset(vis,false,sizeof(vis));queue<int>q;dis[0]=0;q.push(0);while(!q.empty()){x=q.front();q.pop();vis[x]=false;for(i=first[x];i;i=next[i]){y=v[i];if(dis[y]>dis[x]+ww[i]){dis[y]=dis[x]+ww[i];if(!vis[y]){vis[y]=true;q.push(y);}}}}return dis[n]>=0;
}
int main()
{//  freopen("calabash.in","r",stdin);
//  freopen("calabash.out","w",stdout);int x,y,z,i;scanf("%d%d",&n,&m);add(0,1,0);for(i=1;i<=m;++i){scanf("%d%d%d",&x,&y,&z);add(x,y,z);}double l=0,r=1e6,mid;while(r-l>eps){mid=(l+r)/2;if(check(mid))  l=mid;else  r=mid;}printf("%.3lf",l);
//  fclose(stdin);
//  fclose(stdout);return 0;
}

【2018/10/11测试T3】葫芦相关推荐

  1. 【2018/10/11】T3 - 0/1分数规划 - 葫芦

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

  2. 【2018/10/16测试T3】长者

    [题目] 内网传送门 外网传送门 [分析] 30 pts:哈希+二分 可以用 s t r i n g string string 排序,也可以利用哈希做到 O ( l o g    n ) (log\ ...

  3. 训练日志 2018.10.11

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

  4. 【比赛报告】2018.10.11校赛[8-2情人节欢乐赛] NOIP练习赛卷十二

    比赛时间:2018.10.10 选手:lrllrl 成绩 100+100+100=300 用时:约1h T1 果实计数 显然易得,答案为 b n m o d    k b^n\mod k bnmodk ...

  5. 【2018/10/11完成】 ubuntu切换国内镜像源,加速apt-get下载速度

    ubuntu切换国内镜像源,加速apt-get下载速度 https://blog.csdn.net/TotoroCyx/article/details/79517202 学习这篇文章,但是他有很多的b ...

  6. 【2018/10/27测试T1】洛阳怀

    [题目] 传送门 [分析] 其实这道题似乎没有想象中的那么难 先说一下如何求 f(x)f(x)f(x) 吧,对 xxx 分解质因数,在这些质因数中,f(x)f(x)f(x) 就是好质数个数减去坏质数个 ...

  7. 泸州职称计算机,2018年11月四川泸州职称计算机考试10月8日开始报名

    [导语]2018年11月四川泸州职称计算机考试报名安排已发布,以下是无忧考网为您介绍了职称计算机考试时间.报名时间等,希望对大家有帮助,更多资料敬请关注无忧考网职称计算机考试频道,我们会为您及时更新相 ...

  8. 2018年第十届ACM四川省省赛题解(10 / 11)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 2018ACM四川省省赛 题目链接:https://www.oj.swust.edu.cn/probl ...

  9. 20172319 2018.10.12《Java程序设计教程》第6周课堂实践(补写博客)

    20172319 2018.10.12 <Java程序设计教程>第6周课堂测验 课程:<程序设计与数据结构> 班级:1723 学生:唐才铭 学号:20172319 指导老师:王 ...

最新文章

  1. SqlHelper++
  2. 中国自主研制出的速度最高的巨型计算机是,2018年,中国自主研制出的速度最高的巨型计算机是。...
  3. 爬取小说1--高并发
  4. springboot 替换tomcat_Springboot (二十八)云配置服务器
  5. 用递归调用法求斐波那契函数_进阶版:面试官问你斐波那契数列的时候不要高兴得太早...
  6. 修改mysql默认字符集的方法
  7. web 前端签名插件_10款前端开发神器,助你成前端高手?
  8. 关于VMWare版本下载选择
  9. 基于嵌入式linux的课程设计课题背景,嵌入式系统课题研究背景
  10. 如何将ape无损音转码为wav文件
  11. All in!马斯克出价430亿美元收购Twitter全部股份,还有B计划
  12. Description 对于一本共有n页的书,它的页码从1开始编号,一直到n,页码中没有无用的0,则该书页码中分别共用到了多少个0,1,2,3,4,5,6,7,8,9?
  13. esxi安装威联通_威联通TS-453Bmini NAS加装内存,轻松玩转虚拟机安装win10系统
  14. 关于音乐播放器锁屏播放,后台播放,封面显示等
  15. python职能-python运维工程师主要干什么
  16. Tensorflow入门——自制数据集:将未经处理的图片制成npy格式的数据集
  17. 用js:字符串数组中每一项的长度。将字符串数组用 | 符号分割。有序数组插入排序插入数组。猴子选大王
  18. Android MVVM框架搭建(三)MMKV + Room + RxJava2
  19. 高级程序员之抽象能力模型
  20. Drupal - 制作首页

热门文章

  1. python的拼音_Python返回汉字的汉语拼音(原创) | 学步园
  2. POSTGRESQL 差点发生一次冻结炸弹后的反思
  3. AI修图!pix2pix网络介绍与tensorflow实现
  4. Navicat怎样导入Excel表格和txt文本的数据
  5. xpath中的position()函数使用
  6. c语言实参和形参占用存储单元_在C语言中,以下说法正确的是()。 A.实参和与其对应的形参分别占用独立的存储单元。 B.实参和与...
  7. linux内核漫游实验目的,Linux内核源代码漫游——
  8. 不止终端热闹,CES 2016上半导体厂商有哪些新动作?---ESM
  9. 【每日面试】2021北京联通Java一面
  10. Efficientnet笔记:各个框架最适合的图像尺寸