zoukankan      html  css  js  c++  java
  • codevs1183 泥泞的道路

    codevs1183 泥泞的道路
    分数规划+二分答案(小数)
    一般是把移项之后的进行从大到小排序,但在这里要跑最长路,这和排序的道理是一样的,不过要同时满足最大和联通两个条件

    求最长路的时候不要忘记判正环23333333

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<queue>
     4 #include<algorithm>
     5 #include<cmath>
     6 #include<ctime>
     7 #include<set>
     8 #include<map>
     9 #include<stack>
    10 #include<cstring>
    11 #define inf 2147483647
    12 #define ls rt<<1
    13 #define rs rt<<1|1
    14 #define lson ls,nl,mid,l,r
    15 #define rson rs,mid+1,nr,l,r
    16 #define N 100010
    17 #define For(i,a,b) for(int i=a;i<=b;i++)
    18 #define p(a) putchar(a)
    19 #define g() getchar()
    20 
    21 using namespace std;
    22 int n;
    23 long double d[110][110],t[110][110],f[110][110];
    24 long double l,r,mid,ans;
    25 void in(int &x){
    26     int y=1;
    27     char c=g();x=0;
    28     while(c<'0'||c>'9'){
    29         if(c=='-')y=-1;
    30         c=g();
    31     }
    32     while(c<='9'&&c>='0'){
    33         x=(x<<1)+(x<<3)+c-'0';c=g();
    34     }
    35     x*=y;
    36 }
    37 void o(int x){
    38     if(x<0){
    39         p('-');
    40         x=-x;
    41     }
    42     if(x>9)o(x/10);
    43     p(x%10+'0');
    44 }
    45 
    46 bool check(long double x){
    47     For(i,1,n)
    48         For(j,1,n){
    49             f[i][j]=d[i][j]-x*t[i][j];
    50         }
    51     For(k,1,n)
    52         For(i,1,n)
    53             For(j,1,n)
    54                  f[i][j]=max(f[i][j],f[i][k]+f[k][j]);    
    55     For(i,1,n){
    56         if(f[i][i]>0)
    57             return true;
    58     }
    59     return f[1][n]>=0;             
    60 }
    61 
    62 int main(){
    63     in(n);
    64     For(i,1,n)
    65       For(j,1,n)
    66         cin>>d[i][j];
    67     For(i,1,n)
    68       For(j,1,n)
    69         cin>>t[i][j];
    70    l=0;r=100000000.0;
    71     while(r-l>1e-6){
    72         mid=(l+r)/2.0;
    73         if(check(mid))
    74             l=mid;
    75         else
    76             r=mid;
    77     }
    78     printf("%.3Lf",r);
    79     return 0;
    80 }
    View Code
  • 相关阅读:
    web测试方法总结
    APP测试点总结
    函数初识
    字符编码及文件操作
    简单购物车程序(Python)
    基本数据类型(列表,元祖,字典,集合)
    python基础
    基本数据类型(数字和字符串)
    Python入门
    操作系统
  • 原文地址:https://www.cnblogs.com/war1111/p/10323015.html
Copyright © 2011-2022 走看看