sgu114. Telecasting station 难度:1
2014-10-02 11:32
295 查看
114. Telecasting station
time limit per test: 0.25 sec.
memory limit per test: 4096 KB
Every city in Berland is situated on Ox axis. The government of the country decided to build new telecasting station. After many experiments Berland scientists came to a conclusion that in any city citizensdispleasure is equal to product of citizens amount in it by distance between city and TV-station. Find such point on Ox axis for station so that sum of displeasures of all cities is minimal.
Input
Input begins from line with integer positive number N (0<N<15000) – amount of cities in Berland. Following N pairs (X, P) describes cities (0<X, P<50000), where X is a coordinate of city and P is an amount of citizens. All numbers separated by whitespace(s).
Output
Write the best position for TV-station with accuracy 10-5.
Sample Input
Sample Output
time limit per test: 0.25 sec.
memory limit per test: 4096 KB
Every city in Berland is situated on Ox axis. The government of the country decided to build new telecasting station. After many experiments Berland scientists came to a conclusion that in any city citizensdispleasure is equal to product of citizens amount in it by distance between city and TV-station. Find such point on Ox axis for station so that sum of displeasures of all cities is minimal.
Input
Input begins from line with integer positive number N (0<N<15000) – amount of cities in Berland. Following N pairs (X, P) describes cities (0<X, P<50000), where X is a coordinate of city and P is an amount of citizens. All numbers separated by whitespace(s).
Output
Write the best position for TV-station with accuracy 10-5.
Sample Input
4 1 3 2 1 5 2 6 2
Sample Output
3.00000 思路:转化成pi个位置为xi的城市则很好求解,此时在中点
#include <cstdio> #include <cmath> #include <algorithm> using namespace std; const double inf=1e18; const double eps=1e-9; const int maxn=15005; typedef pair<int ,int >P; int n; P x[maxn]; int main(){ scanf("%d",&n); int sum=0; for(int i=0;i<n;i++){ scanf("%d%d",&x[i].first,&x[i].second); sum+=x[i].second; } sort(x,x+n); int tot=0; int ans=x[n-1].first; for(int i=0;i<n;i++){ tot+=x[i].second; if(tot>=(sum+1)/2){ans=x[i].first;break;} } printf("%d.00000\n",ans); return 0; }
相关文章推荐
- sgu 122. The book 满足ore性质的汉密尔顿回路 难度:2
- SGU 140. Integer Sequences 线性同余,数论 难度:2
- 快速切题 sgu105. Div 3 数学归纳 数位+整除 难度:0
- SGU 219 Synchrograph tarjian找环,理解题意,图论 难度:3
- sgu106.The equation 拓展欧几里得 难度:0
- SGU 124. Broken line 射线法 eps的精准运用,计算几何 难度:3
- 【SGU】 114. Telecasting station 中位数
- SGU 156 Strange Graph 欧拉回路,思路,汉密尔顿回路 难度:3
- sgu148: B-Station
- SGU 148.B-Station
- SGU 219 Synchrograph tarjian找环,理解题意,图论 难度:3
- 134. Gas Station 类别:贪心算法 难度:medium
- SGU 148 B-Station(堆)
- sgu 129 Inheritance 凸包,线段交点,计算几何 难度:2
- sgu 125 Shtirlits dfs 难度:0
- sgu148:B-Station(dp+堆优化)
- sgu 465 Fire Station Building 三分
- sgu108. Self-numbers 2 滚动数组 打表 难度:1
- sgu 137. Funny Strings 线性同余,数论,构造 难度:3
- 快速切题 sgu 112. a^b-b^a 大数 次方 难度:0 非java:1