2015藍橋杯決賽 居民集會 分治法

2021-08-01 10:27:50 字數 1800 閱讀 4829

藍橋村的居民都生活在一條公路的邊上,公路的長度為l,每戶家庭的位置都用這戶家庭到公路的起點的距離來計算,第i戶家庭距起點的距離為di。

每年,藍橋村都要舉行一次集會。今年,由於村里的人口太多,村委會決定要在4個地方舉行集會,其中3個位於公路中間,1個位最公路的終點。

已知每戶家庭都會向著遠離公路起點的方向去參加集會,參加集會的路程開銷為家庭內的人數ti與距離的乘積。

給定每戶家庭的位置di和人數ti,請為村委會尋找最好的集會舉辦地:p1, p2, p3, p4

(p1<=p2<=p3<=p4=l),使得村內所有人的路程開銷和最小。

【輸入格式】 輸入的第一行包含兩個整數n, l,分別表示藍橋村的家庭數和公路長度。 接下來n行,每行兩個整數di,

ti,分別表示第i戶家庭距離公路起點的距離和家庭中的人數。

【輸出格式】 輸出一行,包含乙個整數,表示村內所有人路程的開銷和。

【樣例輸入】

6 10

1 32 2

4 55 20

6 58 7

【樣例輸出】

18

【樣例說明】 在距起點2, 5, 8, 10這4個地方集會,6個家庭需要的走的距離分別為1, 0, 1, 0, 2,

0,總的路程開銷為1*3+0*2+1*5+0*20+2*5+0*7=18。

【資料規模與約定】 對於10%的評測資料,1<=n<=300。

對於30%的評測資料,1<=n<=2000,1<=l<=10000,0<=di<=l,di<=di+1,0<=ti<=20。

對於100%的評測資料,1<=n<=100000,1<=l<=1000000,0<=di<=l,di<=di+1,0<=ti<=1000000。

資源約定: 峰值記憶體消耗 < 512m cpu消耗 < 5000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入…」 的多餘內容。

所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。

注意: main函式需要返回0 注意: 只使用ansi c/ansi c++ 標準,不要呼叫依賴於編譯環境或作業系統的特殊函式。 注意:

所有依賴的函式必須明確地在原始檔中 #include , 不能通過工程設定而省略常用標頭檔案。

提交時,注意選擇所期望的編譯器型別。

直接看**吧。。。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define mem(a,b) memset(a,b,sizeof(a))

#define inf 0x3f3f3f3f

#define mod 10000007

#define debug() puts("what the ****!!!")

#define n 10200

#define ll longlong

using

namespace

std;

int n,l;

int w[n][n];//起點和終點的距離

struct node

zz[n];

int solve(int st,int ed,int cur)//起點、終點、待劃分區域

return m;

}int main()

居民集會 分治法)

藍橋村的居民都生活在一條公路的邊上,公路的長度為l,每戶家庭的位置都用這戶家庭到公路的起點的距離來計算,第i戶家庭距起點的距離為di。每年,藍橋村都要舉行一次集會。今年,由於村里的人口太多,村委會決定要在4個地方舉行集會,其中3個位於公路中間,1個位最公路的終點。已知每戶家庭都會向著遠離公路起點的方...

藍橋杯 15決賽 C6 居民集會 dfs

輸入格式 輸入的第一行包含兩個整數n,l,分別表示藍橋村的家庭數和公路長度。接下來n行,每行兩個整數di,ti,分別表示第i戶家庭距離公路起點的距離和家庭中的人數。輸出格式 輸出一行,包含乙個整數,表示村內所有人路程的開銷和。樣例輸入 6 10 1 32 2 4 55 20 6 58 7 樣例輸出 ...

2015藍橋杯決賽

五月二十八號,坐上了開往北京的火車。第一次到北京參加全國性的比賽,第六屆藍橋杯決賽,心裡面還是很興奮的,同時也有一點點緊張,還是希望自己能拿乙個比較好的成績。提前一天到,大家看了看考場,比賽地點在北大計算中心,30號下午一點開始了正式的比賽,比賽時間四個小時。比賽題目型別和初賽差不多,有結果填空,填...