BZOJ3378:[USACO]MooFest 狂欢节(树状数组)
Description
Input
Output
Sample Input
3 1
2 5
2 6
4 3
Sample Output
57
Solution
首先把奶牛按听力排序,那么$max(vi,vj)~(j<i)$一定是$v_i$。问题变成了对于每个$i$,求它和前面奶牛的$dis$和。
开两个树状数组$A$和$B$,$A_i$表示下标为$i$的奶牛的坐标和,$B_i$表示下标为$i$的奶牛的个数,然后算一下就好了。
Code
#include<iostream>
#include<cstdio>
#include<algorithm>
#define N (20009)
#define LL long long
using namespace std; int n;
pair<int,int>a[N];
LL ans,p1,q1,p2,q2; struct BIT
{
LL c[N]; void Update(int x,int k)
{
for (; x<=; x+=(x&-x)) c[x]+=k;
}
LL Query(int x)
{
LL ans=;
for (; x; x-=(x&-x)) ans+=c[x];
return ans;
}
}A,B; inline int read()
{
int x=,w=; char c=getchar();
while (c<'' || c>'') {if (c==-'-') w=-; c=getchar();}
while (c>='' && c<='') x=x*+c-'', c=getchar();
return x*w;
} int main()
{
n=read();
for (int i=; i<=n; ++i) a[i].first=read(), a[i].second=read();
sort(a+,a+n+);
for (int i=; i<=n; ++i)
{
int v=a[i].first,x=a[i].second;
A.Update(x,x); B.Update(x,);
LL p1=A.Query(x-),q1=B.Query(x-);
ans+=v*(q1*x-p1);
LL p2=A.Query()-A.Query(x),q2=B.Query()-B.Query(x);
ans+=v*(p2-q2*x);
}
printf("%lld\n",ans);
}
BZOJ3378:[USACO]MooFest 狂欢节(树状数组)的更多相关文章
- POJ1990--POJ 1990 MooFest(树状数组)
Time Limit: 1000MSMemory Limit: 30000K Total Submissions: 8141Accepted: 3674 Description Every year, ...
- POJ 1990 MooFest(树状数组)
MooFest Time Limit: 1000MS Mem ...
- POJ_1990 MooFest 【树状数组】
一.题面 POJ1990 二.分析 一个简单的树状数组运用.首先要把样例分析清楚,凑出57,理解一下.然后可以发现,如果每次取最大的v就可以肆无忌惮的直接去乘以坐标差值就可以了,写代码的时候是反着来的 ...
- POJ 1990 MooFest【 树状数组 】
题意:给出n头牛,每头牛有一个听力v,坐标x,两头牛之间的能量为max(v1,v2)*dist(v1,v2),求总的能量值 先将每头牛按照v排序,排完顺序之后,会发现有坐标比当前的x小的,会有坐标比当 ...
- POJ 1990:MooFest(树状数组)
题目大意:有n头牛,第i头牛声调为v[i],坐标为x[i],任意两值牛i,j沟通所需的花费为abs(x[i]-x[j])*max(v[i],v[j]),求所有牛两两沟通的花费. 分析: 我们将奶牛按声 ...
- [bzoj3378][Usaco2004 Open]MooFest 狂欢节_树状数组
MooFest 狂欢节 bzoj-3378 Usaco-2004 Open 题目大意:给定一个n个数的a序列,每两个数之间有一个距离,两个点之间的权值为$max(a[i],a[j])*dis(i,j) ...
- [BZOJ3378] [Usaco2004 Open]MooFest 狂欢节(树状数组)
传送门 开2个树状数组 一个存的是下标,一个存的是数量 细节...看标称吧,懒得说了,好气啊 #include <cstdio> #include <iostream> #in ...
- MooFest POJ - 1990 (树状数组)
Every year, Farmer John's N (1 <= N <= 20,000) cows attend "MooFest",a social gather ...
- 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 ...
随机推荐
- Your local changes to the following files would be overwritten by merge:
在服务器改动之后,用sourcetree提交会产生冲突,解决办法:
- 【软工神话】第四篇(Alpha冲刺)
前言:咳咳,一个多月了,最近忙这忙那,都把这个故事给落下了,昨晚刚回到家,白天得干活,晚上赶紧把这个故事写完,以此纪念自己的软工. 说明:故事中的人物均是化名,故事情节经过些许加工,故事情节并没有针对 ...
- 05-HTML-超链接标签
<html> <head> <title>超链接标签学习</title> <meta charset="utf-8"/&g ...
- BZOJ2746: [HEOI2012]旅行问题(AC自动机 LCA)
Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 1188 Solved: 383[Submit][Status][Discuss] Descripti ...
- 【20190221】HTTP-URI与URL
URI(uniform resource identifier)统一资源标识符是由某个协议方案表示的资源的定位标识符, URI 用字符串标识某一互联网资源,而 URL 表示资源的地点(互联网上所处的位 ...
- JMeter Dubbo请求插件jmeter-plugin-dubbo.jar
JMeter Dubbo请求插件jmeter-plugin-dubbo.jar by:授客 QQ:1033553122 测试环境 apache-jmeter-3.2 Dubbo 2.6.2 声明 ...
- 全参考视频质量评价方法(PSNR,SSIM)以及与MOS转换模型
转载处:http://blog.csdn.NET/leixiaohua1020/article/details/11694369 最常用的全参考视频质量评价方法有以下2种: PSNR(峰值信噪比):用 ...
- matlab练习程序(点云表面法向量)
思路还是很容易想到的: 1.首先使用KD树寻找当前点邻域的N个点,这里取了10个,直接调用了vlfeat. 2.用最小二乘估计当前邻域点组成的平面,得到法向量. 3.根据当前邻域点平均值确定邻域质心, ...
- [python]函数返回多个return值
python支持函数直接返回多个变量,具体用法如下: >>> def test(): ... a=2 ... b=3 ... return a,b ... >>> ...
- Keras深度学习框架安装及快速入门
1.下载安装Keras 如果你是安装的Anaconda组合套件,可以直接在Prompt上执行安装命令:pip install keras 注意:最下面为Successfully...表示安装成功! 2 ...