青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

TC-srm249-Tableseat-DP-狀態排列

Posted on 2009-11-12 21:45 rikisand 閱讀(301) 評論(0)  編輯 收藏 引用 所屬分類: TopcoderAlgorithm

Your restaurant has numTables tables to seat customers. The tables are all arranged in a line. If a large party of customers comes in, a group of adjacent tables will be used. Which group of tables is entirely up to the customer. Since you cannot predict this, assume all possible choices occur with equal probability. What you can predict is the size of each group of customers that arrives. Element i of probs gives the probability, in percent, that an entering party will need i+1 tables. Assuming nobody leaves, return the expected number of tables you will use before a party must be turned away. This only occurs if there is no place to seat them.

Method signature:
double getExpected(int numTables, vector <int> probs)

numTables will be between 1 and 12 inclusive.
probs will contain between 1 and 12 elements inclusive.
Each element of probs will be between 0 and 100 inclusive.
The elements of probs will sum to 100.

 

misof 數字表達教程里的習題~ 題目大意 求使用桌子的期望。由于到來group的個數不定,每個group需要的桌子不定,使確定期望變得困難。但考慮對于numTables來說,使用桌子的狀態僅僅有 2^numTables種,因此考慮在這些狀態改變的過程中來計算期望,也就是計算在每個狀態下面的期望桌子數目。在每個狀態到達時,依次考慮來了一個group需要k個位子,如果r種安排可以滿足k個位子,那么當前狀態的期望值要加上 來k個位子的概率 X (r種安排分別的期望和 / r) 其中求r中安排期望和則需要 遞歸調用函數。顯然利用memo可以減少重復計算于是有下面的解法:

vector<double> p;
double dp[1<<13];   
int tb;
double solve(int cur){
    if(dp[cur]>-1.0)return dp[cur];    //memo available
    double ret=0;double sum;int kind;
    for(int i=0;i<p.size();i++){
        sum=0,kind=0;
        int mask=(1<<(i+1))-1;    //new group need i+1 adjacent tables
        for(int j=0;j+i+1<=tb;j++){
            if((cur&(mask<<j))==0){    //current pattern could meet the need
                sum+=solve(cur+(mask<<j))+i+1;    //total method ++
                kind++;
            }
        }
        if(kind!=0)sum/=kind; //caculate the average need
        ret+=sum*p[i];
    }
    dp[cur]=ret;
    return ret;
}

        double getExpected(int numTables, vector <int> probs)
        {
                tb=numTables;
                REP(i,1<<13)dp[i]=-1.0;
                p.resize(probs.size());
                for(int i=0;i<probs.size();i++)p[i]=probs[i]*0.01;
                return solve(0);//the beginning pattern
        }

看比賽中有另一種解法,即根據題目,在到達每次fail to serve a group 的時候 根據此時的桌子數量,和到達這種狀態的概率 來計算:

dp[1<<13][15];memset(dp,0,sizeof(dp));// :D lucily I can do this for 0

double fails=0.0;bool flag ;

for(int i=1;i<=numTables+1;i++)  //循環最多numTables+1 次

{flag=true;

for(int j=0;j<p.size();j++){

     int mask=(1<<(j+1))-1;//注意移位運算符的優先級低,注意加括號

     for(int k=0;k<=(1<<numTables-1);k++){

          if(dp[k][i-1]<=0.0)continue;

          flag=false;

          int cnt=0;

          for(int m=0;m+j+1<=numTables;m++) if((mask<<m)&k==0)cnt++;

          if(cnt)for(int m=0;m+j+1<=numTables;m++)if((mask<<m)&k==0)dp[mask<<m|k][i]+=dp[k][i-1]*p[j]/cnt;

          if(!cnt){

                 int b=k,bn=0;while(b){if(b&1)bn++;b>>=1;}

                 fail+=dp[k][i-1]*bn; 

         }

    }

}

if(flag)return fail;//all dp[][k]==0.0

}

return fail;

 

優先級很容易錯:

http://www.cppreference.com/wiki/operator_precedence~。~

典型的幾個

++ -- <post-incre-decre>

~ <bitwise complement> !<not>&<addresss> *<dereference>&<address>

*  / %

+ -

>>  <<

< <= > >=

== !=

&

^ xor

|

&&

||

?=

= += –= <<= >>=

,

 

從上到下依次降低~~~~~~~~~~~~~~~~~~··

 

 

 

 

 

 

 

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲作爱视频| 伊人久久综合97精品| 亚洲国产精品成人久久综合一区| 中文在线一区| 欧美诱惑福利视频| 国产亚洲女人久久久久毛片| 午夜精品福利视频| 久久精品国产久精国产思思| 韩日欧美一区二区| 欧美a级片一区| a4yy欧美一区二区三区| 亚洲美女视频在线观看| 午夜一区不卡| 99热精品在线| 亚洲欧美国产制服动漫| 国产三区二区一区久久| 久久久伊人欧美| 亚洲日本电影在线| 午夜亚洲福利| 欧美高清在线一区二区| 亚洲一卡久久| 国内视频精品| 欧美日韩在线观看一区二区| 性久久久久久久| 久久全球大尺度高清视频| 日韩亚洲视频在线| 午夜精品国产更新| 免费观看成人网| 国产精品天天摸av网| 欧美日韩国产综合在线| 久久久综合激的五月天| 欧美精品久久久久久久免费观看| 亚洲欧美日韩一区二区三区在线| 久久婷婷国产综合尤物精品| 欧美经典一区二区| 国产主播精品| 亚洲自拍电影| 亚洲午夜精品一区二区| 久久久亚洲人| 亚洲欧美激情精品一区二区| 久久久久免费视频| 一区二区三区产品免费精品久久75| 欧美护士18xxxxhd| 免费在线日韩av| 久久激情网站| 亚洲美女黄色| 99精品视频免费观看视频| 久久久久网站| 国产亚洲精品资源在线26u| 一本色道久久88精品综合| 亚洲精品小视频在线观看| 激情av一区| 亚洲国产高清一区| 久久都是精品| 老司机午夜精品视频在线观看| 欧美一区二区三区免费大片| 欧美激情在线观看| 另类春色校园亚洲| 欧美极品一区| 在线观看一区欧美| 99热免费精品| 亚洲欧美日韩一区在线观看| 亚洲电影激情视频网站| 美女成人午夜| 欧美黄在线观看| 久久成人综合视频| 欧美xx视频| 在线日韩av| 在线看一区二区| 久久三级福利| 久久精品论坛| 欧美精品一区视频| 国产精品五区| 欧美一区二区女人| 性欧美在线看片a免费观看| 国产女主播视频一区二区| 亚洲电影免费观看高清完整版| 久久久久国色av免费观看性色| 免费看黄裸体一级大秀欧美| 久久国产主播| 亚洲成色999久久网站| 欧美国产综合一区二区| 欧美人与性动交cc0o| 亚洲一区二区三区中文字幕在线| 亚洲午夜激情| 久久综合成人精品亚洲另类欧美| 亚洲电影一级黄| 亚洲激情午夜| 久久久久久久97| 亚洲黄色免费电影| 久久久国产成人精品| 久久久国产成人精品| 亚洲精品一二三| 在线视频中文亚洲| 国内一区二区三区在线视频| 亚洲国产精品国自产拍av秋霞| 新狼窝色av性久久久久久| 国产自产精品| 亚洲日本一区二区三区| 国产精品美女999| 亚洲精品国产精品国自产观看 | 亚洲在线一区二区| 欧美在线免费看| 国产精品视频午夜| 狼人社综合社区| 欧美日韩一区在线播放| 久久午夜视频| 久久精品九九| 亚洲最新色图| 久久久午夜电影| 性做久久久久久久久| 欧美国产精品| 亚洲国产日韩在线| 亚洲一区激情| 国产精品一级在线| 香港久久久电影| 免费在线一区二区| 久久亚洲综合网| 国产精品乱码一区二三区小蝌蚪 | 亚洲国产欧美日韩另类综合| 一本色道久久88精品综合| 伊人久久男人天堂| 性欧美精品高清| 午夜精品短视频| 午夜精品久久一牛影视| 日韩写真在线| 久久免费视频一区| 亚洲免费在线| 国产精品久久久久久久久免费樱桃| 久久久另类综合| 国产精品一区久久久| 夜夜嗨av一区二区三区网站四季av| 在线日韩中文字幕| 久久久久成人网| 可以免费看不卡的av网站| 国产视频久久久久| 午夜精品久久久久久99热| 亚洲欧美日韩综合一区| 欧美视频一区二区三区四区| 亚洲欧美三级伦理| 欧美性事免费在线观看| 欧美一区二区女人| 国产精品推荐精品| 亚洲欧美综合国产精品一区| 午夜在线成人av| 国产精品永久在线| 欧美永久精品| 欧美成人嫩草网站| 日韩视频一区| 欧美一区久久| 日韩亚洲精品在线| 欧美极品影院| 亚洲免费观看视频| 午夜精品福利一区二区蜜股av| 国产精品男女猛烈高潮激情 | 女同性一区二区三区人了人一| 免费中文字幕日韩欧美| 亚洲精品日本| 欧美性片在线观看| 欧美伊人久久久久久午夜久久久久 | 亚洲欧美不卡| 国产精品香蕉在线观看| 亚欧成人精品| 亚洲第一综合天堂另类专| 亚洲精品一线二线三线无人区| 欧美黑人多人双交| 国产精品99久久久久久久vr | 国产麻豆视频精品| 美女国产精品| 久久精品国产清高在天天线| 国产一区二区三区日韩| 美女黄网久久| 亚洲天堂黄色| 欧美高清在线视频| 性久久久久久久久| 亚洲免费高清| 好看不卡的中文字幕| 欧美连裤袜在线视频| 亚洲欧美精品中文字幕在线| 欧美本精品男人aⅴ天堂| 亚洲一区免费观看| 在线观看av一区| 国产精品亚洲第一区在线暖暖韩国| 久久精品国产2020观看福利| 亚洲国产清纯| 亚洲一区国产视频| 欧美激情综合| 久久精品人人做人人爽| 亚洲精品一区在线观看香蕉| 国产日韩精品入口| 欧美日韩精品免费看 | 性欧美1819性猛交| 亚洲毛片在线免费观看| 噜噜噜91成人网| 午夜精品短视频| 亚洲视频图片小说| 欧美日韩在线播放| 久热精品在线视频| 先锋资源久久| 中文一区二区在线观看|