Problem

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

Solution

实质上就是一个普通的SPFA,然后dis[x][y]dis[x][y]表示走到xx号点时已走了yy个点(包括xx号点)的最短距离,然后答案就是

min(dis[n][i]i)

min(\frac{dis[n][i]}{i})

Code

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#define N 210
#define M 2010
#define fo(i,a,b) for(i=a;i<=b;i++)
using namespace std;
int v[M*2],go[M*2],next[M*2],head[M*2],dis[N][N],d[N*N][2];
int tot,i,j,m,n,x,y,z,t,w,now,num;
double ans;
bool bz[N][N];
void lb(int x,int y,int z)
{
    go[++tot]=y;
    next[tot]=head[x];
    head[x]=tot;
    v[tot]=z;
}
int main()
{
    freopen("calabash.in","r",stdin);
    freopen("calabash.out","w",stdout);
    scanf("%d%d",&n,&m);
    fo(i,1,m)
    {        scanf("%d%d%d",&x,&y,&z);
        lb(x,y,z);
    }
    memset(dis,127,sizeof(dis));
    t=0;w=1;
    dis[1][1]=0;
    d[1][0]=d[1][1]=1;
    while (t<w)
    {        t++;
        now=d[t][0];num=d[t][1];
        for(i=head[now];i;i=next[i])
        {            int to=go[i];
            if (dis[now][num]+v[i]<dis[to][num+1])
            {                dis[to][num+1]=dis[now][num]+v[i];
                if (!bz[to][num+1])
                {                    w++;
                    d[w][0]=to;
                    d[w][1]=num+1;
                    bz[to][num+1]=1;
                }
            }
        }
        bz[now][num]=0;
    }
    ans=2139062143;
    fo(i,2,n)
        if (dis[n][i]!=2139062143 && (double)dis[n][i]/i<ans)
            ans=(double)dis[n][i]/i;
    printf("%.3lf",ans);
}

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

  1. JZOJ 4822. 【NOIP2016提高A组集训第1场10.29】完美标号

    Problem Description 给定M个二元组 (Ai,Bi)(A_i, B_i),求 X1,...,XNX_1, ..., X_N 满足:对于任意(A_i, B_i),有 |XAi−XBi| ...

  2. jzoj 4883. 【NOIP2016提高A组集训第12场11.10】灵知的太阳信仰

    Description 在炽热的核熔炉中,居住着一位少女,名为灵乌路空. 据说,从来没有人敢踏入过那个熔炉,因为人们畏缩于空所持有的力量--核能. 核焰,可融真金. 咳咳. 每次核融的时候,空都会选取 ...

  3. 【题解】4879. 【NOIP2016提高A组集训第11场11.9】少女觉

    Description 在幽暗的地灵殿中,居住着一位少女,名为古明地觉. 据说,从来没有人敢踏入过那座地灵殿,因为人们恐惧于觉一族拥有的能力--读心. 掌控人心者,可控天下.   咳咳. 人的记忆可以 ...

  4. 【JZOJ4861】【NOIP2016提高A组集训第7场11.4】推冰块

    题目描述 Dpstr最近迷上了推冰块.冰地是一个n行m列的网格区域,第i行第j列的格子记为(i,j),也就是左上角为(1,1),右下角为(n,m).每个格子可能是冰面.障碍物.减速带三者之一.其中,冰 ...

  5. 【NOIP2016提高A组集训第12场11.10】灵知的太阳信仰

    Description 在炽热的核熔炉中,居住着一位少女,名为灵乌路空. 据说,从来没有人敢踏入过那个熔炉,因为人们畏缩于空所持有的力量--核能. 核焰,可融真金. 咳咳. 每次核融的时候,空都会选取 ...

  6. JZOJ4883. 【NOIP2016提高A组集训第12场11.10】灵知的太阳信仰 2017.10(B组)

    Description 在炽热的核熔炉中,居住着一位少女,名为灵乌路空. 据说,从来没有人敢踏入过那个熔炉,因为人们畏缩于空所持有的力量--核能. 核焰,可融真金. 咳咳. 每次核融的时候,空都会选取 ...

  7. 【JZOJ4884】【NOIP2016提高A组集训第12场11.10】图的半径

    题目描述 mhy12345学习了树的直径,于是开始研究图的半径,具体来说,我们需要在图中选定一个地方作为中心,其中这个中心有可能在路径上. 而这个中心的选址需要能够使得所有节点达到这个中心的最短路里面 ...

  8. JZOJ4883. 【NOIP2016提高A组集训第12场11.10】灵知的太阳信仰

    题目 20 40 80 100 大致流程 code 题目 Description 在炽热的核熔炉中,居住着一位少女,名为灵乌路空. 据说,从来没有人敢踏入过那个熔炉,因为人们畏缩于空所持有的力量--核 ...

  9. 【JZOJ4883】【NOIP2016提高A组集训第12场11.10】灵知的太阳信仰

    题目描述 在炽热的核熔炉中,居住着一位少女,名为灵乌路空. 据说,从来没有人敢踏入过那个熔炉,因为人们畏缩于空所持有的力量--核能. 核焰,可融真金. 咳咳. 每次核融的时候,空都会选取一些原子,排成 ...

最新文章

  1. docker 安装 oracle12,Centos7下利用docker安装oracle12c
  2. VSCode配置JAVA开发环境,java初级面试笔试题
  3. 手把手教你搭建Jenkins+Jmeter+Ant自动化集成环境
  4. SQL Server高级查询之T-SQL编程(存储过程)
  5. 扎堆出海的抖音、今日头条、UC 头条们后来怎么样了?
  6. 3G模块驱动运用开发总结
  7. 筛选尚未注册的域名查询工具
  8. (智能间距换行均满足)Excel中单元格批量调整行间距,行高自动适应内容,且自动换行
  9. !!!---1588|Sum of All Odd Length Subarrays(新)
  10. 软件创新实验室:MySQL数据库与简单SQL语句使用
  11. 账龄分析表excel模板_电商数据分析统计模板工作表
  12. 支付宝沙箱登录授权-应用签名失败
  13. 关于idea+mybatis+springcloud+swagger2+Apollo 踩得小坑
  14. Oracle 查看 SQL执行计划
  15. 《学会提问》02| 论题和论证
  16. linux能装sql2000,亲测linux安装sql server (docker+centos7)
  17. 教你使用Python从零开始搭建一个区块链项目!
  18. 用python实现各种文件类型转换
  19. jsp中能循环div吗_冬季亲子游泳的好处你们知道吗?
  20. 如何清除计算机c盘的多余内容,怎么删除C盘多余的文件|电脑c盘哪些可以删除...

热门文章

  1. UIGU源码分析6:Toggle 和 ToggleGroup
  2. MySQL数据库安装出现密码错误的问题
  3. 女孩子怎么倒追男孩子?
  4. xml是啥?是干啥用的?
  5. Android 振动器
  6. 苹果电脑快速安装双系统 Winclone镜像包 Winclone安装Win7/Win8.1/Win10镜像
  7. 【面试记录】云和恩墨一面
  8. Android源码开发笔记 WWAN Carrier config的修改
  9. ups在线式服务器,简述在线式UPS三种常见的供电模式。
  10. 反恐精英链接服务器中断,枪神传说连接服务器超时问题解决方法 频繁掉线怎么办...