题目连接

http://codeforces.com/gym/101490

题目大意

你有一张图,每两点之间有一定距离,计算出比最短路大x%之内的路径中最长边的最小值

分析

先跑一遍最短路,然后二分答案枚举最长边长度mid。在重新构图过程中去掉所有大于mid的边,看这样跑出的最短路是否满足要求(小于等于最短路*(100+x)/100即可)。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
const long long inf=1e18+9;
long long x[5000100],y[5000100],z[5000100];
vector<pair<long long,long long> >v[5000100];
priority_queue<pair<long long,long long> >Q;
long long n,m,k,ruler;
long long length[5000100];
bool is[5000100];
bool go(long long mid)
{     long long i,j,p,q;
      for(i=1;i<=n;i++)
         v[i].clear(),
         length[i]=inf;
      memset(is,0,sizeof(is));
      for(i=1;i<=m;i++)
         if(z[i]<=mid){
             v[x[i]].push_back(make_pair(y[i],z[i]));
             v[y[i]].push_back(make_pair(x[i],z[i]));
         }
      length[1]=0;
      Q.push(make_pair(0,1));
      while(!Q.empty()){
          long long a,b,c;
          a=Q.top().second;
          Q.pop();
          if(is[a])continue;
          is[a]=1;
          for(i=0;i<v[a].size();i++){
                 b=v[a][i].first;
                 c=v[a][i].second;
                 if(length[b]>length[a]+c){
                     length[b]=length[a]+c;
                     Q.push(make_pair(-length[b],b));
                 }
             }
        }
      if(length[n]>=inf)return false;
      if(length[n]*100<=ruler*(100+k))
          return true;
      return false;
}
int main()
{     long long i,j,mid=-1,ri,le;
      cin>>n>>m>>k;
      for(i=1;i<=m;i++)
         cin>>x[i]>>y[i]>>z[i];
      ri=1e9+7;
      le=0;
      go(1e9+7);
      ruler=length[n];
      while((le+ri)>>1!=mid){
          mid=(le+ri)>>1;
          //cout<<mid<<endl;
          if(go(mid))ri=mid;
            else le=mid;
      }
      cout<<ri<<endl;
      return 0;
}

101490E Charles in Charge的更多相关文章

  1. iOS Charles Proxy 教程

    原文:Charles Proxy Tutorial for iOS 作者:Aaron Douglas 译者:kmyhy 有时不得不承认--我们曾经写过一些代码,它们不正确,但我们又无法调试.更麻烦的是 ...

  2. Urozero Autumn 2016. BAPC 2016

    A. Airport Logistics 根据光路最快原理以及斯涅尔定律,可以得到从定点$P$进入某条直线的最佳入射角. 求出每个端点到每条线段的最佳点,建图求最短路即可. 时间复杂度$O(n^2\l ...

  3. windows charles response 乱码解决办法

    使用windows 版本的charles来做代理,发现服务端返回的response会出现中文乱码的情况, 查看软件设置,遗憾的是并没有关于编码的选项. 好在charles windows版本安装目录下 ...

  4. charles工具抓包教程(http跟https)

    1.下载charles 可以去charles官网下载,下载地址:http://www.charlesproxy.com/download/    根据自己的操作系统下载对应的版本,然后进行安装,然后打 ...

  5. mac 抓包工具charles v3.9.3 安装破解步骤

    一.下载 先到它的官网http://www.charlesproxy.com/可下载到最新版本,这个下载有点慢,我已经将它放到网盘中了:http://pan.baidu.com/s/1skTXRIl ...

  6. 谈iOS抓包:Mac下好用的HTTP/HTTPS抓包工具Charles

    在Mac下做开发,用Fiddler抓包由于离不开Windows比较痛苦,还好有Charles,到官网http://www.charlesproxy.com/可下载到最新版本(若不支持rMBP可拖到Re ...

  7. 复习(2)【postman,charles,filezilla server】

    Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件.通常我们可以用它来测试接口. Charles是在Mac下常用的网络封包截取工具,在做移动开发时,我们为了调试与服务器端的 ...

  8. [Android] charles高级使用总结

    reference to : http://blog.csdn.net/a910626/article/details/52823981 charles高级使用总结 网速模拟 点击菜单“Proxy→T ...

  9. 关于Charles抓取手机访问的Https请求

    准备工作 本次测试的Charles版本为3.9.1 · 首先在Charles中开启HTTP请求的远程监听. · 然后分别在手机和Mac上安装Charles的证书. 注意:证书一定要一致,否则抓取不到. ...

随机推荐

  1. 合并 CentOS 6.8 的两个ISO镜像

    合并 CentOS 6.8 的两个ISO镜像 1.创建相关目录: [root@local ~] mkdir -p /mnt/dvd1 /mnt/dvd2 /mnt/dvd3 /mnt/iso 说明: ...

  2. Angular17 Angular自定义指令

    1 什么是HTML HTML文档就是一个纯文本文件,该文件包含了HTML元素.CSS样式以及JavaScript代码:HTML元素是由标签呈现,浏览器会为每个标签创建带有属性的DOM对象,浏览器通过渲 ...

  3. Java反射-中级知识掌握

    PS:本文就Java反射常用的中级知识做下汇总和分析/cnxieyang@163.com/xieyang@e6yun.com

  4. Golang 网络爬虫框架gocolly/colly 五 获取动态数据

    Golang 网络爬虫框架gocolly/colly 五 获取动态数据 gcocolly+goquery可以非常好地抓取HTML页面中的数据,但碰到页面是由Javascript动态生成时,用goque ...

  5. 【一小时入门】webpack 入门指南

    什么是 webpack? webpack是近期最火的一款模块加载器兼打包工具,它能把各种资源,例如JS(含JSX).coffee.样式(含less/sass).图片等都作为模块来使用和处理. 我们可以 ...

  6. js分享功能

    引用JiaThis的分享功能: 直接在想要放置分享功能的地方加上如下代码即可: <!-- JiaThis Button BEGIN --> <div class="jiat ...

  7. 51 nod 1227 平均最小公倍数

    原题链接 Lcm(a,b)表示a和b的最小公倍数,A(n)表示Lcm(n,i)的平均数(1 <= i <= n), 例如:A(4) = (Lcm(1,4) + Lcm(2,4) + Lcm ...

  8. bzoj 1705;poj 3612:[Usaco2007 Nov]Telephone Wire 架设电话线

    Description 最近,Farmer John的奶牛们越来越不满于牛棚里一塌糊涂的电话服务 于是,她们要求FJ把那些老旧的电话线换成性能更好的新电话线. 新的电话线架设在已有的N(2 <= ...

  9. strncmp函数——比较特定长度的字符串

    strncmp函数用于比较特定长度的字符串. 头文件:string.h. 语法  int strncmp(const char *string1, const char *string2, size_ ...

  10. JS——判断一个对象是否为空

    判断一个对象是否为空对象,本文给出三种判断方法: 1.最常见的思路,for...in...遍历属性,为真则为"非空数组":否则为"空数组" 2.通过JSON自带 ...