●POJ 1990 MooFest
题链:
http://poj.org/problem?id=1990
题解:
树状数组
把牛们按x坐标从小到大排序,依次考虑每头牛对左边和对右边的贡献。
对左边的贡献:从左向右枚举牛,计算以当前牛的声音为最大时和左边其它牛的贡献。
对右边的同理。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define MAXN 20050
#define abs(x) (x<0?-x:x)
using namespace std;
struct Pii{
int a,b;
Pii(int _a=0,int _b=0):a(_a),b(_b){}
bool operator < (const Pii &rtm)const{return b<rtm.b;}
void operator += (const Pii &rtm){a+=rtm.a; b+=rtm.b;};
}cow[MAXN];
struct BIT{
int N; Pii A[MAXN];
int Lowbit(int x){return x&-x;}
void Reset(int n){N=n; memset(A,0,sizeof(A));}
void Modify(int p,Pii w){
while(p<=N) A[p]+=w,p+=Lowbit(p);
}
Pii Query(int p){
static Pii ret; ret.a=ret.b=0;
while(p) ret+=A[p],p-=Lowbit(p);
return ret;
}
}DT;
int main(){
int n; scanf("%d",&n);
Pii tmp; long long ans=0;
for(int i=1;i<=n;i++) scanf("%d%d",&cow[i].a,&cow[i].b);
sort(cow+1,cow+n+1);
for(int k=0;k<=1;k++){
DT.Reset(20000);
if(k==1) reverse(cow+1,cow+n+1);
for(int i=1;i<=n;i++){
tmp=DT.Query(cow[i].a-k);
ans+=1ll*abs((tmp.b*cow[i].b-tmp.a))*cow[i].a;
DT.Modify(cow[i].a,Pii(cow[i].b,1));
}
}
printf("%lld\n",ans);
return 0;
}
●POJ 1990 MooFest的更多相关文章
- POJ 1990 MooFest(zkw线段树)
[题目链接] http://poj.org/problem?id=1990 [题目大意] 给出每头奶牛的位置和至少要多少分贝的音量才能听到谈话 现在求奶牛两两交流成功需要的分贝*距离的总和. [题解] ...
- POJ 1990 MooFest(树状数组)
MooFest Time Limit: 1000MS Mem ...
- 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 ...
- poj 1990 MooFest
题目大意: FJ有n头牛,排列成一条直线(不会在同一个点),给出每头牛在直线上的坐标x.另外,每头牛还有一个自己的声调v,如果两头牛(i和j)之间想要沟通的话,它们必须用同个音调max(v[i],v[ ...
- POJ 1990 MooFest【 树状数组 】
题意:给出n头牛,每头牛有一个听力v,坐标x,两头牛之间的能量为max(v1,v2)*dist(v1,v2),求总的能量值 先将每头牛按照v排序,排完顺序之后,会发现有坐标比当前的x小的,会有坐标比当 ...
- MooFest POJ - 1990 (树状数组)
Every year, Farmer John's N (1 <= N <= 20,000) cows attend "MooFest",a social gather ...
- POJ 1990:MooFest(树状数组)
题目大意:有n头牛,第i头牛声调为v[i],坐标为x[i],任意两值牛i,j沟通所需的花费为abs(x[i]-x[j])*max(v[i],v[j]),求所有牛两两沟通的花费. 分析: 我们将奶牛按声 ...
- I-MooFest(POJ 1990)
MooFest Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 5697 Accepted: 2481 Descripti ...
- POJ1990--POJ 1990 MooFest(树状数组)
Time Limit: 1000MSMemory Limit: 30000K Total Submissions: 8141Accepted: 3674 Description Every year, ...
随机推荐
- Alpha冲刺No.2
冲刺Day2 一.站立式会议计划 分组讨论研究:较好的掌握MYSQL的使用,以及Android Studio图形化界面设计的学习同步进行. 完成设计数据库架构,进阶版. 登录.注册界面的设计. 能从同 ...
- B-end
Beta冲刺成员名单和工作量比例 姓名 学号 负责内容 工作量比例 张梨贤 170327109 负责企业人员的委托/收回授权.第三方机构的委托授权管理.分级统计展示.分级列表展示 26% 黄腾飞 17 ...
- 简单的C语言编译器--概述
在学习了编译原理的相关知识后,逐渐的掌握一个编译器的结构.作用和实现方法.同时,希望自己在不断的努力下写出一个简单的C语言编译器. 实现步骤 词法分析器:将C语言测试代码分解成一个一个的词法单元: ...
- 第201621123043 《Java程序设计》第14周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结与数据库相关内容. 2. 使用数据库技术改造你的系统 2.1 简述如何使用数据库技术改造你的系统.要建立什么表?截图你的表设计. 2 ...
- 创建带缩进的XML
from xml.etree import ElementTree as ET from xml.dom import minidom root = ET.Element('}) son=ET.Sub ...
- Linux安装mongodb总结
由于自己的博客上线部署时需要用到mongodb来存储图片文件,所以先在本地电脑上安装了mongodb做测试,由于之前没接触过mongodb,所以安装过程中遇到了各种小问题,折腾了好久终于安装好并成功启 ...
- python 面向对象设计思想发展史
这篇主要说的是程序设计思想发展历史,分为概述和详细发展历史 一,概述 1940年以前:面向机器 最早的程序设计都是采用机器语言来编写的,直接使用二进制码来表示机器能够识别和执行的 指令和数 据.简单来 ...
- 【微软大法好】VS Tools for AI全攻略
大家都知道微软在Connect();17大会上发布了VS Tools for AI,旨在提升Visual Studio和VSCode对日益增长的深度学习需求的体验.看了一圈,网上似乎没有一个完整的中文 ...
- C# reportview 按时间改变行颜色
//) AND ((Day(Now()) - Day() AND (Day(Now()) - Day()),) AND (Day(Now()) - Day()) OR (Month(Now()) - ...
- 构建自己的 PHP 框架
这是一个系列的文章,项目地址在这里,欢迎大家star. 这个框架前一部分比较像Yii,后一部分比较像Laravel,因为当时正在看相应框架的源码,所以会有不少借鉴参考.捂脸- 这个框架千万不要直接应用 ...