藍橋村的居民都生活在一條公路的邊上,公路的長度為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#includeusing namespace std;
const int maxn=10000+5;
int d[maxn],t[maxn],n,l;
int w[maxn][maxn];
int solve(int x,int y,int cur) //[x,y] 還能分cur次
{ if(!cur) return w[x][y];
int ml,mr,m;
m=2*w[0][l];
for(int m=x+1;mi&&d[k]
2015藍橋杯決賽 居民集會 分治法
藍橋村的居民都生活在一條公路的邊上,公路的長度為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 樣例輸出 ...
居民集會 第六屆藍翔杯決賽題
居民集會 藍橋村的居民都生活在一條公路的邊上,公路的長度為l,每戶家庭的位置都用這戶家庭到公路的起點的距離來計算,第i戶家庭距起點的距離為di。每年,藍橋村都要舉行一次集會。今年,由於村里的人口太多,村委會決定要在4個地方舉行集會,其中3個位於公路中間,1個位最公路的終點。已知每戶家庭都會向著遠離公...