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

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>
            另类酷文…触手系列精品集v1小说| 一本色道久久综合狠狠躁篇怎么玩 | 亚洲综合色噜噜狠狠| 欧美日韩亚洲不卡| 亚洲欧美日韩另类| 香蕉久久夜色| 亚洲精品日韩激情在线电影| 日韩一区二区精品| 国产一区二区三区在线观看视频 | 久久天堂成人| 日韩视频免费观看| 亚洲免费一区二区| 亚洲欧洲在线观看| 亚洲一区二区三区成人在线视频精品| 激情亚洲网站| 亚洲视频大全| 亚洲精品一二区| 欧美一区二区三区在线观看视频| 亚洲理论电影网| 久久精品亚洲一区二区三区浴池| 亚洲视频专区在线| 老司机一区二区三区| 亚洲在线国产日韩欧美| 欧美不卡在线视频| 久久先锋资源| 国产精品一区二区在线观看不卡 | 最新亚洲视频| 久久手机精品视频| 欧美日韩亚洲综合一区| 久久久噜噜噜久久中文字幕色伊伊 | 国产欧美亚洲一区| 亚洲人成高清| 国产亚洲日本欧美韩国| 亚洲美洲欧洲综合国产一区| 在线高清一区| 性娇小13――14欧美| 亚洲综合色在线| 欧美日韩爆操| 亚洲国产一区二区三区在线播| 国产亚洲欧美日韩一区二区| 亚洲视频免费观看| 洋洋av久久久久久久一区| 美女黄毛**国产精品啪啪| 久久久人成影片一区二区三区 | 国产精品成人一区二区三区吃奶| 国产精品久久久久久久久久久久久久 | 久久久青草青青国产亚洲免观| 激情小说另类小说亚洲欧美| 欧美日韩亚洲一区二区三区在线观看| 久久精品国产亚洲一区二区| 久久手机免费观看| 久久久久99| 国产精品一区久久| 亚洲在线观看视频| 亚洲欧美成人网| 国产精品免费看片| 亚洲欧美日韩精品久久久久| 午夜精品在线视频| 国产精品久久久久一区| 亚洲校园激情| 久久精品视频在线| 黑人一区二区| 另类激情亚洲| 亚洲国产日韩欧美一区二区三区| 亚洲国产综合在线看不卡| 久久综合久久88| 亚洲激情一区| 亚洲一品av免费观看| 国产精品v欧美精品v日韩| 亚洲婷婷在线| 午夜在线观看免费一区| 国产午夜精品一区理论片飘花| 欧美一区2区三区4区公司二百| 美女日韩在线中文字幕| 91久久精品国产91久久| 欧美激情视频一区二区三区免费 | 国产精品日韩在线观看| 亚洲欧美视频一区二区三区| 久久综合狠狠| 亚洲剧情一区二区| 国产精品午夜国产小视频| 国产精品久久久对白| 韩日视频一区| 久久夜色精品国产欧美乱极品| 欧美大片国产精品| 亚洲免费电影在线| 国产精品多人| 久久性色av| 亚洲最新中文字幕| 久久久久久久一区二区三区| 亚洲精品五月天| 欧美激情视频一区二区三区免费 | 美女免费视频一区| 久久影音先锋| 国产精品入口福利| 最新国产拍偷乱拍精品| 久久成人精品无人区| 欧美日韩国产一区二区| 亚洲第一在线| 91久久精品网| 欧美影院精品一区| 亚洲国产女人aaa毛片在线| 欧美午夜精品一区二区三区| 久久久亚洲综合| 亚洲视频在线观看免费| 美国成人直播| 亚洲在线观看视频| 亚洲国产视频一区二区| 国产精自产拍久久久久久| 蜜臀久久久99精品久久久久久| 亚洲婷婷综合久久一本伊一区| 欧美电影免费观看| 欧美在线视频网站| 一区二区三区av| 亚洲国产清纯| 欧美大片一区二区| 亚洲一区二区三区在线看| 亚洲国产高清自拍| 久久久人成影片一区二区三区| 亚洲欧美精品| 99国产精品久久| 亚洲第一黄网| 国产曰批免费观看久久久| 国产精品99免视看9| 欧美好吊妞视频| 麻豆视频一区二区| 久久久91精品国产一区二区精品| 亚洲午夜性刺激影院| 日韩一级片网址| 最新国产乱人伦偷精品免费网站| 牛夜精品久久久久久久99黑人| 久久久xxx| 久久九九久久九九| 午夜精品亚洲| 欧美一级大片在线观看| 亚洲香蕉网站| 在线亚洲免费视频| 亚洲国产精品福利| 亚洲大片精品永久免费| 一区二区在线免费观看| 今天的高清视频免费播放成人| 国产在线欧美| 一区免费在线| 在线观看一区二区精品视频| 亚洲成人在线免费| 久久综合久色欧美综合狠狠| 欧美精品亚洲二区| 欧美一二三区精品| 欧美日韩在线另类| 欧美高清日韩| 精品9999| 久久精品人人做人人爽电影蜜月| 一区二区三区四区五区精品| 久久婷婷麻豆| 久久久午夜视频| 国产一区视频网站| 国产日韩精品入口| 国户精品久久久久久久久久久不卡| 国产亚洲毛片在线| 在线播放豆国产99亚洲| 欧美福利精品| 欧美日韩国产色视频| 欧美日韩专区在线| 国产精品夜夜夜一区二区三区尤| 国产拍揄自揄精品视频麻豆| 国产亚洲欧美中文| 亚洲国产日韩欧美| 亚洲视频观看| 久久精品99国产精品| 欧美.www| 一二三区精品福利视频| 欧美一区二区三区免费视频| 久久综合色影院| 欧美人妖在线观看| 国产欧美一区二区色老头| 亚洲成人资源网| 99re热精品| 久久9热精品视频| 亚洲国产精品99久久久久久久久| 一本久久综合亚洲鲁鲁五月天| 性欧美大战久久久久久久免费观看 | 欧美综合二区| 欧美大片网址| 国产欧美一区二区视频| 亚洲欧洲三级| 欧美一级二级三级蜜桃| 欧美激情一区二区三区四区| 亚洲一区二区成人在线观看| 久久久亚洲国产美女国产盗摄| 欧美日韩一区二区三区免费看| 国产一区二区三区在线免费观看| 99国产精品视频免费观看一公开| 欧美中文字幕视频| 欧美成人免费一级人片100| 中文av字幕一区| 麻豆av一区二区三区| 国产伦精品一区二区三区视频孕妇| 国产日韩欧美综合精品| 国产精品永久免费观看| 精品成人免费|