問題 B 合併車廂

2022-05-01 21:42:09 字數 1070 閱讀 2505

題目描述

有很多節火車廂被分散在一條軌道上的若干個位置

第i節車廂在position[i]的位置,長度為length[i],也就意味著第i節車廂佔據了這段區間

移動一節車廂乙個單位長度需要消耗乙個單位的能量,現在問你最少需要消耗多少能量能夠將所有的車廂合併到一起,即任意兩節車廂之間都沒有間隙

輸入第一行先輸入乙個整數n (2 <=n <=50)

第二行輸入n個整數 position[i] (1 <= position[i] <=10^9)

第三行輸入n個整數 length[i] (1 <= length[i] <= 10^9)

輸出輸出乙個整數,表示需要消耗的最少能量

樣例輸入

【樣例輸入1】

41 3 10 20

2 2 5 3

【樣例輸入2】

3100 50 1

10 2 1

【樣例輸入3】

54 10 100 13 80

5 3 42 40 9

樣例輸出

【樣例輸出1】

15【樣例輸出2】

96【樣例輸出3】

66題意:合併區間,使其所有都合併成乙個區間.

因為資料範圍比較小,所以直接暴力.

題解:先按左端排序,列舉每乙個車廂,以其為中心,兩邊的車廂向他靠攏.

#include using namespace std;

const int n=100;

typedef long long ll;

struct pa[n];

typedef long long ll;

bool comp(p a,p b)

sort(a+1,a+1+n,comp);

int end;

ll ans=0;

ll minn=1e18;

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

end=a[i].r;

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

if(ans}

cout

}

問題 B 序列合併

題目描述 有兩個長度都為n的序列a和b,在a和b中各取乙個數相加可以得到n2個和,求這n2個和中最小的n個。輸入第一行乙個正整數n 1 n 100000 第二行n個整數ai,滿足ai ai 1且ai 109 第三行n個整數bi,滿足bi bi 1且bi 109 輸出輸出僅有一行,包含n個整數,從小到...

車廂重組問題

在乙個舊式的火車站旁邊有一座橋,其橋面可以繞河中心的橋墩水平旋轉。乙個車站的職工發現橋的長度最多能容納兩節車廂,如果將橋旋轉180度,則可以把相鄰兩節車廂的位置交換,用這種方法可以重新排列車廂的順序。於是他就負責用這座橋將進站的車廂按車廂號從小到大排列。他退休後,火車站決定將這一工作自動化,其中一項...

鐵路車廂排程問題

鐵路車廂排程問題。圖 1 是乙個鐵道調車場的示意圖,兩側鐵道均為單向行駛 道,中間有一段用於排程的 棧道 調車場的入口處有 n 節硬座和軟座車廂 分 別用 h 和 s 表示 設計乙個演算法,把所有的軟座車廂排程到硬座車廂前面來,要求輸出對這 n 節車廂進行排程的 車廂編號 結果序列。hhh這個完全完...