POJ 1990:MooFest(树状数组)
题目大意:有n头牛,第i头牛声调为v[i],坐标为x[i],任意两值牛i,j沟通所需的花费为abs(x[i]-x[j])*max(v[i],v[j]),求所有牛两两沟通的花费。
分析:
我们将奶牛按声调升序排列,然后从前往后计算,由于奶牛i前面的奶牛声调都比它小,则最大声调被确定为v[i],然后只要计算之前所有奶牛与该奶牛距离即可。
如何快速求出距离和?可以知道对于奶牛j,当它比奶牛i靠左时,其距离为(x[i]-x[j]),前面所有比i靠左的奶牛与奶牛i距离和为∑(x[i]-x[j])然而它也就是∑x[i]-∑x[j],前面一项等于x[i]*(左边奶牛个数),后一项就是左边奶牛坐标数值和,两者相减的到结果要乘v[i],右边的情况也一样,左右两边相加,就是这头牛与比它小的奶牛的花费,把每头牛的总花费加起来就是结果。
代码:
program fest;
var
bit:array[..,..]of int64;
v,x:array[..]of int64;
n,m,s,a,b,t,g,ans:int64; i:longint;
procedure qsort(l,h:longint);
var i,j,t,m:longint;
begin i:=l; j:=h;
m:=v[(i+j) div ];
repeat
while v[i]<m do inc(i);
while m<v[j] do dec(j);
if i<=j then
begin t:=v[i]; v[i]:=v[j]; v[j]:=t;t:=x[i]; x[i]:=x[j]; x[j]:=t;
inc(i); dec(j); end; until i>j;
if i<h then qsort(i,h); if j>l then qsort(l,j); end;
procedure add(l,i,k:longint);
begin
while i<=m do
begin
inc(bit[l,i],k); inc(i,i and (-i));
end;
end;
function query(l,i:longint):int64;
var s:longint;
begin
s:=;
while i> do
begin
inc(s,bit[l,i]); dec(i,i and (-i));
end;
exit(s);
end;
begin
assign(input,'fest.in');
reset(input);
assign(output,'fest.out');
rewrite(output);
readln(n);
for i:= to n do
begin readln(v[i],x[i]); if x[i]>m then m:=x[i]; end;
qsort(,n);
for i:= to n do
begin
a:=query(,x[i]); b:=query(,x[i]); s:=a*x[i]-b;
t:=query(,m)-a; g:=query(,m)-b; inc(s,g-x[i]*t);
inc(ans,v[i]*s);
add(,x[i],); add(,x[i],x[i]);
end;
writeln(ans);
close(input); close(output);
end.
POJ 1990:MooFest(树状数组)的更多相关文章
- 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 2229 Ultra-QuickSort(树状数组求逆序数)
题目链接:http://poj.org/problem?id=2299 题目大意:给定n个数,要求这些数构成的逆序对的个数. 可以采用归并排序,也可以使用树状数组 可以把数一个个插入到树状数组中, 每 ...
- POJ 2299 【树状数组 离散化】
题目链接:POJ 2299 Ultra-QuickSort Description In this problem, you have to analyze a particular sorting ...
- poj 2155 Matrix (树状数组)
Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 16797 Accepted: 6312 Descripti ...
- poj 3067 - Japan(树状数组)
先按第一个数从大到小排序,相等的情况下,第二个数按照从大到小排序..... 预处理后,照着树状数组写就行了... 注意:k的最大值应取1000*1000 代码如下: include <cstdi ...
- poj 2481 - Cows(树状数组)
看的人家的思路,没有理解清楚,,, 结果一直改一直交,,wa了4次才交上,,, 注意: 为了使用树状数组,我们要按照e从大到小排序.但s要从小到大.(我开始的时候错在这里了) 代码如下: #inclu ...
- POJ 3468(树状数组的威力)
之前说过这是线段树的裸题,但是当看了http://kenby.iteye.com/blog/962159 这篇题解后我简直震惊了,竟然能如此巧妙地转化为用树状数组来处理,附上部分截图(最好还是进入原网 ...
- POJ 2352 【树状数组】
题意: 给了很多星星的坐标,星星的特征值是不比他自己本身高而且不在它右边的星星数. 给定的输入数据是按照y升序排序的,y相同的情况下按照x排列,x和y都是介于0和32000之间的整数.每个坐标最多有一 ...
- POJ 2182【树状数组】
题意: 每头牛有编号,他们乱序排成一排,每头牛只知道前边比自己序号小的有几位. 思路: 递推,最后一只牛的编号是确定的,然后不断进行区间更新,直到找到某个空位前方恰好有n个空位. 这题跟某道排队的题思 ...
- POJ 2309 BST 树状数组基本操作
Description Consider an infinite full binary search tree (see the figure below), the numbers in the ...
随机推荐
- 【洛谷5358】[SDOI2019] 快速查询(模拟)
点此看题面 大致题意: 有单点赋值.全局加法.全局乘法.全局赋值.单点求值.全局求和\(6\)种操作.现在给出操作序列,以及\(t\)对正整数\(a_i,b_i\).让你处理\(t*q\)次操作,每次 ...
- 【BZOJ2242】[SDOI2011] 计算器(数学模板三合一)
点此看题面 大致题意: 让你完成三种操作:求\(Y^Z\%P\)的值,求满足\(XY\equiv Z(mod\ P)\)的最小非负整数\(X\),求满足\(Y^X\equiv Z(mod\ P)\)的 ...
- JS中的async/await的执行顺序详解
虽然大家知道async/await,但是很多人对这个方法中内部怎么执行的还不是很了解,本文是我看了一遍技术博客理解 JavaScript 的 async/await(如果对async/await不熟悉 ...
- vue实现tab切换功能精简版
<template> <div> <p class="tabs" v-for="(list,index) in lists" :c ...
- question 002: dev c++ 当中如何调整字体大小?How to get the first program with C++? c++属于什么软件?
方法:按住ctrl+鼠标滑轮滚动 c++属于系统软件还是应用软件? 说哪个都不对,编译之前属于应用软件,after compile ,it belongs to system software. #i ...
- 51nod——1285 山峰和分段(暴力出奇迹)
要求每段的点数都一样,因此分的段数cnt肯定是n的因子,要求每段都有山峰,因此cnt肯定小于等于山峰数量.分段的宽度d=n/cnt,对山峰数量做一个前缀和,检查一下每一段的山峰数量是否没有增加即可. ...
- LAMP PHP 详解
目录 LAMP PHP 详解 LAMP 请求流程与原理 PHP 简介 PHP Zend Engine Opcode php 配置详解 php 加速器 部署LAMP 使用 php 连接 mysql 最基 ...
- 第四篇:python操作数据库时的传参问题
python在操作数据库执行sql的时候我们经常会遇到传参问题,以下是我总结的几种方法: 1.格式化字符串 city = 'beijing'cur.execute(“SELECT * FROM %s ...
- jupyter notebook(一)——anaconda安装后jupyter不能自动跳转网页
1.问题描述 之前没有遇到过.这次重装系统,发现安装anaconda这个集成版python后,jupyter notebook打开后不能自动跳转打开的交互网页. 系统是windows7.anacond ...
- exec , 元类,__new__, __call__ , 单例模式 , 异常
1,类也是对象 ''' 动态语言 可以在运行期间 动态生成类 修改对象属性 静态语言 ''''' ''' type(object_or_name, bases, dict) type(object) ...