zoukankan      html  css  js  c++  java
  • 米特运输

    精度BOOM,然而可以用对数的性质把乘法罗成加法

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 
     4 #define esp 1e-6
     5 #define inf 0x3f3f3f3f
     6 #define maxn 500005
     7 int cnt,v[maxn<<1],next[maxn<<1],first[maxn];
     8 int du[maxn],q[maxn];
     9 double a[maxn],dist[maxn];
    10 
    11 void add(int st,int end){
    12     v[++cnt]=end;
    13     next[cnt]=first[st];
    14     first[st]=cnt;
    15 }
    16 void bfs(){
    17     int head=0,tail=0;
    18     q[++tail]=1;
    19     while(head<tail){
    20         int x=q[++head];
    21         double tmp=log(du[x]);
    22         for(int e=first[x];e;e=next[e]){
    23             dist[v[e]]=dist[x]+tmp;
    24             q[++tail]=v[e];
    25         }
    26     }
    27 }
    28 int main(){
    29     int n;
    30     scanf("%d",&n);
    31     for(int i=1;i<=n;i++){
    32         scanf("%lf",&a[i]);
    33         a[i]=log(a[i]);
    34     }
    35     for(int i=1;i<n;i++){
    36         int x,y;
    37         scanf("%d%d",&x,&y);
    38         add(x,y),du[x]++;
    39     }
    40     bfs();
    41     for(int i=1;i<=n;i++)
    42         a[i]+=dist[i];
    43     sort(a+1,a+1+n);
    44     int ans=inf,sum=1;
    45     for(int i=2;i<=n;i++){
    46         if(a[i]-a[i-1]<esp)sum++;
    47         else {
    48             ans=min(ans,n-sum);
    49             sum=1;
    50         }
    51     }
    52     ans=min(ans,n-sum);
    53     printf("%d
    ",ans);
    54     return 0;
    55 }
    View Code
  • 相关阅读:
    Ruby gem命令
    C语言中的static关键字
    Linux下clock计时函数学习
    open-falcon之dashboardportal说明.md
    open-falcon之graph
    open-falcon之query
    open-falcon之HBS
    open-falcon之judge
    open-falcon之transfer
    open-falcon之agent
  • 原文地址:https://www.cnblogs.com/Ngshily/p/5099438.html
Copyright © 2011-2022 走看看