题目链接

借鉴cxlove大神的思路

题意:听力v,位置x,2个牛交流声音为max(v1,v2)*(x1-x2),求总的

10000^2 tle

用的树状数组做的,排序,2个,小于vi的牛的总数和距离总和

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define maxn 20005
int arr[maxn],s[maxn];
//pair<int , int> cow[MAXN]; 类似结构体
struct tree
{
int x,v;
}a[maxn];
int cmp(tree a,tree b)
{
return a.v<b.v;
}
int lowbit(int x)
{
return x&-x;
}
void update(int *a,int x,int val)
{
while(x<maxn)
{
a[x]+=val;
x+=lowbit(x);
}
}
int getsum(int *a,int x)
{
int sum=0;
while(x>0)
{
sum+=a[x];
x-=lowbit(x);
}
return sum;
}
int main()
{
int n,i,j;
while(scanf("%d",&n)!=EOF)
{
memset(arr,0,sizeof(arr));
memset(s,0,sizeof(s));
for(i=0;i<n;i++) scanf("%d%d",&a[i].v,&a[i].x);
__int64 ans=0,total=0;
sort(a,a+n,cmp);
for(i=0;i<n;i++Q){
update(arr,a[i].x,1);
update(s,a[i].x,a[i].x);
total+=a[i].x;
__int64 s_num=getsum(arr,a[i].x);
__int64 s_x=getsum(s,a[i].x);
ans+=a[i].v*(s_num*a[i].x-s_x+total-s_x-(i+1-s_num)*a[i].x); }
printf("%I64d\n",ans);
}
return 0;
}

poj 1990的更多相关文章

  1. ●POJ 1990 MooFest

    题链: http://poj.org/problem?id=1990 题解: 树状数组 把牛们按x坐标从小到大排序,依次考虑每头牛对左边和对右边的贡献. 对左边的贡献:从左向右枚举牛,计算以当前牛的声 ...

  2. POJ 1990 MooFest(zkw线段树)

    [题目链接] http://poj.org/problem?id=1990 [题目大意] 给出每头奶牛的位置和至少要多少分贝的音量才能听到谈话 现在求奶牛两两交流成功需要的分贝*距离的总和. [题解] ...

  3. POJ 1990 MooFest(树状数组)

                                                                        MooFest Time Limit: 1000MS   Mem ...

  4. POJ 1990 MooFest --树状数组

    题意:牛的听力为v,两头牛i,j之间交流,需要max(v[i],v[j])*dist(i,j)的音量.求所有两两头牛交谈时音量总和∑(max(v[i],v[j])*abs(x[j]-x[i])) ,x ...

  5. I-MooFest(POJ 1990)

    MooFest Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 5697   Accepted: 2481 Descripti ...

  6. poj 1990 MooFest

    题目大意: FJ有n头牛,排列成一条直线(不会在同一个点),给出每头牛在直线上的坐标x.另外,每头牛还有一个自己的声调v,如果两头牛(i和j)之间想要沟通的话,它们必须用同个音调max(v[i],v[ ...

  7. MooFest POJ - 1990 (树状数组)

    Every year, Farmer John's N (1 <= N <= 20,000) cows attend "MooFest",a social gather ...

  8. POJ 1990:MooFest(树状数组)

    题目大意:有n头牛,第i头牛声调为v[i],坐标为x[i],任意两值牛i,j沟通所需的花费为abs(x[i]-x[j])*max(v[i],v[j]),求所有牛两两沟通的花费. 分析: 我们将奶牛按声 ...

  9. POJ 1990 线段树

    题意: 思路: 线段树 (一棵就够啦 不像树状数组,还得用两棵) 先对v从小到大排序.每回插入的时候当前的v是最大的,只需要统计它到各个坐标的距离就好了. 里面存两个东西: 这个坐标左边的坐标个数和这 ...

随机推荐

  1. Task线程 同时执行多个任务

    Task taskTest = Task.Factory.StartNew(() => { Console.WriteLine("); },TaskCreationOptions.No ...

  2. 推荐font-size的单位 % em单位

    在如今这个提倡可用性设计以及用户体验设计的网络时代,CSS也是要一同参与其中的.大部分人在CSS代码编写中总是先对整体定义字体尺寸,中文情况下一般为12px,而其实这样以来在通过IE顶部菜单中的“察看 ...

  3. HDU 2227 Find the nondecreasing subsequences (线段树)

    Find the nondecreasing subsequences Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/3 ...

  4. 基于visual Studio2013解决C语言竞赛题之0401阶乘

      题目 解决代码及点评 这个是一道经典的教科书题目,基本上每本基础的c/c++语言教科书都会有这个题目 用来演示循环语句 #include <stdio.h> #include ...

  5. java学习之线程池的实现

    package com.gh.threadpoor; import java.util.concurrent.ExecutorService; import java.util.concurrent. ...

  6. 最短路Dijkstra和Flyod

    Problem Description 在每年的校赛里,所有进入决赛的同学都会获得一件很漂亮的t-shirt.但是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的!所以现在他们想要 ...

  7. win32多线程程序设计笔记(第四章下)

    上一笔记讲了同步机制中的临界区域(Critical Sections).互斥器(Mutexes),下面介绍同步机制中的另外两种. 信号量(Semaphores) 举个例子: 现在有人要租车,接待他的代 ...

  8. C++ Primer 学习笔记_87_用于大型程序的工具 --异常处理

    用于大型程序的工具 --异常处理 引言: C++语言包括的一些特征在问题比較复杂,非个人所能管理时最为实用.如:异常处理.命名空间和多重继承. 相对于小的程序猿团队所能开发的系统需求而言,大规模编程[ ...

  9. swift:打造你自己的折线图

    看到苹果Health里的折线图了吗.我们就是要打造一个这样的折线图.没看过的请看下图. 我们的主题在于折线图本身.其他的包括步数.日平均值等描述类的内容这里就不涉及了. 首先观察,这个图种包含些什么组 ...

  10. AS3清空数组的四种方法

    第一种最简单的方法是: var arr:Array = ["a", "b", "c", "d", "e&quo ...