题目连接

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. [转]scp用法

    从本地复制到远程 复制目录命令格式: scp -r local_folder remote_username@remote_ip:remote_folder 或者 scp -r local_folde ...

  2. 学习 node.js 搭建web服务器

    开始 学习使用 node.js 首先完成搭建一个 web服务器.myweb.js var http = require('http'); var url = require('url'); var h ...

  3. Rosenblatt感知器

    一.定义 Rosenblatt感知器建立在一个线性神经元之上,神经元模型的求和节点计算作用于突触输入的线性组合,同时结合外部作用的偏置,对若干个突触的输入项求和后进行调节. 二.基本计算过程 Rose ...

  4. deeplearning.ai 人工智能行业大师访谈 Yoshua Bengio 听课笔记

    1. 如何走上人工智能的研究的?Bengio说他小时候读了很多科幻小说,1985年(64年出生,21岁)研究生阶段开始阅读神经网络方面的论文,对这个领域产生了热情. 2. 如何看深度学习这些年的发展? ...

  5. MATLAB命令大全+注释小结

    一.常用对象操作:除了一般windows窗口的常用功能键外.1.!dir 可以查看当前工作目录的文件.   !dir& 可以在dos状态下查看.2.who  可以查看当前工作空间变量名,    ...

  6. BZOJ 1046: [HAOI2007]上升序列【贪心+二分状态+dp+递归】

    1046: [HAOI2007]上升序列 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4987  Solved: 1732[Submit][Stat ...

  7. POJ 1655 Balancing Act【树的重心】

    Balancing Act Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14251   Accepted: 6027 De ...

  8. [51nod1232]完美数

    如果一个数能够被组成它的各个非0数字整除,则称它是完美数.例如:1-9都是完美数,10,11,12,101都是完美数,但是13就不是完美数(因为13不能被数字3整除). 现在给定正整数x,y,求x和y ...

  9. HDU--1213并查集

    题目传送门:HDU--1213 //题意:ignatius过生日,客人来到,他想知道他需要准备多少张桌子.然而一张桌子上面只能坐上相互熟悉的人, //其中熟悉可定义成为A与B认识,B与C认识,我们就说 ...

  10. c#版 K线控件(Stock)

    K线起源于日本米市交易,它的基本用途就是为了寻找"买卖点".股市及期货市场中的K线图的画法包含四个数据,即开盘价.最高价.最低价.收盘价,所有的k线都是围绕这四个数据展开,反映大势 ...