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

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>
            亚洲国产精品成人综合色在线婷婷| 欧美国产精品v| 亚洲视频精品| 国产伦精品一区二区三区照片91 | 欧美精品v日韩精品v韩国精品v | 欧美精品一区在线播放| 99精品久久| 一区二区三区视频在线| 国产精品久久久久久福利一牛影视 | 欧美日韩在线一区二区| 亚洲欧美日韩中文视频| 欧美一区二区三区视频免费| 在线观看日韩专区| 亚洲国产影院| 国产精品丝袜久久久久久app| 久久九九免费| 欧美高清视频一二三区| 亚洲欧美日韩人成在线播放| 久久成人在线| 中文成人激情娱乐网| 欧美在线啊v一区| 最新成人av在线| 亚洲一区二区三区免费观看| 亚洲国产天堂久久综合网| 99国产欧美久久久精品| 国产视频在线观看一区二区| 亚洲高清自拍| 国产偷久久久精品专区| 亚洲精品欧美日韩专区| 黑人操亚洲美女惩罚| 日韩视频在线观看国产| 禁断一区二区三区在线| 夜夜精品视频| 亚洲成人资源网| 亚洲免费视频网站| 夜夜嗨av色综合久久久综合网| 久久av在线| 午夜精品久久久久久久久| 欧美粗暴jizz性欧美20| 久久男女视频| 国产精品免费一区二区三区观看| 亚洲国产清纯| 在线观看av不卡| 亚洲欧美日韩视频二区| 亚洲精品自在久久| 老牛影视一区二区三区| 久久精品网址| 国产精品久久久久久久久久直播| 亚洲福利在线视频| 一区精品在线| 欧美在线观看视频在线| 欧美一区高清| 国产精品久久久久久影视| 亚洲精品美女| 亚洲六月丁香色婷婷综合久久| 久久久久国产精品一区| 久久久亚洲精品一区二区三区| 国产模特精品视频久久久久| 亚洲午夜在线| 亚洲自拍电影| 国产精品美女久久久| 亚洲小视频在线观看| 亚洲免费在线视频| 国产精品成人aaaaa网站| 日韩视频免费观看高清完整版| 亚洲美女精品久久| 欧美精品在线免费| 日韩视频免费大全中文字幕| 亚洲视频在线观看免费| 欧美日韩国产专区| 亚洲色图在线视频| 欧美一级久久| 国产主播一区二区三区四区| 久久激情视频久久| 久久免费少妇高潮久久精品99| 激情五月婷婷综合| 久久综合亚洲社区| 亚洲激情小视频| 亚洲一区二区三区乱码aⅴ| 欧美午夜宅男影院| 亚洲尤物在线视频观看| 久久婷婷国产综合国色天香| 亚洲激情女人| 欧美日韩国语| 午夜精品一区二区三区在线| 欧美有码在线视频| 激情一区二区三区| 欧美黑人一区二区三区| 亚洲愉拍自拍另类高清精品| 久久综合网络一区二区| 日韩视频欧美视频| 国产精品网站一区| 美女露胸一区二区三区| 宅男噜噜噜66一区二区| 久久婷婷国产综合国色天香| 99国内精品| 国产免费成人在线视频| 久久综合影音| 在线视频你懂得一区| 欧美成人一区二区| 午夜精品福利在线观看| 亚洲国产精品美女| 国产精品香蕉在线观看| 欧美电影免费观看| 午夜精品久久久久久久99樱桃| 亚洲国产精品福利| 欧美一区免费| 夜夜精品视频| 一区二区三区在线看| 国产精品久久久免费| 久久综合久色欧美综合狠狠| 亚洲综合色婷婷| 亚洲伦伦在线| 欧美成人一区二区| 久久久国产精品亚洲一区 | 榴莲视频成人在线观看| 一个色综合av| 怡红院精品视频| 国产精品一区二区男女羞羞无遮挡| 欧美chengren| 欧美综合二区| 亚洲自拍偷拍色片视频| 99国产麻豆精品| 亚洲国产另类 国产精品国产免费| 久久久久久91香蕉国产| 午夜精品久久久久久久白皮肤 | 在线亚洲美日韩| 亚洲国产欧美日韩| 国产又爽又黄的激情精品视频| 国产精品高清在线| 欧美日韩国产一区精品一区| 欧美成年人视频| 久久久久久久综合色一本| 亚洲欧美日韩一区在线| 亚洲一区精品视频| 一本色道久久88亚洲综合88| 亚洲每日更新| 最新中文字幕亚洲| 亚洲高清三级视频| 欧美华人在线视频| 欧美va亚洲va香蕉在线| 欧美顶级艳妇交换群宴| 欧美大胆a视频| 欧美激情乱人伦| 亚洲人成7777| 99xxxx成人网| 亚洲图片激情小说| 午夜精品美女久久久久av福利| 香蕉av福利精品导航| 亚久久调教视频| 久久国产精品亚洲va麻豆| 久久久噜噜噜久久| 美脚丝袜一区二区三区在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎 | 一本一本久久a久久精品综合麻豆| 亚洲肉体裸体xxxx137| 日韩视频一区二区三区在线播放免费观看 | 亚洲免费观看高清在线观看| 亚洲精品自在久久| 一区二区三区久久久| 亚洲免费视频在线观看| 久久福利资源站| 欧美成人在线免费视频| 欧美日韩亚洲另类| 国产精品久久久久久久久免费樱桃| 国产精品一区久久久久| 一区二区亚洲精品| 99精品视频免费在线观看| 亚洲欧美日韩区| 欧美chengren| 99精品视频免费全部在线| 小黄鸭视频精品导航| 免费一级欧美片在线观看| 欧美日韩理论| 国产一区二区三区在线观看免费视频| 亚洲高清不卡在线| 午夜精品久久久久久99热软件| 快射av在线播放一区| 夜夜爽av福利精品导航| 久久久国产精品一区二区三区| 欧美国产成人在线| 国产日韩成人精品| 99国产精品| 久久久久久久一区二区| 亚洲美女在线一区| 久久久久久久网| 国产精品久久久久三级| 亚洲国产毛片完整版| 久久精品国产精品亚洲精品| 亚洲国产影院| 久久久亚洲高清| 国产精品综合视频| 亚洲最快最全在线视频| 久热爱精品视频线路一| 亚洲午夜三级在线| 欧美精品一区二区在线播放| 激情久久五月天| 欧美在线三区| 一二三区精品福利视频| 欧美国产欧美综合|