• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            fzu 2006 Farm Game(The 35th ACM/ICPC Asia Regional Fuzhou Site) DAG上的DP

            題意:
            給出一個(gè)DAG,每個(gè)點(diǎn)上有一定的價(jià)值p和數(shù)量w,給出一些轉(zhuǎn)換關(guān)系:ai-1 ai bi ,即ai-1可以?xún)稉Q成bi單位ai ,然后問(wèn)這些點(diǎn)的最大價(jià)值。
            解法:
            由于是DAG,可以用DP來(lái)解,dp[pos]=max{p[pos],dp[k]*rate[pos][k]},g[pos][k]=true
            然后結(jié)果就是sum{dp[i]*w[i]}
            這次第一次參加regional,fzu現(xiàn)場(chǎng)賽時(shí)候各種手殘腦殘,N個(gè)能夠秒的題都沒(méi)去看。甚可惜。。。回來(lái)看了下題目都不是多困難的,做個(gè)5題沒(méi)問(wèn)題的說(shuō)。。。哎,明年再一雪恥辱吧。。
            代碼:
             1# include <cstdio>
             2# include <vector>
             3using namespace std;
             4const int N=10005;
             5struct node
             6{
             7  int nxt;
             8  double rate;
             9  node(int n,double r):nxt(n),rate(r){};
            10}
            ;
            11vector<node> g[N];
            12double p[N],w[N];
            13bool used[N];
            14int n;
            15void solve(int pos)
            16{
            17   if(used[pos]) return;
            18   used[pos]=true;
            19   for(int i=0;i<g[pos].size();i++)
            20   {
            21     solve(g[pos][i].nxt);
            22     if(g[pos][i].rate*p[g[pos][i].nxt]>p[pos]) p[pos]=g[pos][i].rate*p[g[pos][i].nxt];
            23   }

            24}

            25int main()
            26{
            27    while(true)
            28    {
            29      scanf("%d",&n);
            30      if(!n) break;
            31      for(int i=1;i<=n;i++)
            32      {
            33        scanf("%lf%lf",p+i,w+i);
            34        g[i].clear();
            35        used[i]=false;
            36      }

            37      int m;
            38      scanf("%d",&m);
            39      while(m--)
            40      {
            41        int k;
            42        scanf("%d",&k);
            43        int last,now;
            44        scanf("%d",&last);
            45        k--;
            46        while(k--)
            47        {
            48           double r;
            49           scanf("%lf%d",&r,&now);
            50           g[last].push_back(node(now,r));
            51           last=now;
            52        }

            53      }

            54      for(int i=1;i<=n;i++)
            55          solve(i);
            56      double ans=0;
            57      for(int i=1;i<=n;i++)
            58        ans+=p[i]*w[i];
            59      printf("%.2f\n",ans);
            60    }

            61    return 0;
            62}

            63

            posted on 2010-12-07 13:08 yzhw 閱讀(261) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): DPgraph

            <2010年12月>
            2829301234
            567891011
            12131415161718
            19202122232425
            2627282930311
            2345678

            導(dǎo)航

            統(tǒng)計(jì)

            公告

            統(tǒng)計(jì)系統(tǒng)

            留言簿(1)

            隨筆分類(lèi)(227)

            文章分類(lèi)(2)

            OJ

            最新隨筆

            搜索

            積分與排名

            最新評(píng)論

            閱讀排行榜

            国产高潮久久免费观看| 7777久久久国产精品消防器材| 久久亚洲精精品中文字幕| 久久久久AV综合网成人| 精品无码人妻久久久久久| 亚洲午夜久久久久久久久电影网 | 精品久久人人做人人爽综合| 少妇久久久久久被弄到高潮| 色综合久久久久综合体桃花网| 91精品无码久久久久久五月天| 中文字幕精品无码久久久久久3D日动漫 | 久久伊人精品青青草原高清| 中文字幕无码久久人妻| 久久青草国产手机看片福利盒子 | 国产精品永久久久久久久久久| 亚洲愉拍99热成人精品热久久| 久久人人爽人爽人人爽av| 香蕉久久夜色精品国产小说| 久久精品国产亚洲AV香蕉| 亚洲国产精品狼友中文久久久| 亚洲天堂久久精品| 久久久国产精品福利免费 | 中文国产成人精品久久不卡| 久久性生大片免费观看性| 很黄很污的网站久久mimi色| 精品久久久无码人妻中文字幕豆芽| 伊人色综合九久久天天蜜桃| 国产福利电影一区二区三区,免费久久久久久久精 | 久久久久99精品成人片| 久久AAAA片一区二区| 狠狠精品久久久无码中文字幕| 91精品久久久久久无码| 精品久久久久久成人AV| 久久综合精品国产二区无码| 亚洲综合日韩久久成人AV| 久久亚洲国产最新网站| 国产精品一区二区久久精品无码| 久久精品国产亚洲AV无码娇色 | 久久亚洲AV永久无码精品| 久久久久一级精品亚洲国产成人综合AV区 | 日韩一区二区三区视频久久|