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

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

Posted on 2009-11-12 21:45 rikisand 閱讀(309) 評論(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>
            一本到12不卡视频在线dvd| 136国产福利精品导航网址应用| 亚洲一区二区三区在线观看视频 | 亚洲精品日韩欧美| 欧美国产日韩一区| 欧美黄色成人网| 日韩天堂av| 亚洲裸体视频| 欧美午夜精品久久久久久人妖| 亚洲小视频在线观看| 亚洲综合三区| 国产在线不卡精品| 美女视频黄a大片欧美| 免费在线成人av| 亚洲网站在线看| 欧美一区亚洲二区| 亚洲高清不卡一区| 99热精品在线| 国内偷自视频区视频综合| 欧美国产精品久久| 国产精品分类| 男女视频一区二区| 欧美日韩午夜精品| 麻豆精品精品国产自在97香蕉| 欧美福利一区| 久久国产欧美日韩精品| 蜜桃av一区二区三区| 亚洲欧美激情一区二区| 久久精品国产亚洲精品| aa亚洲婷婷| 久久狠狠久久综合桃花| 99re8这里有精品热视频免费| 亚洲综合日本| 日韩视频中文字幕| 久久黄金**| 亚洲欧美日韩一区在线观看| 另类尿喷潮videofree | 在线观看视频欧美| 日韩一区二区精品在线观看| 精品69视频一区二区三区| 日韩视频二区| 亚洲人成久久| 久久精品日产第一区二区| 亚洲欧美www| 欧美国产视频日韩| 欧美成年人视频网站| 国产深夜精品福利| 99在线精品视频在线观看| 亚洲国产精品电影在线观看| 先锋影音国产一区| 在线视频精品一| 欧美91福利在线观看| 久久在线视频在线| 国产一区二区三区自拍 | 久久成人资源| 欧美日韩国产一中文字不卡 | 宅男精品视频| 欧美大片一区二区| 免费欧美在线| 一区视频在线看| 欧美中文字幕精品| 欧美中文在线观看| 国产亚洲成年网址在线观看| 亚洲在线视频观看| 欧美亚洲日本一区| 国产九九视频一区二区三区| 亚洲少妇最新在线视频| 亚洲一区二区三区在线看| 欧美人与禽猛交乱配视频| 91久久久久久久久久久久久| 91久久精品美女| 欧美jizz19性欧美| 亚洲激情国产精品| 9久re热视频在线精品| 欧美日韩视频一区二区三区| 亚洲精品久久嫩草网站秘色| 一区二区三区高清视频在线观看| 欧美日韩ab| 在线亚洲激情| 久久经典综合| 1024国产精品| 欧美理论片在线观看| 中文一区字幕| 久久色在线观看| 亚洲激情一区二区| 欧美日韩成人综合| 亚洲综合久久久久| 理论片一区二区在线| 亚洲精品美女在线观看播放| 欧美日韩一区二区国产| 亚洲欧美韩国| 欧美激情视频在线播放| 亚洲一区二区三区777| 国产女人水真多18毛片18精品视频| 欧美在线免费一级片| 亚洲福利免费| 午夜精品偷拍| 亚洲高清精品中出| 国产精品老女人精品视频| 久久爱另类一区二区小说| 91久久精品久久国产性色也91| 亚洲免费视频在线观看| 精品999久久久| 欧美日韩国产一区精品一区| 欧美一区网站| 亚洲乱码国产乱码精品精天堂 | 亚洲激情校园春色| 国产精品久久久久久久久久尿| 久久精品国产欧美激情| 亚洲精品免费一区二区三区| 久久久九九九九| 日韩亚洲欧美成人| 国内精品久久久久国产盗摄免费观看完整版| 久久久久久欧美| 亚洲一区二区三区四区在线观看 | 欧美国产第二页| 欧美亚洲日本网站| 日韩特黄影片| 在线看成人片| 国产日韩欧美在线观看| 欧美视频在线看| 麻豆国产精品777777在线| 亚洲欧美日韩第一区| 亚洲美女精品久久| 欧美国产亚洲精品久久久8v| 久久九九热re6这里有精品| 在线亚洲高清视频| 亚洲欧洲一区| 影院欧美亚洲| 国语自产精品视频在线看抢先版结局 | 91久久久久久国产精品| 久久激情一区| 亚洲欧洲av一区二区| 中文亚洲欧美| 一本在线高清不卡dvd| 亚洲国产日韩一区| 在线观看欧美日韩国产| 国产午夜精品理论片a级大结局| 欧美成年人视频| 久久午夜av| 美国十次成人| 老司机aⅴ在线精品导航| 久久久久久久久伊人| 久久久久久一区二区三区| 久久精品国产久精国产思思| 小嫩嫩精品导航| 久久大逼视频| 久久精品夜色噜噜亚洲aⅴ| 欧美呦呦网站| 久久久精品免费视频| 久久久久亚洲综合| 久久综合电影| 欧美电影打屁股sp| 欧美日韩国产另类不卡| 欧美视频不卡| 国产欧美日韩麻豆91| 国产精品亚洲аv天堂网| 国产视频丨精品|在线观看| 国产无一区二区| 激情欧美一区二区三区在线观看 | 你懂的视频欧美| 欧美成人一区二区| 欧美日韩亚洲一区二区三区| 国产精品www网站| 国产欧美精品日韩区二区麻豆天美| 国产热re99久久6国产精品| 一区二区三区亚洲| 最新国产乱人伦偷精品免费网站| 日韩亚洲欧美一区二区三区| 亚洲视频一区二区| 久久精品一级爱片| 欧美高清免费| 一区二区三区波多野结衣在线观看| 亚洲一区二区三区在线视频| 久久久久国产精品一区| 欧美成人午夜激情在线| 国产精品xnxxcom| 国产一区二区三区久久久| 亚洲国产专区校园欧美| 亚洲愉拍自拍另类高清精品| 久久精品人人爽| 亚洲激情电影在线| 亚洲欧美日韩在线观看a三区| 噜噜噜91成人网| 欧美偷拍另类| 亚洲高清久久| 欧美一区二区日韩| 欧美国产综合| 欧美一区二区成人| 欧美日韩国产精品专区| 在线观看欧美精品| 午夜精品偷拍| 亚洲精品自在久久| 久久久99免费视频| 国产精品视频免费在线观看| 亚洲精品欧美日韩| 久久人人爽人人爽爽久久| 在线午夜精品| 欧美另类高清视频在线| 亚洲第一区在线|