题面:
小澳的葫芦
【 题目描述】
小澳最喜欢的歌曲就是《葫芦娃》。
一日表演唱歌,他尽了洪荒之力,唱响心中圣歌。
随之,小澳进入了葫芦世界。
葫芦世界有 n 个葫芦,标号为 1~ n。 n 个葫芦由 m 条藤连接, 每条藤连接了
两个葫芦, 这些藤构成了一张有向无环图。小澳爬过每条藤都会消耗一定的能量。
小澳站在 1 号葫芦上(你可以认为葫芦非常大,可以承受小澳的体重),他
想沿着藤爬到 n 号葫芦上, 其中每个葫芦只经过一次。
小澳找到一条路径,使得消耗的能量与经过的葫芦数的比值最小。
【 输入格式】
输入文件名为 calabash.in。
输入文件第一行两个正整数 n,m, 分别表示葫芦的个数和藤数。
接下来 m 行,每行三个正整数 u,v,w,描述一条藤,表示这条藤由 u 连向 v,
小澳爬过这条藤需要消耗 w 点能量。
【 输出格式】
输出文件名为 calabash.out。
一行一个实数, 表示答案( 误差不超过 10^-3)。
【 输入输出样例】
calabash.in calabash.out
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
对于所有数据,小澳爬过每条藤消耗的能量不会超过 10^3, 且一定存在一条从 1
到 n 的路径。

【algorithm1】

第一个测试点只有一条边,输出w/2就可以啦。

可以通过第1个测试点。

【algorithm2】

       注意到“除1外,所有葫芦的入度均为1”,也就是说,从1到n的路径只有一条,输出这一条路径的长度与这条路径上的点数的比值就可以了。

可以通过第1、2、6个测试点。

【algorithm3】

对于这样一类特殊数据,“所有从1到n的路径经过的葫芦数相等”,也就是说1~n的最短路就是最优路径,最短路的长度与路径上的点数的比值就是答案。

可以通过第1、2、3、6、7个测试点。

【algorithm4】

       另建一个起点0,连接一条0到1长度为0的边,就此将问题转化为长度和边数最小比值。这个问题的求解需要分数规划。

假设答案为ans,对于任意一条由k条边组成的路径,有:

(w1+w2+w3+…+wk)/k>=ans;

转化一下:

(w1+w2+w3+…+wk) >=ans*k;

即(w1-ans)+(w2-ans)+(w3-ans)+…+(wk-ans)>=0。

于是就得到了这样一个算法:

二分答案x,每次将每一条边的权值减去x求最短路,判断1~n的最短路是否大于0:若大于0,则说明答案ans>x;否则说明ans<x。

这样可以通过所有测试点。

三校联训 小澳的葫芦(calabash) 题解的更多相关文章

  1. 三校联训 【NOIP模拟】寻找

    题面 “我有个愿望,我希望穿越一切找到你.” 这是个二维平面世界,平面上有n个特殊的果实,我从(0,0)点出发,希望得到尽量多的果实,但是出于某种特殊的原因,我的运动方式只有三种(假设当前我在(x,y ...

  2. Selenium WebDriver + Grid2 + RSpec之旅(三) ----入门小例子

    Selenium WebDriver + Grid2 + RSpec之旅(三) ----入门小例子 第一个例子都是比较简单的博客园登录界面,就像学习编程语言时候都是从Hello,World!开始. 1 ...

  3. 三校联考 Day3

    三校联考 Day3 大水题 题目描述:给出一个圆及圆上的若干个点,问两个点间的最远距离. solution 按极角排序,按顺序枚举,显然距离最远的点是单调的,线性时间可解出答案. 大包子的束缚 题目描 ...

  4. 【JZOJ4854】【NOIP2016提高A组集训第6场11.3】小澳的坐标系

    题目描述 小澳者表也,数学者景也,表动则景随矣. 小澳不喜欢数学,可数学却待小澳如初恋,小澳睡觉的时候也不放过. 小澳的梦境中出现了一个平面直角坐标系,自原点,向四方无限延伸. 小澳在坐标系的原点,他 ...

  5. Java学习笔记三十:Java小项目之租车系统

    Java小项目之租车系统 一:项目背景介绍: 根据所学知识,编写一个控制台版的“呱呱租车系统” 功能: 1.展示所有可租车辆: 2.选择车型.租车量: 3.展示租车清单,包含:总金额.总载货量以及其车 ...

  6. ios开发网络学习三:NSURLConnection小文件大文件下载

    一:小文件下载 #import "ViewController.h" @interface ViewController ()<NSURLConnectionDataDele ...

  7. 练手WPF(三)——扫雷小游戏的简易实现(上)

    一.创建项目1.创建WPF项目,设置初始化窗口大小(初级难度):高x宽为430x350.2.添加文件夹Images,并添加相关图片. 3.xaml中引入图片资源. <Window.Resourc ...

  8. python flask框架学习(三)——豆瓣微信小程序案例(二)整理封装block,模板的继承

    我们所要实现的效果: 点击电影的更多,跳转到更多的电影页面:点击电视剧的更多,跳转到更多的电视剧页面. 三个页面的风格相同,可以设置一个模板,三个页面都继承这个模板 1.在指定模板之前,把css放在一 ...

  9. python flask框架学习(三)——豆瓣微信小程序案例(一)templates的使用,宏的使用,前端后台传数据,前端写python语句

    目录 一.templates的使用 (1)在templates里创建一个index.html (2)再在app.py里写 (3)展示效果 二.构建第一个电影评分 (1)准备好素材放进static里的i ...

随机推荐

  1. jquery grid 显示隐藏列

    colModel: [ { label: '列名称', name: 'columnName', width: 100, align: 'left' } ] function showData() { ...

  2. 窗体操作:GetWindowLong()

    函数原型: LONG GetWindowLong( HWND hWnd,int nIndex )   参数: hWnd:指定窗口的句柄 nIndex:需要获得的信息的类型      值         ...

  3. Python黑科技:赋值技巧

    一个变量一个值(正常赋值) v = 1 ''' # 结果,v: 1 ''' 多个变量一个值(连续赋值) x = y = z = 0 ''' # 结果,x: 0, y: 0, z: 0 ''' # 注意 ...

  4. HDU1176-免费馅饼(DP)

    免费馅饼 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  5. Unity3D_(插件)DOTween动画插件

    使用DOTween动画插件来实现物体的移动动画 Learn 一.DOTween插件对变量的动画 二.控制Cube和UI面板的动画 三.动画的快捷播放方式 四.动画的前放和后放 五.From Tween ...

  6. idea 更新后和新的直接安装前,都需要配置 idea64.exe.vmoptions 后再使用

    配置合适的参数提升性能,默认的性能不高

  7. 解决phpmyadmin出现: Maximum execution time of 300

    在mysql用phpmyadmin导入数据的时候出现: Fatal error: Maximum execution time of 300 seconds exceeded in ... 上网查了很 ...

  8. ajaxform和ajaxgird中添加数据

    ajaxform添加数据 ajaxform.setRecord(response.getAjaxDataWrap("dataWrapBill").getData()); ajaxg ...

  9. golang channel关闭后,是否可以读取剩余的数据

    golang channel关闭后,其中剩余的数据,是可以继续读取的. 请看下面的测试例子. 创建一个带有缓冲的channel,向channel中发送数据,然后关闭channel,最后,从channe ...

  10. bat脚本延时启动exe和bat文件

    @echo off ping >nul start D:\exe\a.exe start "C:\Program Files\维护工具\卸载清除一键清理系统垃圾文件.bat" ...