moofest
来源:互联网 发布:怎么使用同花顺软件 编辑:程序博客网 时间:2024/06/11 13:56
Problem O
Time Limit : 2000/1000ms (Java/Other) Memory Limit : 60000/30000K (Java/Other)
Total Submission(s) : 33 Accepted Submission(s) : 16
Problem Description
Every year, Farmer John's N (1 <= N <= 20,000) cows attend "MooFest",a social gathering of cows from around the world. MooFest involves a variety of events including haybale stacking, fence jumping, pin the tail on the farmer, and of course, mooing. When the cows all stand in line for a particular event, they moo so loudly that the roar is practically deafening. After participating in this event year after year, some of the cows have in fact lost a bit of their hearing.
Each cow i has an associated "hearing" threshold v(i) (in the range 1..20,000). If a cow moos to cow i, she must use a volume of at least v(i) times the distance between the two cows in order to be heard by cow i. If two cows i and j wish to converse, they must speak at a volume level equal to the distance between them times max(v(i),v(j)).
Suppose each of the N cows is standing in a straight line (each cow at some unique x coordinate in the range 1..20,000), and every pair of cows is carrying on a conversation using the smallest possible volume.
Compute the sum of all the volumes produced by all N(N-1)/2 pairs of mooing cows.
Each cow i has an associated "hearing" threshold v(i) (in the range 1..20,000). If a cow moos to cow i, she must use a volume of at least v(i) times the distance between the two cows in order to be heard by cow i. If two cows i and j wish to converse, they must speak at a volume level equal to the distance between them times max(v(i),v(j)).
Suppose each of the N cows is standing in a straight line (each cow at some unique x coordinate in the range 1..20,000), and every pair of cows is carrying on a conversation using the smallest possible volume.
Compute the sum of all the volumes produced by all N(N-1)/2 pairs of mooing cows.
Input
* Line 1: A single integer, N <br> <br>* Lines 2..N+1: Two integers: the volume threshold and x coordinate for a cow. Line 2 represents the first cow; line 3 represents the second cow; and so on. No two cows will stand at the same location. <br>
Output
* Line 1: A single line with a single integer that is the sum of all the volumes of the conversing cows. <br>
Sample Input
43 12 52 64 3
Sample Output
57#include<iostream>#include<cstring>#include<string>#include<cstdio>#include<cmath>#include<algorithm>#include<iomanip>using namespace std;typedef long long ll;#define inf 20010ll c[2][20100];struct node{ int x,v;};node a[20010];bool cmp(node a,node b){ return a.v<b.v;}int lowbit(int i){ return i&(-i);}ll sum(int t,int i){ ll res=0; while(i>0) { res+=c[t][i]; i-=lowbit(i); } return res;}void add(int t,int i,int num){ while(i<=inf) { c[t][i]+=num; i+=lowbit(i); }}int main(){ int i,j,n,t0; ll sumx,t1,ans,aa,b; scanf("%d",&n); ans=0; sumx=0; memset(c,0,sizeof(c)); for(i=1;i<=n;i++) scanf("%d%d",&a[i].v,&a[i].x); sort(a+1,a+1+n,cmp); for(i=1;i<=n;i++)//只计算与一出现的点的和为了避免重复 { sumx+=a[i].x; add(0,a[i].x,1); add(1,a[i].x,a[i].x); t0=sum(0,a[i].x);//表示比a[i].x距离小的点的个数 t1=sum(1,a[i].x);//表示比a[i].x小的点的距离之和 aa=t0*a[i].x-t1; b=sumx-t1-a[i].x*(i-t0);//实际上是sumx-t1-a[i].x-a[i].x*(i-1-t0) ans+=(aa+b)*a[i].v; } cout<<ans<<endl;}//题意 给出n头牛,求max(vi,vj)*abs(xi-xj)的和,首先求v好求,直接按v升序排序,那么怎么求距离之和,一个个求肯定超时,//我们需要知道比i点小的点的个数,及距离之和,很明显需要两个树状数组,一个房点数一个房距离之和
Statistic | Submit | Back
阅读全文
0 0
- MooFest
- MooFest
- MooFest
- MooFest
- moofest
- poj1990 MooFest
- poj1990 MooFest
- poj1990 MooFest
- POJ1990-MooFest
- poj1990 MooFest
- Poj1990 MooFest
- POJ1990 MooFest
- POJ1990-MooFest
- POJ 1990 MooFest
- POJ1990 MooFest,树状数组
- poj 1990 MooFest
- POJ - 1990 MooFest
- POJ 1990 MooFest
- HDU 2688
- 二进制的加法
- SDWebImage 获取缓存,清除缓存
- Linux服务器上安装MYSQL,并且开启远程访问
- POJ 2431Expedition
- moofest
- 电脑显示内存不足的处理方法
- 半年总结
- what is signal?
- 【POJ】3685
- StringBuilder在高性能场景下的正确用法
- node.js中的DIRT程序
- Android面试题1
- CodeForces