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

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

Posted on 2009-11-12 21:45 rikisand 閱讀(310) 評論(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>
            亚洲欧洲精品一区二区三区不卡 | 9i看片成人免费高清| 久久香蕉国产线看观看av| 伊人久久婷婷色综合98网| 嫩草国产精品入口| 欧美国产91| 亚洲影视综合| 欧美一区二区精品久久911| 国产一二精品视频| 另类天堂av| 欧美大片网址| 亚洲直播在线一区| 欧美一区二区视频在线观看2020| 国内成人精品一区| 亚洲国内自拍| 国产精品免费一区豆花| 久久久噜噜噜久久中文字免| 蜜臀久久99精品久久久久久9 | 一区二区三区在线看| 亚洲国产美女久久久久| 欧美性色综合| 乱码第一页成人| 欧美日韩亚洲在线| 久久免费精品视频| 欧美日韩国产成人| 久久久中精品2020中文| 欧美精彩视频一区二区三区| 欧美亚洲综合在线| 欧美sm视频| 久久黄色级2电影| 欧美精品久久99| 久久精品视频免费播放| 欧美精品亚洲精品| 久久日韩精品| 国产精品久久久久久久久果冻传媒| 老鸭窝亚洲一区二区三区| 欧美色网一区二区| 亚洲高清一区二| 国内精品美女在线观看| 一本大道av伊人久久综合| 亚洲国产人成综合网站| 欧美有码在线观看视频| 亚洲主播在线观看| 欧美高清视频一区| 欧美成人精品福利| 狠狠色丁香久久综合频道| 在线亚洲观看| 一本色道久久综合精品竹菊| 久久蜜桃资源一区二区老牛| 久久av红桃一区二区小说| 欧美日韩视频在线| 亚洲精品1区2区| 亚洲国产日韩欧美在线99| 欧美影院午夜播放| 欧美一区二视频在线免费观看| 欧美精品www| 亚洲国产一区二区三区a毛片| 黑人巨大精品欧美一区二区小视频| 亚洲一区二区三区久久| 中文日韩电影网站| 欧美精品免费在线| 亚洲国产午夜| 日韩视频三区| 欧美日韩国产成人在线观看| 亚洲大胆av| 亚洲巨乳在线| 欧美理论电影网| 亚洲精品一区中文| 亚洲一卡二卡三卡四卡五卡| 欧美少妇一区二区| 中文欧美日韩| 久久精品国产69国产精品亚洲| 国产欧美综合在线| 欧美在线free| 免费欧美在线| 亚洲精品日韩在线| 欧美日韩亚洲国产精品| 一区二区日本视频| 久久国内精品视频| 在线免费一区三区| 欧美国产精品v| 一本大道久久a久久综合婷婷| 中文无字幕一区二区三区| 国产精品九色蝌蚪自拍| 性色av香蕉一区二区| 欧美成人蜜桃| 一区二区电影免费观看| 国产精品高潮呻吟久久av黑人| 亚洲欧美另类国产| 模特精品在线| 亚洲午夜国产成人av电影男同| 国产精品高潮视频| 久久精品国产清高在天天线 | 91久久精品一区二区别| 欧美区在线播放| 亚洲尤物在线| 免费人成精品欧美精品| av不卡在线看| 国产偷国产偷精品高清尤物| 久久夜色精品国产| 一区二区三区国产盗摄| 久久视频在线看| 一区二区91| 激情综合色综合久久| 欧美精品福利视频| 欧美在线视频免费观看| 亚洲国产精品一区| 久久精品91久久久久久再现| 91久久精品一区| 国产色综合网| 欧美日韩一区二区在线| 久久久久久国产精品mv| 亚洲视频网在线直播| 亚洲大片av| 久久人人爽国产| 亚洲欧美国内爽妇网| 亚洲国产裸拍裸体视频在线观看乱了中文 | 国产一二三精品| 免费不卡中文字幕视频| 亚洲欧美精品中文字幕在线| 亚洲国产另类久久精品| 久久成人精品电影| 一区二区免费在线播放| 在线免费观看视频一区| 国产精品一区二区在线观看| 欧美经典一区二区三区| 亚洲女人天堂av| 一本久久综合亚洲鲁鲁五月天| 久久久夜夜夜| 久久国产夜色精品鲁鲁99| 亚洲午夜视频| aa级大片欧美三级| 亚洲人成网站色ww在线 | 黄色成人免费网站| 国产人成一区二区三区影院| 欧美日韩久久精品| 欧美国产欧美综合 | 久久久久国产精品一区二区| 亚洲欧美另类国产| 亚洲一区二区在线视频| 一区二区毛片| 在线亚洲观看| 亚洲一区二区三区在线视频| 一个人看的www久久| 日韩一区二区精品视频| 日韩亚洲在线观看| 99精品久久久| 夜夜嗨av一区二区三区中文字幕| 亚洲欧洲日韩在线| 洋洋av久久久久久久一区| 亚洲乱码国产乱码精品精可以看| 亚洲三级免费电影| 一本色道久久综合亚洲精品小说| 99综合电影在线视频| 一区二区三区日韩精品| 亚洲男人的天堂在线观看| 亚洲欧美日韩在线| 久久久欧美精品| 欧美成人a视频| 欧美日韩一区二区三区在线看 | 免费久久精品视频| 欧美激情在线观看| 国产精品国产自产拍高清av| 国产精品羞羞答答xxdd| 国内成+人亚洲| 亚洲精品一级| 亚洲欧美日本另类| 久久青草久久| 亚洲精品久久久久久一区二区| 99re热这里只有精品视频| 亚洲自拍另类| 久久色在线播放| 国产精品99一区| 激情综合网激情| 一区二区av在线| 久久久无码精品亚洲日韩按摩| 欧美黄色片免费观看| 一区二区三区精品视频在线观看| 香蕉成人啪国产精品视频综合网| 久久综合伊人77777尤物| 欧美日韩直播| 在线看片成人| 午夜在线视频一区二区区别| 麻豆国产精品va在线观看不卡| 亚洲精品美女久久7777777| 欧美一区91| 欧美日韩情趣电影| 激情久久久久久久久久久久久久久久| 亚洲欧洲午夜| 久久人人九九| 亚洲色图综合久久| 欧美成人精品不卡视频在线观看 | 美日韩丰满少妇在线观看| 国产精品高清在线观看| 在线精品视频在线观看高清 | 国产一在线精品一区在线观看| 亚洲免费电影在线观看| 久久久久久夜| 亚洲女ⅴideoshd黑人| 欧美日韩喷水|