get 到的

这种需要求 含 max 的式子枚举最大值的方法非常普遍。

类似的,还有含 min , gcd 的式子,枚举他们也很普遍

主要难点

我们首先想到,先按 v 从小到大排序,因为这样既可以简化题意(即题意:每次都只需求第i头牛 之前的牛的坐标与x[i]差的绝对值 的和(设为s_ans),最后乘以个v[i]即可,(这个应该就是枚举max了) ); 又可以避免重复计算距离

思考难点(即简化后的题意): 已知是考树状数组的题目,又知它方便于求和。

于是...我们点开了题解...

定义:第i头牛前面有num头牛的x坐标比x[i]小,并且他们的和为sum

思考得s_ans =i头牛前面的,xx[i]的牛对答案的贡献s1 +i头牛前面的,xx[i]的牛对答案的贡献s2

s1 = num * a[i].x - sum;

s2 = all - sum - a[i].x * (i-1-num);

#include<cstdio>
#include<algorithm>
using namespace std;
#define lowbit(x) x&(-x)
const int MAX = 20000+9; int n;
long long ans;
int t_n[MAX]/*num*/, t_sum[MAX];
struct node{
int x, v;
bool operator < (const node& xx) const {
return v < xx.v;
}
}a[MAX]; void add(int x, int k, int *t) {
while(x <= MAX) t[x] += k, x += lowbit(x);//注意:坐标求和的右边界不是n
}
int query(int x, int *t) {
int res = 0;
while(x) {res += t[x], x -= lowbit(x);}
return res;
} int main() {
freopen("01.in","r",stdin);
freopen("01.out","w",stdout);
scanf("%d", &n);
for(int i = 1; i <= n; i++) scanf("%d%d",&a[i].v, &a[i].x);
sort(a+1, a+1+n);
int all = 0, num, sum;
for(int i = 1; i <= n; i++) {
num = query(a[i].x, t_n);//先query再add,因为求的是i牛前面的
sum = query(a[i].x, t_sum);
ans += (long long)( num*a[i].x-sum + all-sum-a[i].x*(i-1-num) )*a[i].v;
add(a[i].x, 1, t_n);
add(a[i].x, a[i].x, t_sum);//?
all += a[i].x;
}
printf("%lld\n",ans);
return 0;
}

luoguP5094 [USACO04OPEN]MooFest 狂欢节的更多相关文章

  1. [bzoj3378][Usaco2004 Open]MooFest 狂欢节_树状数组

    MooFest 狂欢节 bzoj-3378 Usaco-2004 Open 题目大意:给定一个n个数的a序列,每两个数之间有一个距离,两个点之间的权值为$max(a[i],a[j])*dis(i,j) ...

  2. bzoj3378[Usaco2004 Open]MooFest 狂欢节*

    bzoj3378[Usaco2004 Open]MooFest 狂欢节 题意: n只奶牛,第i只听力为vi,坐标为xi,两只奶牛聊天时音量是max(vi,vj)*abs(xi-xj).求n(n-1)/ ...

  3. BZOJ3378:[USACO]MooFest 狂欢节(树状数组)

    Description 每一年,约翰的N(1≤N≤20000)只奶牛参加奶牛狂欢节.这是一个全世界奶牛都参加的大联欢.狂欢节包括很多有趣的活动,比如干草堆叠大赛.跳牛栏大赛,奶牛之间有时还相互扎屁股取 ...

  4. [BZOJ3378] [Usaco2004 Open]MooFest 狂欢节(树状数组)

    传送门 开2个树状数组 一个存的是下标,一个存的是数量 细节...看标称吧,懒得说了,好气啊 #include <cstdio> #include <iostream> #in ...

  5. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  6. POJ 1990 MooFest(树状数组)

                                                                        MooFest Time Limit: 1000MS   Mem ...

  7. “双十一”购物狂欢节,电商运营和商业智能(BI)才是绝配

         百年前,人们获取信息的方式是通过报纸.书籍:十年前,人们获取信息的方式是通过传统PC互联网:而如今,在4G网络高速发展的浪潮下,伴随着移动智能终端的普及,人们获取信息的方式已经逐渐转向了移动 ...

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

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

  9. [USACO] 2004 Open MooFest 奶牛集会

    题目背景 MooFest, 2004 Open 题目描述 约翰的N 头奶牛每年都会参加"哞哞大会".哞哞大会是奶牛界的盛事.集会上的活动很 多,比如堆干草,跨栅栏,摸牛仔的屁股等等 ...

随机推荐

  1. 以太网驱动的流程浅析(五)-mii_bus初始化以及phy id的获取【原创】

    以太网驱动的流程浅析(五)-mii_bus初始化以及phy id的获取 Author:张昺华 Email:920052390@qq.com Time:2019年3月23日星期六 此文也在我的个人公众号 ...

  2. myeclipse 9.0 破解方法,亲测可用

    MyEclipse 9.0的破解方法,步骤如下: 1.破解公钥,确保MyEclipse没有开启,否则失败! 用WinRAR打开Common\plugins\com.genuitec.eclipse.c ...

  3. kettle教程---通过配置表格配置实现数据的批量增量更新(实用)

    本文接上篇文章,上面文章讲的是,通过配置文件的全量更新,现在说下增量更新 如上图所示,涉及到1个转换和1个作业. 1-表增量同步(转换) 可以通过读取同步表参数这个excel表格文件,获取表名称和同步 ...

  4. 一、itk在VS2019上面的安装 和例子(HelloWorld)运行

    一.Itk简介 vtk是专门用于医疗图像处理的函数库,类似opencv. 这篇博客主要是讲解安装vtk之后的例子的运行,即如何构建自己的第一个ITK例子 二.Itk安装 Itk安装参考这篇博客: ht ...

  5. Web-[RoarCTF 2019]Easy Calc

    看看题目内容,一个计算器,并且过滤了非数字的值,查看源码,上了waf,并且在calc.php显示waf的规则 <?php error_reporting(0); if(!isset($_GET[ ...

  6. Leetcode 1239. 串联字符串的最大长度

    地址 https://leetcode-cn.com/problems/maximum-length-of-a-concatenated-string-with-unique-characters/s ...

  7. P4762 [CERC2014]Virus synthesis

    题意 真是道回文自动机好题. 首先考虑答案必定是一个回文串+剩余部分的形式,因此可以建出回文自动机,之后考虑每个长度为偶数的回文串. 对于一个长度为偶数的回文串,设它在回文自动机上对应的节点为\(x\ ...

  8. Paper | LISTEN, ATTEND AND SPELL: A NEURAL NETWORK FOR LARGE VOCABULARY CONVERSATIONAL SPEECH RECOGNITION

    目录 1. 相关工作 2. 方法细节 2.1 收听器 2.2 注意力和拼写 本文提出了一个基于神经网络的语音识别系统List, Attend and Spell(LAS),能够将语音直接转录为文字. ...

  9. 解决最新Java12 安装

    题外话: 因为我笔记本上的java用的版本是比较老的,从java8开始已经不再需要classpath java-home  path  这几个安装界的行业规范,基本上只需要安装 然后在path路径下 ...

  10. 洛谷 P1351 (枚举)

    ### 洛谷P1351 题目链接 ### 题目大意: 给你 n 个节点, n-1 条边的无向联通图.若定义(u,v)表示 u 与 v 点的最短距离,如果 (u,v)值为 2 ,则这两个点的点权之积(即 ...