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

POJ 1015 Jury Compromise 動態規劃

Description

In Frobnia, a far-away country, the verdicts in court trials are determined by a jury consisting of members of the general public. Every time a trial is set to begin, a jury has to be selected, which is done as follows. First, several people are drawn randomly from the public. For each person in this pool, defence and prosecution assign a grade from 0 to 20 indicating their preference for this person. 0 means total dislike, 20 on the other hand means that this person is considered ideally suited for the jury.
Based on the grades of the two parties, the judge selects the jury. In order to ensure a fair trial, the tendencies of the jury to favour either defence or prosecution should be as balanced as possible. The jury therefore has to be chosen in a way that is satisfactory to both parties.
We will now make this more precise: given a pool of n potential jurors and two values di (the defence's value) and pi (the prosecution's value) for each potential juror i, you are to select a jury of m persons. If J is a subset of {1,..., n} with m elements, then D(J ) = sum(dk) k belong to J
and P(J) = sum(pk) k belong to J are the total values of this jury for defence and prosecution.
For an optimal jury J , the value |D(J) - P(J)| must be minimal. If there are several jurys with minimal |D(J) - P(J)|, one which maximizes D(J) + P(J) should be selected since the jury should be as ideal as possible for both parties.
You are to write a program that implements this jury selection process and chooses an optimal jury given a set of candidates.

Input

The input file contains several jury selection rounds. Each round starts with a line containing two integers n and m. n is the number of candidates and m the number of jury members.
These values will satisfy 1<=n<=200, 1<=m<=20 and of course m<=n. The following n lines contain the two integers pi and di for i = 1,...,n. A blank line separates each round from the next.
The file ends with a round that has n = m = 0.

Output

For each round output a line containing the number of the jury selection round ('Jury #1', 'Jury #2', etc.).
On the next line print the values D(J ) and P (J ) of your jury as shown below and on another line print the numbers of the m chosen candidates in ascending order. Output a blank before each individual candidate number.
Output an empty line after each test case.

Sample Input

4 2
1 2
2 3
4 1
6 2
0 0 

Sample Output

Jury #1
Best jury has value 6 for prosecution and value 4 for defence:
2 3 

Hint

If your solution is based on an inefficient algorithm, it may not execute in the allotted time.

Source

 

    在遙遠的國家佛羅布尼亞,嫌犯是否有罪,須由陪審團決定。陪審團是由法官從公眾中挑選的。先隨機挑選n 個人作為陪審團的候選人,然后再從這n 個人中選m 人組成陪審團。選m 人的辦法是:控方和辯方會根據對候選人的喜歡程度,給所有候選人打分,分值從0 到20。為了公平起見,法官選出陪審團的原則是:選出的m 個人,必須滿足辯方總分和控方總分的差的絕對值最小。如果有多種選擇方案的辯方總分和控方總分的之差的絕對值相同,那么選辯控雙方總分之和最大的方案即可。最終選出的方案稱為陪審團方案。
    為敘述問題方便,現將任一選擇方案中,辯方總分和控方總分之差簡稱為“辯控差”,辯方總分和控方總分之和稱為“辯控和”。第i 個候選人的辯方總分和控方總分之差記為V(i),辯方總分和控方總分之和記為S(i)。現用f(j, k)表示,取j 個候選人,使其辯控差為k 的所有方案中,辯控和最大的那個方案(該方案稱為“方案f(j, k)”)的辯控和。并且,我們還規定,如果沒法選j 個人,使其辯控差為k,那么f(j, k)的值就為-1,也稱方案f(j, k)不可行。本題是要求選出m 個人,那么,如果對k 的所有可能的取值,求出了所有的f(m, k) (-20×m≤ k ≤ 20×m),那么陪審團方案自然就很容易找到了。
    問題的關鍵是建立遞推關系。需要從哪些已知條件出發,才能求出f(j, k)呢?顯然,方案f(j, k)是由某個可行的方案f(j-1, x)( -20×m ≤ x ≤ 20×m)演化而來的。可行方案f(j-1, x)能演化成方案f(j, k)的必要條件是:存在某個候選人i,i 在方案f(j-1, x)中沒有被選上,且x+V(i) = k。在所有滿足該必要條件的f(j-1, x)中,選出 f(j-1, x) + S(i) 的值最大的那個,那么方案f(j-1, x)再加上候選人i,就演變成了方案 f(j, k)。這中間需要將一個方案都選了哪些人都記錄下來。不妨將方案f(j, k)中最后選的那個候選人的編號,記在二維數組的元素path[j][k]中。那么方案f(j, k)的倒數第二個人選的編號,就是path[j-1][k-V[path[j][k]]。假定最后算出了解方案的辯控差是k,那么從path[m][k]出發,就能順藤摸瓜一步步求出所有被選中的候選人。初始條件,只能確定f(0, 0) = 0。由此出發,一步步自底向上遞推,就能求出所有的可行方案f(m, k)( -20×m ≤ k ≤ 20×m)。實際解題的時候,會用一個二維數組f 來存放f(j, k)的值。而且,由于題目中辯控差的值k 可以為負數,而程序中數租下標不能為負數,所以,在程序中不妨將辯控差的值都加上400,以免下標為負數導致出錯,即題目描述中,如果辯控差為0,則在程序中辯控差為400。

#include <iostream>
using namespace std;

int p[201],d[201],result[21];
int dp[21][801],path[21][801];

int cmp(const void *a,const void *b){
    
return *(int *)a-*(int *)b;
}

bool select(int a,int b,int i){
    
while(a>0 && path[a][b]!=i){
        b
-=p[path[a][b]]-d[path[a][b]];
        a
--;
    }

    
return (a!=0)?true:false;
}

int main(){
    
int i,j,k,a,b,n,m,origin,ca=1;
    
while(scanf("%d %d",&n,&m),n||m){
        
for(i=1;i<=n;i++)
            scanf(
"%d %d",p+i,d+i);
        memset(dp,
-1,sizeof(dp));
        memset(path,
0,sizeof(path));
        origin
=m*20;
        
for(dp[0][origin]=j=0;j<m;j++)
            
for(k=0;k<=origin*2;k++)
                
if(dp[j][k]>=0){
                    
for(i=1;i<=n;i++)
                        
if(dp[j+1][k+p[i]-d[i]]<dp[j][k]+p[i]+d[i]){
                            a
=j,b=k;
                            
if(!select(a,b,i)){
                                dp[j
+1][k+p[i]-d[i]]=dp[j][k]+p[i]+d[i];
                                path[j
+1][k+p[i]-d[i]]=i;
                            }

                        }

                }

        
for(i=origin,j=0;dp[m][i+j]<0 && dp[m][i-j]<0;j++);
        k
=dp[m][i+j]>dp[m][i-j]?i+j:i-j;
        printf(
"Jury #%d\n",ca++);
        printf(
"Best jury has value %d for prosecution and value %d for defence:\n",(dp[m][k]+k-origin)/2, (dp[m][k]-k+origin)/2);
        
for(i=1;i<=m;i++){
            result[i]
=path[m-i+1][k];
            k
-=p[result[i]]-d[result[i]];
        }

        qsort(result
+1,m,sizeof(int),cmp);
        
for(i=1;i<=m;i++)
            printf(
" %d",result[i]);
        printf(
"\n");
        printf(
"\n");
    }

    
return 0;
}


 

posted on 2009-06-23 17:08 極限定律 閱讀(4822) 評論(6)  編輯 收藏 引用 所屬分類: ACM/ICPC

評論

# re: POJ 1015 Jury Compromise 動態規劃 2009-09-09 14:03 boa

不知道為什么這種方法uva和tju上是wa啊?難道是這兩個網站不判special judge?  回復  更多評論   

# re: POJ 1015 Jury Compromise 動態規劃 2010-05-06 23:03 Cre_nws

麻煩問一下" if(dp[j+1][k+p[i]-d[i]]<dp[j][k]+p[i]+d[i])"當k=0時,p[i]-d[i]如果為負值,那么會不會產生運行時錯誤啊?!謝啦!  回復  更多評論   

# re: POJ 1015 Jury Compromise 動態規劃 2010-08-05 22:33 cxb

@Cre_nws
k應該不會取到0,因為取到0就意味著“辯控差”為負的最大,即已經到了j=m-1次循環,并且所有的陪審員都是p:0 s:20,此時k=0,并且整個循環已經結束了,這就是板主為何要將origin=m*20的原因之所在。有不對的地方,請指正~  回復  更多評論   

# re: POJ 1015 Jury Compromise 動態規劃 2010-09-03 14:58 tel

效率不是很高啊  回復  更多評論   

# re: POJ 1015 Jury Compromise 動態規劃 2010-10-14 19:59 songtianyi

效率已經不錯了  回復  更多評論   

# re: POJ 1015 Jury Compromise 動態規劃 2011-08-05 20:33 asdf

這個算法有后效性吧。就是在i的選取上。  回復  更多評論   

<2009年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

導航

統計

常用鏈接

留言簿(10)

隨筆分類

隨筆檔案

友情鏈接

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            韩国一区二区三区在线观看 | 狠狠爱www人成狠狠爱综合网| 亚洲色无码播放| 午夜一区不卡| 欧美激情第三页| 亚洲欧美日韩国产另类专区| 久久久99爱| 国产精品乱码久久久久久| 亚洲激情视频网| 久久精品视频免费观看| 亚洲美女av黄| 女同一区二区| 一区二区三区我不卡| 亚洲一区二区毛片| 亚洲国产毛片完整版| 亚洲男人的天堂在线aⅴ视频| 久久综合色播五月| 亚洲欧美日韩另类| 韩国视频理论视频久久| 亚洲国产乱码最新视频| 欧美日韩在线大尺度| 亚洲精选久久| 亚洲国产天堂久久综合网| 欧美三级午夜理伦三级中视频| 亚洲国内欧美| 中日韩高清电影网| 欧美日韩国产成人精品| 99视频+国产日韩欧美| 欧美黑人在线观看| 欧美午夜电影网| 亚洲欧美久久久久一区二区三区| 性欧美大战久久久久久久久| 国产欧美三级| 久久久亚洲成人| 久久精品亚洲乱码伦伦中文| 亚洲最新在线视频| 久久国产加勒比精品无码| 黄色一区二区三区四区| 99精品国产在热久久| 欧美日韩91| 麻豆av一区二区三区| 欧美日韩亚洲一区在线观看| 蜜桃av综合| 欧美成人精品1314www| 99精品国产99久久久久久福利| 亚洲激情影视| 欧美日韩一区不卡| 欧美大秀在线观看| 欧美人与禽性xxxxx杂性| 亚洲素人在线| 欧美激情精品久久久| 亚洲一区二区在线视频| 性亚洲最疯狂xxxx高清| 亚洲午夜激情免费视频| 欧美韩日精品| 亚洲成色777777女色窝| 欧美日韩成人激情| 欧美激情一区二区久久久| 国内自拍亚洲| 欧美在线日韩精品| 日韩一级精品| 免费观看日韩av| 免费成年人欧美视频| 狠狠做深爱婷婷久久综合一区| 亚洲欧美日韩成人| 欧美一区二区三区四区夜夜大片| 久久一区二区视频| 亚洲欧美在线播放| 麻豆久久精品| 欧美中文字幕在线| 欧美极品一区| 久久综合伊人77777蜜臀| 国产精品区二区三区日本| 欧美国产日韩一二三区| 亚洲激情在线观看| 欧美成人精品激情在线观看| 亚洲国产精品va在看黑人| 亚洲精品国产拍免费91在线| 欧美一区二区三区免费看| 一区二区黄色| 欧美ed2k| 日韩视频一区二区| 亚洲国产精品视频| 欧美一级在线视频| 免费久久99精品国产自| 亚洲国产精品精华液2区45| 欧美激情视频在线免费观看 欧美视频免费一| 欧美国产欧美亚州国产日韩mv天天看完整 | 亚洲一区中文| 国产农村妇女毛片精品久久麻豆| 欧美亚洲系列| 亚洲黄色在线看| 亚洲在线一区二区三区| 国产一区久久久| 亚洲一区日本| 亚洲欧美乱综合| 国产一区日韩欧美| 欧美精品一区二区三区在线播放 | 久久九九免费| 亚洲日本中文字幕| 亚洲第一在线视频| 久久久美女艺术照精彩视频福利播放| 亚洲欧美一区二区精品久久久| 国产日韩精品电影| 牛牛影视久久网| 午夜精品久久久久久久99黑人| 巨胸喷奶水www久久久免费动漫| 日韩午夜三级在线| 国产香蕉97碰碰久久人人| 亚洲欧美综合网| 亚洲国产欧美一区二区三区同亚洲| 一本色道久久综合亚洲精品小说| 国产欧美日韩视频| 欧美日韩国产综合新一区| 欧美在线亚洲一区| 中文av字幕一区| 欧美激情精品久久久久久大尺度| 亚洲欧美激情一区二区| 亚洲精品免费观看| 怡红院av一区二区三区| 美女国产一区| 欧美一区日本一区韩国一区| 亚洲免费av网站| 欧美阿v一级看视频| 日韩视频在线播放| 黄色综合网站| 国产欧美精品| 国产精品久久久久久久一区探花| 欧美本精品男人aⅴ天堂| 久久久久国产成人精品亚洲午夜| 亚洲影视在线播放| 一本色道88久久加勒比精品 | 91久久国产综合久久| 欧美精品日韩一区| 噜噜噜在线观看免费视频日韩| 午夜精品理论片| 亚洲一区在线观看视频| 一区二区久久| 99re8这里有精品热视频免费| 亚洲电影免费| 亚洲一区免费观看| 一区二区毛片| 99国产成+人+综合+亚洲欧美| 亚洲国产精品尤物yw在线观看| 国产一区视频观看| 国产婷婷成人久久av免费高清| 国产精品综合色区在线观看| 牛牛国产精品| 欧美成人69| 欧美精品色网| 欧美日韩精品系列| 国产精品mv在线观看| 国产精品不卡在线| 国产精品看片你懂得| 国产欧美一区二区视频| 国产婷婷色综合av蜜臀av| 国语自产偷拍精品视频偷| 国内外成人免费激情在线视频网站| 国产日韩一区在线| 国产在线观看精品一区二区三区| 好吊色欧美一区二区三区视频| 一色屋精品视频在线观看网站| 在线日韩电影| 日韩亚洲不卡在线| 亚洲一区免费网站| 久久不射中文字幕| 免费在线观看成人av| 亚洲日本视频| 亚洲砖区区免费| 中国日韩欧美久久久久久久久| 亚洲免费视频在线观看| 久久都是精品| 欧美顶级大胆免费视频| 欧美四级在线观看| 悠悠资源网亚洲青| 亚洲一区二区三区免费视频| 欧美一区免费| 亚洲国产精彩中文乱码av在线播放| 亚洲日本理论电影| 欧美亚洲色图校园春色| 美女啪啪无遮挡免费久久网站| 欧美日韩免费| 一区二区三区亚洲| 亚洲午夜精品国产| 免费一区视频| 亚洲香蕉网站| 亚洲尤物精选| 欧美freesex8一10精品| 国产麻豆午夜三级精品| 91久久久久久久久久久久久| 亚洲欧美不卡| 欧美成人在线免费视频| 亚洲在线成人精品| 欧美女同视频| 韩国三级电影久久久久久| 亚洲综合社区| 亚洲精品免费一二三区| 久久九九国产| 国产日韩精品一区观看| 中文一区二区|