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

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

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

      bzoj4753[JSOI2016]最佳團體

      題意:01分數規劃,但可選的數字之間存在森林形的依賴關系(可以認為0號點是個虛根,因為并不能選).

      雖然有森林形的依賴關系,但還是可以套分數規劃的思路,二分答案k,判斷是否存在一個比值大于k的方案

      即是否存在一種選取方式使得sigma{fight[i],i is choosed}/sigma{cost[i],i is choosed}>=k

      移項,發現只需要sigma{fight[i]-cost[i]*k,i is choosed}>=0,也就是把每個點的權值設置成”戰斗力-花費*比值”,判斷是否存在一種滿足依賴關系的選取方案使得選擇的權值之和>=0,那么讓權值之和盡量大判定最大值是否大于等于0即可.定義f[i][j]表示i為根的子樹中選取j個點時的最大權值,用背包暴力轉移,看似是O(n^3)的,但仔細分析發現復雜度是O(n^2)的,因為每次合并一棵子樹時付出的代價是”已經合并的兄弟子樹的大小之和”*”正在合并的這棵子樹的大小”,實質上是樹上每對節點在LCA處貢獻時間復雜度,這一部分相當于bzoj4033.

      于是總體復雜度是O (log(ans)*N^2),n是2500,感覺很虛但是能跑過去…注意處理某棵子樹如果選擇那么子樹的根節點必須選擇,以及0號節點的處理.再有就是二分精度一定要調好.

      #include<cstdio>
      #include<cstring>
      #include<algorithm>
      using namespace std;
      const int maxn=2505;
      struct edge{
        int to,next;
      }lst[maxn];int first[maxn],len=1;
      void addedge(int a,int b){
        lst[len].to=b;lst[len].next=first[a];first[a]=len++;
      }
      int k,n;
      int cost[maxn],fight[maxn],prt[maxn],sz[maxn];
      double w[maxn];
      double f[maxn][maxn];
      void dfs(int x){
        sz[x]=1;
        for(int pt=first[x];pt;pt=lst[pt].next){
          dfs(lst[pt].to);
          sz[x]+=sz[lst[pt].to];
        }
      }
      void dp(int x){
        int tot=0;
        if(x)f[x][1]=w[x],tot=1;
        else f[x][0]=0;
        for(int pt=first[x];pt;pt=lst[pt].next){
          dp(lst[pt].to);tot+=sz[lst[pt].to];
          for(int i=tot;i>=0;--i){
            for(int j=0;j<=sz[lst[pt].to]&&j<=i;++j){
          f[x][i]=max(f[x][i],f[x][i-j]+f[lst[pt].to][j]);
            }
          }
        }
        
      }
      bool check(double ans){
        for(int i=1;i<=n;++i){
          w[i]=fight[i]-ans*cost[i];
        }
        memset(f,0xc2,sizeof(f));
        dp(0);//printf("%.3f\n",f[2][1]);
        return f[0][k]>=0;
      }
      int main(){
        scanf("%d%d",&k,&n);
        for(int i=1;i<=n;++i){
          scanf("%d%d%d",&cost[i],&fight[i],&prt[i]);addedge(prt[i],i);
        }
        dfs(0);
        double l=0,r=1e4;
        while(r-l>1e-5){
          double mid=(l+r)/2;
          if(check(mid))l=mid;
          else r=mid;
        }
        printf("%.3f\n",(r+l)/2);
        return 0;
      }

       

      posted @ 2017-02-14 21:02  liu_runda  閱讀(2637)  評論(3)    收藏  舉報
      偶然想到可以用這樣的字體藏一點想說的話,可是并沒有什么想說的. 現在有了:文化課好難
      主站蜘蛛池模板: 人妻少妇88久久中文字幕| 亚洲成色精品一二三区| 精品一区二区三人妻视频| 久久久亚洲欧洲日产国码aⅴ| 亚洲成人av在线资源网| 亚洲成人av综合一区| 精品久久久久久国产| 美女午夜福利视频一区二区| 国产精品区一区第一页| 欧美性猛交xxxx乱大交极品| 亚洲精品无码在线观看| av日韩在线一区二区三区| 欧美嫩交一区二区三区| 国产麻豆剧果冻传媒一区| 亚洲精品人成网线在播放VA| 莱阳市| 亚洲高潮喷水无码AV电影| 美女无遮挡免费视频网站| 99riav国产精品视频| 日韩精品 在线 国产 丝袜| 成人一区二区三区在线午夜| 乌兰县| 国产熟睡乱子伦视频在线播放| 最新国产AV最新国产在钱| 无码一区二区三区AV免费| 双城市| 国产精品成人午夜久久| 久久精品波多野结衣| 天堂…中文在线最新版在线| 老师扒下内裤让我爽了一夜| 国产午夜亚洲精品不卡网站| 精品免费看国产一区二区| 免费人妻无码不卡中文字幕18禁| 亚洲理论在线A中文字幕| 韩国av无码| 国产亚洲精品成人无码精品网站| 精品一区二区不卡无码AV| 男女性高爱潮免费网站| 国产亚洲欧洲av综合一区二区三区| 久久国产精品不只是精品| 熟妇高潮精品一区二区三区|