題目描述
a先生有很多雙筷子。確切的說應該是很多根,因為筷子的長度不一,很難判斷出哪兩根是一雙的。這天,a先生家裡來了k個客人,a先生留下他們吃晚飯。加上a先生,a夫人和他們的孩子小a,共k+3個人。每人需要用一雙筷子。a先生只好清理了一下筷子,共n根,長度為t1,t2,t3,……,tn.現在他想用這些筷子組合成k+3雙,使每雙的筷子長度差的平方和最小。(怎麼不是和最小??這要去問a先生了,呵呵)
輸入共有兩行,第一行為兩個用空格隔開的整數,表示n,k(1≤n≤100, 0輸出
僅一行。如果湊不齊k+3雙,輸出-1,否則輸出長度差平方和的最小值。
樣例輸入
10 1
1 1 2 3 3 3 4 6 10 20
樣例輸出
5思路:
這道題是一道動態規劃題,首先我們要將所有筷子排序,
這樣選定的筷子一定是相鄰的,然後就需要用到dp的思想,
我們比較選第i個和第i-1個筷子與不選的區別得到狀態轉移方程:
b[i][j]=min(b[i-1][j],b[i-2][j-1]+f(a[i],a[i-1]))
**:
#includeusing namespace std;
int f(int x,int y)//求一雙筷子的長度差的平方
int main()
sort(a+1,a+1+n);//先將筷子排序
for (int i=0;i<=n;i++)//初始化
for(int i=2;i<=n;i++)
for(int j=1;j<=k;j++)
b[i][j]=min(b[i-1][j],b[i-2][j-1]+f(a[i],a[i-1]));//狀態轉移方程
cout<}
小明的筷子
題目描述 小明是個馬大哈,某天他到超市買了若干雙筷子 小於20 筷子的長度不盡相同,他把全部筷子都放在購物袋裡面拿回家,路上不小心漏了一根 請你用程式幫他找出漏掉的筷子是多長的。執行時間限制 無限制 記憶體限制 無限制 輸入 第一行 非負的整數,剩下的筷子的根數 例如 7 第二行 剩下的筷子的各個長...
菠蘿和筷子的故事
公司裡面有很多的典故,菠蘿和筷子是比較流行的乙個。今天在donews談起,讓我想起來提一下。百姓網每天都會 水果。夏天裡面最受歡迎的是菠蘿。阿姨把切好的菠蘿泡在鹽水裡,用樂扣樂扣的大盒子裝著放在進門的桌子上。不過阿姨經常忘記拿筷子,讓吃菠蘿心切的同事們圍著菠蘿打轉。這種事情在每個公司裡呆過一段時間的...
問題 D 水杯
題目描述 黃學長的n個妹子要喝水,每個妹子用水杯喝水的時間從a時刻開始到b時刻結束。求黃學長最少需要多少個水杯緩解妹子們的飢渴。輸入輸入第一行乙個數n,接下來n行每行一對數 a,b 輸出輸出一行乙個數表示答案。複製樣例資料 5 1 10 2 43 6 5 84 7樣例輸出 4提示 對於10 的資料,...