<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      [HNOI2014]米特運輸

      Description:

      給你一棵樹,每個點有權(quán)值,你可以修改一些點的權(quán)值使得:
      1.每個點權(quán)值等于子節(jié)點權(quán)值的和
      2.每個點的所有子節(jié)點權(quán)值相等

      Hint:

      \(n \le 2*10^6\)

      Solution:

      比較巧妙的題

      首先有一個很顯然的規(guī)律:

      當(dāng)一個點權(quán)值確定,整棵樹就確定了 (為什么這么顯然的規(guī)律沒有想到)

      然后我們考慮轉(zhuǎn)化求對于每個點不改它,對應(yīng)的樹的形態(tài)

      我們找出哪種樹的形態(tài)\(i\)被計的最多,答案就是\(n-cnt_i\)

      于是\(f[i]=a[i]*\prod_{j\in {anc_i} } son[j]\)

      dfs之后sort一遍就行

      但是這樣會炸,要把乘換成加法\(-> log(x*y)=log(x)+log(y)\)

      #include <map>
      #include <set>
      #include <stack>
      #include <cmath>
      #include <queue>
      #include <cstdio>
      #include <cstring>
      #include <cstdlib>
      #include <iostream>
      #include <algorithm>
      #define ls p<<1 
      #define rs p<<1|1
      using namespace std;
      typedef long long ll;
      const int mxn=2e6+5;
      const double eps=1e-8;
      int n,m,cnt,ans,a[mxn],son[mxn],hd[mxn];
      double f[mxn];
      
      inline int read() {
          char c=getchar(); int x=0,f=1;
          while(c>'9'||c<'0') {if(c=='-') f=-1;c=getchar();}
          while(c<='9'&&c>='0') {x=(x<<3)+(x<<1)+(c&15);c=getchar();}
          return x*f;
      }
      inline void chkmax(int &x,int y) {if(x<y) x=y;}
      inline void chkmin(int &x,int y) {if(x>y) x=y;}
      
      struct ed {
          int to,nxt;
      }t[mxn<<1];
      
      inline void add(int u,int v) {
          t[++cnt]=(ed) {v,hd[u]}; hd[u]=cnt;
      }
      
      void dfs(int u,double sum) {
          f[u]=sum+log(a[u]);
          for(int i=hd[u];i;i=t[i].nxt) {
              int v=t[i].to;
              dfs(v,sum+log(son[u]));
          }
      }
      
      int main()
      {
          n=read(); int u,v;
          for(int i=1;i<=n;++i) a[i]=read();
          for(int i=1;i<n;++i) {
              u=read(); v=read();
              ++son[u]; add(u,v);
          }
          dfs(1,0); sort(f+1,f+n+1); int mx=1;
          for(int i=2;i<=n;++i) {
              if(f[i]-f[i-1]<=eps) ans=max(ans,++mx);
              else mx=1;
          }
          printf("%d\n",n-ans);
          return 0;
      }
      
      
      posted @ 2019-03-29 11:22  cloud_9  閱讀(139)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 天天做天天爱夜夜爽导航 | 中文熟妇人妻av在线| 护士张开腿被奷日出白浆| 亚洲欧洲日产国码久在线| 少妇伦子伦情品无吗| 午夜性爽视频男人的天堂| 国精品无码人妻一区二区三区| 国产精品亚洲欧美大片在线看| 国产一区二区丰满熟女人妻| 婷婷国产亚洲性色av网站| 97成人碰碰久久人人超级碰oo| 视频一区二区三区自拍偷拍| 亚洲精品中文字幕一区二| 亚洲更新最快无码视频| 99精品国产中文字幕| 国产AV影片麻豆精品传媒| 国产精品中文av专线| 豆国产97在线 | 亚洲| 精品日韩色国产在线观看| 亚洲精中文字幕二区三区| 亚洲区综合区小说区激情区| 久久香蕉国产线看观看怡红院妓院| 亚洲最大福利视频网| 在线 欧美 中文 亚洲 精品| 国产乱xxxxx97国语对白| 久久精品国产91精品亚洲| 亚洲精品免费一二三区| 一区二区三区四区五区自拍| 中文国产不卡一区二区| 免费观看全黄做爰大片| 99RE6在线观看国产精品| 布尔津县| 99国产午夜福利在线观看| av小次郎网站| 国产av人人夜夜澡人人爽麻豆| 久久av色欲av久久蜜桃网| 国产亚洲精品第一综合麻豆| 亚洲天堂激情av在线| 亚洲国产精品久久久天堂麻豆宅男| 亚洲综合精品中文字幕| 一区二区和激情视频|