題目325 zb的生日

2021-08-08 20:45:33 字數 989 閱讀 8556

今天是陰曆七月初五,acm隊員zb的生日。zb正在和c小加、never在武漢集訓。他想給這兩位兄弟買點什麼慶祝生日,經過調查,zb發現c小加和never都很喜歡吃西瓜,而且一吃就是一堆的那種,zb立刻下定決心買了一堆西瓜。當他準備把西瓜送給c小加和never的時候,遇到了乙個難題,never和c小加不在一塊住,只能把西瓜分成兩堆給他們,為了對每個人都公平,他想讓兩堆的重量之差最小。每個西瓜的重量已知,你能幫幫他麼?

多組測試資料(≤1500)。資料以eof結尾

第一行輸入西瓜數量n (1 ≤ n ≤ 20)

第二行有n個數,w1, …, wn (1 ≤ wi ≤ 10000)分別代表每個西瓜的重量

輸出分成兩堆後的質量差

5 5 8 13 27 14

3動態規劃演算法,剛開始想使用貪心演算法,首先進行預排序,這樣後面的情況分類會聽複雜的。

動態規劃遞迴函式: dp

[i]=

min(

dp[i

],dp

[i−a

[i]]

+a[i

])這樣選擇出來的將會是最接近sum/2的。

#include 

#define max(a,b) a>b?a:b

int v,ans,n,w[21],sum[21];

void dfs(int i,int cnt)

if(ans == v || cnt+sum[i] <= ans) //cut

return ;

if(cnt+w[i] <= v)

dfs(i-1,cnt+w[i]);

dfs(i-1,cnt);

}int main()

v = sum[n]/2;

dfs(n,0);

printf("%d\n",sum[n]-2*ans);

}return

0;}

由源**可知,有兩層迴圈,故演算法時間複雜度為o(n * sum)。

nyoj 325 zb的生日(簡單dp)

時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 今天是陰曆七月初五,acm隊員zb的生日。zb正在和c小加 never在武漢集訓。他想給這兩位兄弟買點什麼慶祝生日,經過調查,zb發現c小加和never都很喜歡吃西瓜,而且一吃就是一堆的那種,zb立刻下定決心買了一堆西瓜。當他準...

南理oj 325 zb的生日(dfs)

時間限制 3000 ms 記憶體限制 65535 kb 難度 2 描述 今天是陰曆七月初五,acm隊員zb的生日。zb正在和c小加 never在武漢集訓。他想給這兩位兄弟買點什麼慶祝生日,經過調查,zb發現c小加和never都很喜歡吃西瓜,而且一吃就是一堆的那種,zb立刻下定決心買了一堆西瓜。當他準...

nyoj 325 zb的生日(01揹包)

題目鏈結 題目描述 今天是陰曆七月初五,acm隊員zb的生日。zb正在和c小加 never在武漢集訓。他想給這兩位兄弟買點什麼慶祝生日,經過調查,zb發現c小加和never都很喜歡吃西瓜,而且一吃就是一堆的那種,zb立刻下定決心買了一堆西瓜。當他準備把西瓜送給c小加和never的時候,遇到了乙個難題...