280. 陪审团 poj1015(背包DP)
在一個(gè)遙遠(yuǎn)的國(guó)家,一名嫌疑犯是否有罪需要由陪審團(tuán)來決定。
陪審團(tuán)是由法官?gòu)墓裰刑暨x的。
法官先隨機(jī)挑選N個(gè)人(編號(hào)1,2…,N)作為陪審團(tuán)的候選人,然后再?gòu)倪@N個(gè)人中按照下列方法選出M人組成陪審團(tuán)。
首先,參與訴訟的控方和辯方會(huì)給所有候選人打分,分值在0到20之間。
第 i 個(gè)人的得分分別記為p[i]和d[i]。
為了公平起見,法官選出的M個(gè)人必須滿足:辯方總分D和控方總分P的差的絕對(duì)值|D-P|最小。
如果選擇方法不唯一,那么再?gòu)闹羞x擇辨控雙方總分之和D+P最大的方案。
求最終的陪審團(tuán)獲得的辯方總分D、控方總分P,以及陪審團(tuán)人選的編號(hào)。
輸入格式
輸入包含多組測(cè)試數(shù)據(jù)。
每組測(cè)試數(shù)據(jù)第一行包含兩個(gè)整數(shù)N和M。
接下來N行,每行包含兩個(gè)整數(shù)p[i]和d[i]。
每組測(cè)試數(shù)據(jù)之間隔一個(gè)空行。
當(dāng)輸入數(shù)據(jù)N=0,M=0時(shí),表示結(jié)束輸入,該數(shù)據(jù)無需處理。
輸出格式
對(duì)于每組數(shù)據(jù),第一行輸出’Jury #C’,C為數(shù)據(jù)編號(hào),從1開始。
第二行輸出“Best jury has value P for prosecution and value D for defence:”,P為控方總分,D為辯方總分。
第三行輸出按升序排列的陪審人選編號(hào),每個(gè)編號(hào)前輸出一個(gè)空格。
每組數(shù)據(jù)輸出完后,輸出一個(gè)空行。
數(shù)據(jù)范圍
1≤N≤200,
1≤M≤20
輸入樣例:
4 2
1 2
2 3
4 1
6 2
0 0
輸出樣例:
Jury #1
Best jury has value 6 for prosecution and value 4 for defence:
2 3
思路: dp(i,j)代表選了前i個(gè)數(shù)的時(shí)候,(p[i] - d[i])和為j的最大(p[i] + d[i])和。
再開一個(gè)路徑數(shù)組path(x,i,j)記錄到了第x個(gè)數(shù),選了前i個(gè)數(shù),(p[i] - d[i])和為j的時(shí)候,對(duì)應(yīng)的編號(hào)。
總結(jié)
以上是生活随笔為你收集整理的280. 陪审团 poj1015(背包DP)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 报错:array_column函数未定义
- 下一篇: OpenCASCADE:OCCT CSh