問題 D 筷子

2021-09-22 20:12:49 字數 871 閱讀 4969

題目描述

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 的資料,...