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

The Fourth Dimension Space

枯葉北風(fēng)寒,忽然年以殘,念往昔,語(yǔ)默心酸。二十光陰無(wú)一物,韶光賤,寐難安; 不畏形影單,道途阻且慢,哪曲折,如渡飛湍。斬浪劈波酬壯志,同把酒,共言歡! -如夢(mèng)令

9.20上海東華賽區(qū)網(wǎng)絡(luò)賽H題 health (Dp+Dfs+Bit Operation)

Health

 

Unfortunately YY gets ill, but he does not want to go to hospital. His girlfriend LMY gives him N kinds of medicine, which may be helpful. It is not a good idea to take all of them, since taking several different kinds of medicine may cause undesirable side effects. Formally speaking, for each subset S of the N kinds of medicine (excluding the empty set), it has a health value v(S). If YY chooses to take a combination T of the medicines, the final effect to his illness is the sum of health values of all non-empty subsets of T.

YY wants to get healthy as quickly as possible, so the final effect of the medicines he takes should be as great as possible. Of course, YY may choose to take nothing, thus having a zero final effect, if he is too unlucky that all other alternatives he can get are negative…

 

Input

 Input contains multiple test cases.

For each test case, the first line contains a positive integer N (N16), the number of different kinds of medicine YY received from LMY.

The second line contains a single integer M (0M2N).

M lines follow, representing a list of health values.

Each of the M lines contains 2 integers, s (1s<2N) and v (-10000≤v≤10000), indicating a subset of the N kinds of medicine and its health value. Write s in binary representation and add leading zeros if needed to make it exactly N binary digits. If the ith binary digit of s is 1, then the subset it represents includes the ith kind of medicine; otherwise it does not.

It is guaranteed that no two lines of the list describe the same subset. All non-empty subsets that do not appear in the list have health value 0.

Input ends with N=0.

 

Output

 

For each test case, output one line with only one integer, the maximum final effect that can be achieved.

 

Sample Input

2

3

1 10

2 -1

3 100

0

 Sample Output

 109





比賽的時(shí)候,看到這道題過(guò)的人很多,但是自己卻沒(méi)什么思路,非常郁悶,一看題就知道肯定是個(gè)DP,可是究竟怎么動(dòng)態(tài)規(guī)劃呢?想了半天也想不出來(lái),一直卡在這個(gè)題上,后來(lái)有個(gè)同學(xué)提示了我方法,這才明白過(guò)來(lái),原來(lái)這里面還有位運(yùn)算,看來(lái)我平時(shí)缺少位運(yùn)算方面的訓(xùn)練了。。。哎 我還是太水。。。
分析:這個(gè)題的DP思想是把所有1 to 2^n-1的狀態(tài)所對(duì)應(yīng)的健康值都算出來(lái),然后再其中取一個(gè)最大值。我們看看他是如何狀態(tài)轉(zhuǎn)移的:
            假設(shè) n=3  現(xiàn)在考慮 1 1 1(7,從左到右分別是第3,2,1種藥品) 這種狀態(tài),如果第三種藥品不使用,那么相當(dāng)于0 1 1 產(chǎn)生的 總健康值;
            這個(gè)健康值已經(jīng)由它的子結(jié)構(gòu)得到。
            如果使用第三種藥品,那么我們進(jìn)行一次DFS,將他對(duì)應(yīng)的所有的有效狀態(tài)(無(wú)效狀態(tài)對(duì)應(yīng)為0即可)對(duì)應(yīng)的健康值加起來(lái),這樣就得到了
            使用第三種藥物的總健康值。
            我們將上述子結(jié)構(gòu)和DFS得到的結(jié)果相加,便得到了當(dāng)前狀態(tài)下的總健康值。
我們做一個(gè)循環(huán),i from 1to 2^n-1 ,把所有情況對(duì)應(yīng)的健康值算出來(lái),然后再其中取一個(gè)最大值即可。(位運(yùn)算很重要!)

#include<iostream>
using namespace std;
#define MAX (1<<17)

int value[MAX];
int dp[MAX];
int bin[20];
int n,m;
int sum;
int ans;

void dfs(int i,int p)
{

    
if(i<0)
    
{
        sum
+=value[p];
        
return ;
    }

    
else if(bin[i]==1)
        dfs(i
-1,p+(1<<i));
    dfs(i
-1,p);
}



void solve(int n)
{
    
int now=( (1<<n)-1 );
    
int i;
    
int j=1;
    
int k=-1;
    
for(i=1;i<=now;i++)
    
{
        sum
=0;
        memset(bin,
0,sizeof(bin));
        j
=1;
        k
=-1;
        
while(j*2<=i)
        
{

            
if(j&&i)
            
{
                k
++;
                bin[k]
=1;
            }

            
else 
            
{
                k
++;
                bin[k]
=0;
            }

            j
*=2;

        }

        dfs(k,j);
        dp[i]
=dp[i-j]+sum;
        
if(dp[i]>ans)
        ans
=dp[i];
    }



}



int main()
{
    
int i;
    
while(scanf("%d",&n))
    
{
        ans
=0;
        memset(value,
0,sizeof(value));
        
if(n==0)
            
break;
        scanf(
"%d",&m);
        
for(i=1;i<=m;i++)
        
{

            
int a,b;
            scanf(
"%d%d",&a,&b);
            value[a]
=b;
        }

        solve(n);
        printf(
"%d\n",ans);

    }

    
return 0;
}






做了這個(gè)題,突然想起了將10進(jìn)制轉(zhuǎn)化成2進(jìn)制的方法,不斷模除2,取余數(shù),但是一直沒(méi)有深究,今天終于明白了,原來(lái)如果把這個(gè)十進(jìn)制數(shù)考慮成2進(jìn)制,右移一位相當(dāng)于除以2,模除2就是把最后那一位給取出來(lái)了,不斷的模除2,就把這個(gè)2進(jìn)制數(shù)一位一位的取出。
PS :感謝那位提示我思路的同學(xué)

posted on 2009-09-21 14:28 abilitytao 閱讀(1309) 評(píng)論(4)  編輯 收藏 引用

評(píng)論

# re: 9.20上海東華賽區(qū)網(wǎng)絡(luò)賽H題 health (Dp+Dfs+Bit Operation) 2009-09-21 15:48 OwnWaterloo

> 原來(lái)如果把這個(gè)十進(jìn)制數(shù)考慮成2進(jìn)制
在C/C++中,整數(shù)本來(lái)就是按2進(jìn)制而不是按10進(jìn)制存儲(chǔ)的。
不存在考慮成2進(jìn)制的說(shuō)法。

> 突然想起了將10進(jìn)制轉(zhuǎn)化成2進(jìn)制的方法
10進(jìn)制是表象, 2進(jìn)制才是本質(zhì)。
10進(jìn)制只存在于輸入輸出的過(guò)程中, 變量最終是按2進(jìn)制存儲(chǔ)。



> 右移一位相當(dāng)于除以2,模除2就是把最后那一位給取出來(lái)了
> 不斷的模除2,就把這個(gè)2進(jìn)制數(shù)一位一位的取出。
int i,d;
d = i % 2u;
i /= 2u;

如果你使用的編譯器不是古董,第2、3行代碼也會(huì)分別被編譯為位與、移位—— 不一定真的需要寫為 & , >>= —— 而不是除法。

  回復(fù)  更多評(píng)論   

# re: 9.20上海東華賽區(qū)網(wǎng)絡(luò)賽H題 health (Dp+Dfs+Bit Operation) 2009-09-21 19:08 abilitytao

@OwnWaterloo
呵呵 謝謝指點(diǎn) 學(xué)習(xí)了^_^  回復(fù)  更多評(píng)論   

# re: 9.20上海東華賽區(qū)網(wǎng)絡(luò)賽H題 health (Dp+Dfs+Bit Operation) 2009-09-21 19:47 qwe

當(dāng)時(shí)也想到了 , 因?yàn)檫@復(fù)雜度沒(méi)敢寫!LZ你能分析下這復(fù)雜度嗎?  回復(fù)  更多評(píng)論   

# re: 9.20上海東華賽區(qū)網(wǎng)絡(luò)賽H題 health (Dp+Dfs+Bit Operation) 2009-09-30 18:09 abilitytao

@qwe
最低2^16 最高2^32
折中一下 似乎可以接受 對(duì)了 請(qǐng)問(wèn)你有更好的方法嗎?   回復(fù)  更多評(píng)論   


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            快射av在线播放一区| 午夜精品福利一区二区蜜股av| 久久精品夜色噜噜亚洲a∨| 欧美二区视频| 久久精品一区蜜桃臀影院| 欧美一级视频精品观看| 香蕉久久夜色精品| 欧美一区在线直播| 欧美在线观看www| 久久国产色av| 巨乳诱惑日韩免费av| 欧美日韩一区二区在线观看视频 | 久久久久久久久久码影片| 欧美一区二区啪啪| 亚洲国产视频直播| 亚洲一区二区视频在线观看| 亚洲一区在线播放| 久久精品免费看| 欧美黄色一级视频| 国产精品国产精品| 精品成人一区二区三区四区| 亚洲人成在线影院| 午夜视频一区| 一区二区三区在线观看视频| 91久久精品美女高潮| 亚洲天堂激情| 久久久久久久久综合| 亚洲国产欧美久久| 最新精品在线| 久久av最新网址| 欧美日韩情趣电影| 亚洲精品一区在线| 欧美怡红院视频一区二区三区| 久久米奇亚洲| 99re66热这里只有精品4| 欧美在线一区二区| 欧美视频手机在线| **欧美日韩vr在线| 欧美一级黄色录像| 99视频+国产日韩欧美| 久久五月天婷婷| 国产农村妇女精品| 亚洲午夜羞羞片| 麻豆精品在线播放| 亚洲一区二区精品在线观看| 女人色偷偷aa久久天堂| 香蕉久久国产| 国产精品久久久久aaaa樱花| 亚洲精品一区二区网址| 免费在线观看精品| 午夜日韩激情| 国产精品一区二区黑丝| 亚洲最新视频在线| 欧美激情在线| 国产亚洲欧美一区二区三区| 亚洲美女黄网| 91久久国产综合久久蜜月精品| 亚洲综合色视频| 亚洲伦理精品| 欧美日韩国产成人| 亚洲精品一级| 亚洲国产欧美在线| 欧美成人免费在线观看| 在线成人av网站| 老妇喷水一区二区三区| 欧美专区亚洲专区| 狠狠狠色丁香婷婷综合激情| 久久精品一区二区三区四区| 性欧美1819sex性高清| 久久精品久久99精品久久| 国产日韩欧美精品综合| 欧美自拍偷拍午夜视频| 欧美一级午夜免费电影| 国产欧美1区2区3区| 制服丝袜激情欧洲亚洲| 夜夜嗨av一区二区三区网站四季av| 欧美久久精品午夜青青大伊人| 日韩手机在线导航| a4yy欧美一区二区三区| 国产精品嫩草99a| 亚洲网站视频福利| 欧美日韩你懂的| 欧美一区二区三区电影在线观看| 亚洲欧美区自拍先锋| 国内精品视频在线观看| 欧美成人精精品一区二区频| 免费试看一区| 亚洲一区二区精品在线观看| 亚洲欧美激情四射在线日 | 欧美另类视频| 一区二区高清在线| 亚洲欧美激情视频| 1024精品一区二区三区| 亚洲欧洲在线一区| 国产精品成人国产乱一区| 亚久久调教视频| 久久亚洲国产精品一区二区| 欧美国产精品中文字幕| 欧美视频一区二区三区在线观看 | 国产精品久久久久久五月尺| 久久精品三级| 欧美黄色免费| 久久精品免费电影| 欧美顶级艳妇交换群宴| 亚洲欧美一区二区三区在线| 久久精品国产一区二区三| 一区二区激情| 久久天堂精品| 欧美一二三区精品| 亚洲免费高清视频| 国产亚洲精品久| av成人激情| 久久黄色小说| 亚洲欧美国内爽妇网| 日韩午夜三级在线| 欧美高清视频在线观看| 国产欧美日韩亚州综合| 亚洲人成网站精品片在线观看| 久久本道综合色狠狠五月| 夜夜精品视频| 老司机一区二区三区| 欧美伊人久久久久久午夜久久久久| 欧美激情精品久久久久久大尺度 | 一区二区三区四区五区在线| 久久国产一二区| 亚洲欧美一区二区视频| 午夜在线精品| 亚洲砖区区免费| 欧美精品国产精品日韩精品| 免费成人高清视频| 国产一区在线视频| 亚洲一区欧美激情| 亚洲男女毛片无遮挡| 欧美高清成人| 91久久精品国产91性色| 亚洲成色精品| 久久久蜜桃精品| 另类春色校园亚洲| 国产一区二区三区精品欧美日韩一区二区三区| 亚洲精品综合精品自拍| 91久久精品美女高潮| 老司机免费视频一区二区三区| 免费的成人av| 在线国产精品播放| 麻豆精品91| 91久久线看在观草草青青| 91久久精品一区| 欧美日韩精品一区| 日韩一级在线| 亚洲欧美成人精品| 国产免费亚洲高清| 午夜欧美电影在线观看| 久久国产精品99国产精| 国产视频欧美| 久久视频国产精品免费视频在线| 久久综合亚洲社区| 亚洲精品一线二线三线无人区| 欧美福利视频一区| 亚洲午夜精品17c| 久久久午夜视频| 亚洲国产精品一区| 欧美屁股在线| 亚洲欧美成人一区二区在线电影| 久久se精品一区二区| 国产中文一区二区| 欧美在线视屏| 亚洲国产欧美一区| 亚洲欧美成人| 亚洲第一页在线| 欧美午夜电影网| 久久aⅴ乱码一区二区三区| 欧美成人免费小视频| 夜夜爽av福利精品导航| 亚洲午夜免费福利视频| 久久久精品国产免大香伊 | 欧美日韩在线精品| 亚洲少妇诱惑| 欧美不卡一区| 在线视频你懂得一区二区三区| 国产精品一区一区三区| 玖玖在线精品| 亚洲欧美电影院| 亚洲国产日韩精品| 欧美在线视频日韩| 亚洲人成小说网站色在线| 国产精品久久久久aaaa樱花| 久久只精品国产| 中日韩高清电影网| 欧美高清视频| 久久精品欧洲| 亚洲一级一区| 亚洲精品国精品久久99热一| 国产视频在线观看一区 | 欧美aⅴ一区二区三区视频| 亚洲小视频在线| 亚洲精品欧洲精品| 老妇喷水一区二区三区| 欧美一级欧美一级在线播放| 99视频精品| 亚洲国产婷婷香蕉久久久久久99|