三校联训 小澳的葫芦(calabash) 题解
题面:
小澳的葫芦
【 题目描述】
小澳最喜欢的歌曲就是《葫芦娃》。
一日表演唱歌,他尽了洪荒之力,唱响心中圣歌。
随之,小澳进入了葫芦世界。
葫芦世界有 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) 题解的更多相关文章
- 三校联训 【NOIP模拟】寻找
题面 “我有个愿望,我希望穿越一切找到你.” 这是个二维平面世界,平面上有n个特殊的果实,我从(0,0)点出发,希望得到尽量多的果实,但是出于某种特殊的原因,我的运动方式只有三种(假设当前我在(x,y ...
- Selenium WebDriver + Grid2 + RSpec之旅(三) ----入门小例子
Selenium WebDriver + Grid2 + RSpec之旅(三) ----入门小例子 第一个例子都是比较简单的博客园登录界面,就像学习编程语言时候都是从Hello,World!开始. 1 ...
- 三校联考 Day3
三校联考 Day3 大水题 题目描述:给出一个圆及圆上的若干个点,问两个点间的最远距离. solution 按极角排序,按顺序枚举,显然距离最远的点是单调的,线性时间可解出答案. 大包子的束缚 题目描 ...
- 【JZOJ4854】【NOIP2016提高A组集训第6场11.3】小澳的坐标系
题目描述 小澳者表也,数学者景也,表动则景随矣. 小澳不喜欢数学,可数学却待小澳如初恋,小澳睡觉的时候也不放过. 小澳的梦境中出现了一个平面直角坐标系,自原点,向四方无限延伸. 小澳在坐标系的原点,他 ...
- Java学习笔记三十:Java小项目之租车系统
Java小项目之租车系统 一:项目背景介绍: 根据所学知识,编写一个控制台版的“呱呱租车系统” 功能: 1.展示所有可租车辆: 2.选择车型.租车量: 3.展示租车清单,包含:总金额.总载货量以及其车 ...
- ios开发网络学习三:NSURLConnection小文件大文件下载
一:小文件下载 #import "ViewController.h" @interface ViewController ()<NSURLConnectionDataDele ...
- 练手WPF(三)——扫雷小游戏的简易实现(上)
一.创建项目1.创建WPF项目,设置初始化窗口大小(初级难度):高x宽为430x350.2.添加文件夹Images,并添加相关图片. 3.xaml中引入图片资源. <Window.Resourc ...
- python flask框架学习(三)——豆瓣微信小程序案例(二)整理封装block,模板的继承
我们所要实现的效果: 点击电影的更多,跳转到更多的电影页面:点击电视剧的更多,跳转到更多的电视剧页面. 三个页面的风格相同,可以设置一个模板,三个页面都继承这个模板 1.在指定模板之前,把css放在一 ...
- python flask框架学习(三)——豆瓣微信小程序案例(一)templates的使用,宏的使用,前端后台传数据,前端写python语句
目录 一.templates的使用 (1)在templates里创建一个index.html (2)再在app.py里写 (3)展示效果 二.构建第一个电影评分 (1)准备好素材放进static里的i ...
随机推荐
- Java多线程和并发(三),Thread类和Runnable接口
目录 1.Thread和Runnable接口 三.Thread类和Runnable接口 1.Thread和Runnable接口
- Make文件(一)
基本规则: 目标:依赖 (tab)规则 目标:需要生成的目标文件 依赖:生成该目标所需的一些文件 规则:由依赖文件生成目标文件的手段 tab:每条规则前必须以tab开头,使用空格不行. 例如: /** ...
- Spark指标项监控
监控配置 spark的监控主要分为Master.Worker.driver.executor监控.Master和Worker的监控在spark集群运行时即可监控,Driver和Excutor的监控需要 ...
- WordPress 主题开发:从入门到精通(必读)
本专栏介绍如何开发设计你自己的 WordPress 主题.如果你希望了解更多如何安装和应用主题的内容,请参阅应用主题文档.本文的内容不同于应用主题,因为所讨论的是编写代码去构建你自己的主题的技术内容, ...
- LeetCode19----删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 ...
- 一、基础篇--1.2Java集合-List、Set、Map区别
List.Set.Map区别 三者关系如下: 结构特点 1.List和Set是存储单列数据集合,Map是存储键值对这样的双列数据集合: 2.List中存储的数据都是有序的,并且允许重复:Map中存储 ...
- java 方法的重载重写
面向对象有三大特性:封装,继承,多态 多态则需要满足三大条件1要有继承2要有重写3父类引用子类对象 很多人对方法的重载重写有很大疑问,下面我来介绍一下方法的重载重写 方法重载就是方法名称重复,加载参数 ...
- centos7 apache php git pull
mkdir /usr/share/httpd/.ssh cp /root/.ssh/* /usr/share/httpd/.ssh chown -R apache:apache /usr/share/ ...
- windows+VS+Openjdk12 搭建debug环境
openjdk12 下载地址: http://jdk.java.net/archive/ https://download.java.net/java/GA/jdk12/33/GPL/openjdk- ...
- PLSQL查看表创建语句
在我们想要查看的表上右键选择view: