日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【动态规划】拔河比赛 (ssl 1638)

發(fā)布時(shí)間:2023/12/3 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【动态规划】拔河比赛 (ssl 1638) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

拔河比賽拔河比賽

Description

一個(gè)學(xué)校舉行拔河比賽,所有的人被分成了兩組,每個(gè)人必須(且只能夠)在其中的一組,要求兩個(gè)組的人數(shù)相差不能超過(guò)1,且兩個(gè)組內(nèi)的所有人體重加起來(lái)盡可能地接近。

Input

輸入數(shù)據(jù)的第1行是一個(gè)n,表示參加拔河比賽的總?cè)藬?shù),n<=100,接下來(lái)的n行表示第1到第n個(gè)人的體重,每個(gè)人的體重都是整數(shù)(1<=weight<=450)。

Output

輸出數(shù)據(jù)應(yīng)該包含兩個(gè)整數(shù):分別是兩個(gè)組的所有人的體重和,用一個(gè)空格隔開(kāi)。注意如果這兩個(gè)數(shù)不相等,則請(qǐng)把小的放在前面輸出。

Sample Input

3

100

90

200

Sample Output

190 200

題目大意:

有n個(gè)人,每個(gè)人有自己的重量,把他們分成兩對(duì),當(dāng)n為偶數(shù)時(shí),兩隊(duì)的人要一樣,當(dāng)n為基數(shù)時(shí),兩隊(duì)的人的差值只能為1,求兩隊(duì)的重量之差最小是多少

解題方法:

用f[i][j][k]來(lái)表示前i個(gè)人選j個(gè)人重量為k是否可能,但因?yàn)閒[i][j][k]只和f[i-1][j-1~0]的數(shù)有關(guān),我們可以表示為f[j][k],在倒著來(lái)就行了,然后在一個(gè)一個(gè)往后推

#include<cstdio> #include<iostream> #include<cstring> using namespace std; int n,num,sum,a[105],f[105][45005]; int main() {scanf("%d",&n);for (int i=1;i<=n;i++){scanf("%d",&a[i]);sum+=a[i];//求總和}num=sum/2;//求一半f[0][0]=1;//預(yù)處理for (int i=1;i<=n;i++)//n個(gè)人for (int j=min(n/2,i-1);j>=0;j--)//min是因?yàn)閒只需要n的一半就行了,但當(dāng)前只有n-1個(gè)人所以求最小值可以節(jié)省時(shí)間for (int k=0;k<=j*450;k++)//之前選了幾個(gè)人,現(xiàn)在最多的就是j*450if (f[j][k]) f[j+1][k+a[i]]=1;//如果之前選j個(gè)人重量為k是可以的,那么選j+1個(gè)人重量為k+a[i]也是可以的for (int i=0;1 ;i++)//離中間值有多遠(yuǎn){if (f[n/2][num+i]) //比中間值大i{printf("%d %d",min(num+i,sum-num-i),max(num+i,sum-num-i));//num+i是第1隊(duì),剩下的就是第二隊(duì)=sum-(num+i)=sum-num-ibreak;//找到就退出}if (f[n/2][num-i]) //比中間值小i{printf("%d %d",min(num-i,sum-num+i),max(num-i,sum-num+i));//num-i是第1隊(duì),剩下的就是第二隊(duì)=sum-(num-i)=sum-num+ibreak;//找到就退出}} }

總結(jié)

以上是生活随笔為你收集整理的【动态规划】拔河比赛 (ssl 1638)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。