題目1452 搬寢室

2021-07-22 04:38:15 字數 1313 閱讀 7218

題目1452:搬寢室

時間限制:1 秒

記憶體限制:128 兆

特殊判題:

提交:1701

解決:690

題目描述:搬寢室是很累的,xhd深有體會.時間追述2023年7月9號,那天xhd迫於無奈要從27號樓搬到3號樓,因為10號要封樓了.看著寢室裡的n件物品,xhd開始發呆,因為n是乙個小於2000的整數,實在是太多了,於是xhd決定隨便搬2*k件過去就行了.但還是會很累,因為2*k也不小是乙個不大於n的整數.幸運的是xhd根據多年的搬東西的經驗發現每搬一次的疲勞度是和左右手的物品的重量差的平方成正比(這裡補充一句,xhd每次搬兩件東西,左手一件右手一件).例如xhd左手拿重量為3的物品,右手拿重量為6的物品,則他搬完這次的疲勞度為(6-3)^2 = 9.現在可憐的xhd希望知道搬完這2*k件物品後的最佳狀態是怎樣的(也就是最低的疲勞度),請告訴他吧。

輸入:每組輸入資料有兩行,第一行有兩個數n,k(2<=2*k<=n<2000).第二行有n個整數分別表示n件物品的重量(重量是乙個小於2^15的正整數).

輸出:對應每組輸入資料,輸出資料只有乙個表示他的最少的疲勞度,每個一行.

樣例輸入:

2 1

1 3

樣例輸出:

4
#include#include

#include

#include

#include

#include

using

namespace

std;

# define inf

0x7fffffff

int list[2001

];int dp[1001][2001

];int

main()

sort(list+1,list+1+n);//

使所有物品按重量遞增排序

for(int i=1; i<=n; i++)//

初始值 dp[0][i]=0

;

for(int i=1; i<=k; i++)

for(int j=2*i; j<=n; j++)

}printf(

"%d\n

",dp[k][n]);

}return0;

}

杭電1421 搬寢室

搬寢室是很累的,xhd深有體會.時間追述2006年7月9號,那天xhd迫於無奈要從27號樓搬到3號樓,因為10號要封樓了.看著寢室裡的n件物品,xhd開始發呆,因為n是乙個小於2000的整數,實在是太多了,於是xhd決定隨便搬2 k件過去就行了.但還是會很累,因為2 k也不小是乙個不大於n的整數.幸...

搬寢室《九度OJ

題目描述 搬寢室是很累的,xhd深有體會.時間追述2006年7月9號,那天xhd迫於無奈要從27號樓搬到3號樓,因為10號要封樓了.看著寢室裡的n件物品,xhd開始發呆,因為n是乙個小於2000的整數,實在是太多了,於是xhd決定隨便搬2 k件過去就行了.但還是會很累,因為2 k也不小是乙個不大於n...

經典DP HDU 1421 搬寢室

題解 用dp i j 代表從i個數中取j對數,首先我們對給定的數排乙個序,使取答案的時候,區域性最優,因為我們有取或者不取兩種狀態,所以當不取的時候我們當前狀態等於上乙個狀態,dp i 1 j 當取的時候,我們上乙個狀態為dp i 2 j 1 代表i 2個數取j 1對數加上取的sqr a i a i...