1 秒131,072 kb
40 分
4 級題
x軸上有n個點,每個點除了包括乙個位置資料x[i],還包括乙個權值w[i]。點p到點p[i]的帶權距離 = 實際距離 * p[i]的權值。求x軸上一點使它到這n個點的帶權距離之和最小,輸出這個最小的帶權距離之和。
收起
第1行:點的數量n。(2 <= n <= 10000)第2 - n + 1行:每行2個數,中間用空格分隔,分別是點的位置及權值。(-10^5 <= x[i] <= 10^5,1 <= w[i] <= 10^5)
輸出最小的帶權距離之和。
5-1 1
-3 1
0 17 1
9 1
20由於最右端點-最左端點的距離最大不會超過200000,一次從左往右掃一遍,在過程中維護兩個集合:在當前位置左邊的點,和在當前位置右邊的點。走的時候更新ans即可。詳情如下:
#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;
#define inf 0x3f3f3f3f
typedef long long ll;
int n;
int x[10005];
int w[10005];
int id[10005];
bool cmp(int i,int j)
ll l,r;
ll ans=0x3f3f3f3f3f3f3f3f;
int main()
for(int i=0;isort(id,id+n,cmp);
int pos=x[id[0]];
int now=1;
ll pre=0;
for(int i=1;ill current=0;
l=w[id[0]];r-=w[id[0]];
for(;pos<=x[id[n-1]];)
}printf("%lld\n",ans);
return 0;
}
51nod 1110 距離之和最小 V3
1110 距離之和最小 v3 基準時間限制 1 秒 空間限制 131072 kb 分值 40 難度 4級演算法題 x軸上有n個點,每個點除了包括乙個位置資料x i 還包括乙個權值w i 點p到點p i 的帶權距離 實際距離 p i 的權值。求x軸上一點使它到這n個點的帶權距離之和最小,輸出這個最小的...
51Nod 1110 距離之和最小 V3 三分
分類 三分 51nod 1110 距離之和最小 v3 x軸上有n個點,每個點除了包括乙個位置資料x i 還包括乙個權值w i 點p到點p i 的帶權距離 實際距離 p i 的權值。求x軸上一點使它到這n個點的帶權距離之和最小,輸出這個最小的帶權距離之和。input 第1行 點的數量n。2 n 100...
51nod 1096 距離之和最小
1096 距離之和最小 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 x軸上有n個點,求x軸上一點使它到這n個點的距離之和最小,輸出這個最小的距離之和。input 第1行 點的數量n。2 n 10000 第2 n 1行 點的位置。10 9 p i 10 9 ou...