P2345 奶牛集会

题目背景

MooFest, 2004 Open

题目描述

约翰的N 头奶牛每年都会参加“哞哞大会”。哞哞大会是奶牛界的盛事。集会上的活动很

多,比如堆干草,跨栅栏,摸牛仔的屁股等等。它们参加活动时会聚在一起,第i 头奶牛的坐标为Xi,没有两头奶牛的坐标是相同的。奶牛们的叫声很大,第i 头和第j 头奶牛交流,会发出max{Vi; Vj}×|Xi − Xj | 的音量,其中Vi 和Vj 分别是第i 头和第j 头奶牛的听力。假设每对奶牛之间同时都在说话,请计算所有奶牛产生的音量之和是多少。

输入输出格式

输入格式:

• 第一行:单个整数N,1 ≤ N ≤ 20000

• 第二行到第N + 1 行:第i + 1 行有两个整数Vi 和Xi,1 ≤ Vi ≤ 20000; 1 ≤ Xi ≤ 20000

输出格式:

• 单个整数:表示所有奶牛产生的音量之和


对于这个题,要求的即为 \(\sum_{i=1}^n V_i*\sum_{V_j<V_i} |x_i-x_j|\)

对于音量\(V\),我们可以排序来做以消除影响。

但对于带绝对值的距离,就不太好处理了。

我们考虑去掉绝对值。
\(\sum_{i=1}^n V_i*(\sum_{V_j<V_i,x_i>x_j} (x_i-x_j)*\sum_{V_j<V_i,x_i<x_j} (x_j-x_i))\)
\(\Rightarrow \sum_{i=1}^n( V_i*(\sum_{ V_j<V_i,x_i<x_j }x_j )-V_i*(\sum_{ V_j<V_i,x_i>x_j }x_j )+x_i*(k_1-k_2) )\)(其中,\(k_1\)存储位置在\(x_i\)左边的点的个数,\(k_2\)右边)

我们使用两个树状数组\(c1\)和\(c2\)分别维护\(1\)~\(n\)的坐标之和,和\(1\)~\(n\)的点的个数。其中\(1\)~\(n\)表示按位置离散化的值。

我们将\(v\)从小到大排序并将这个点加入树状数组即可。


code:

#include <cstdio>
#include <algorithm>
#define ll long long
using namespace std;
const ll N=20010;
ll c1[N],c2[N];//奶牛个数,奶牛距离和
ll n;
struct node
{ll x,v,i;bool friend operator <(node n1,node n2){return n1.x<n2.x;}
}cow[N],d[N];
bool cmp(node n1,node n2)
{return n1.v<n2.v;
}void change(ll i,ll delta)
{while(i<=n){c1[i]++;c2[i]+=delta;i+=i&-i;}
}ll x_query(ll i)
{ll x=0;while(i){x+=c2[i];i-=i&-i;}return x;
}ll c_query(ll i)
{ll c=0;while(i){c+=c1[i];i-=i&-i;}return c;
}
ll ans=0;
int main()
{scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d%d",&cow[i].v,&cow[i].x);sort(cow+1,cow+1+n);for(int i=1;i<=n;i++)cow[i].i=i;for(int i=1;i<=n;i++){d[cow[i].i].i=i;d[cow[i].i].v=cow[i].v;d[cow[i].i].x=cow[i].x;}sort(d+1,d+1+n,cmp);for(int i=1;i<=n;i++){ans+=d[i].v*(x_query(n)-2*x_query(d[i].i)+(2*c_query(d[i].i)-c_query(n))*d[i].x);change(d[i].i,d[i].x);}printf("%lld\n",ans);return 0;
}

2018.6.2

转载于:https://www.cnblogs.com/butterflydew/p/9126070.html

洛谷 P2345 奶牛集会 解题报告相关推荐

  1. 读数据优化 绝对值函数优化 加速 示范程序 洛谷P2345奶牛集会

    # pragma G++ optimize "O3"//一号加速 #include<cstdio> #include<cctype> #include< ...

  2. 洛谷1056 排座椅 解题报告

    洛谷1056 排座椅 本题地址: http://www.luogu.org/problem/show?pid=1056 题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头 ...

  3. 洛谷1067 多项式输出 解题报告

    洛谷1067 多项式输出 本题地址: http://www.luogu.org/problem/show?pid=1067 题目描述 一元 n 次多项式可用如下的表达式表示: 其中,aixi称为 i ...

  4. 洛谷 P4475 巧克力王国 解题报告

    P4475 巧克力王国 题目描述 巧克力王国里的巧克力都是由牛奶和可可做成的.但是并不是每一块巧克力都受王国人民的欢迎,因为大家都不喜欢过于甜的巧克力. 对于每一块巧克力,我们设 \(x\) 和 \( ...

  5. 洛谷 P4706 取石子 解题报告

    P4706 取石子 题目描述 现在 Yopilla 和 yww 要开始玩游戏! 他们在一条直线上标记了 \(n\) 个点,从左往右依次标号为 \(1, 2, ..., n\) .然后在每个点上放置一些 ...

  6. 洛谷 P1309 瑞士轮 解题报告

    P1309 瑞士轮 题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公平,偶然性较低 ...

  7. 洛谷 P2184 贪婪大陆 解题报告

    P2184 贪婪大陆 题目背景 面对蚂蚁们的疯狂进攻,小\(FF\)的\(Tower\) \(defence\)宣告失败--人类被蚂蚁们逼到了\(Greed\) \(Island\)上的一个海湾.现在 ...

  8. 洛谷 P1136 迎接仪式 解题报告

    P1136 迎接仪式 题目描述 LHX教主要来X市指导OI学习工作了.为了迎接教主,在一条道路旁,一群Orz教主er穿着文化衫站在道路两旁迎接教主,每件文化衫上都印着大字.一旁的Orzer依次摆出&q ...

  9. 洛谷 P2596 [ZJOI2006]书架 解题报告

    P2596 [ZJOI2006]书架 题目描述 小T有一个很大的书柜.这个书柜的构造有些独特,即书柜里的书是从上至下堆放成一列.她用1到n的正整数给每本书都编了号. 小T在看书的时候,每次取出一本书, ...

最新文章

  1. Asp.net支持三种类型的cache[转]
  2. 创业者们的19个Surprises
  3. 【渝粤题库】国家开放大学2021春2626药事管理与法规题目
  4. TortoiseGit 克隆_入门试炼_03
  5. python制作收费标准_在Python中做一次简单定制1
  6. php7.3 怎办么和apache,apache集成php7.3.5的详细步骤
  7. mysql ddl 进度_MySQL DDL详情揭露
  8. 抖音回应视频泄露:草稿不会上传后台;苹果开卖5000元印度版iPhone XR;Jboot 2.2.5发布|极客头条...
  9. C# 之 Excel 导入一列中既有汉字又有数字:数字可以正常导入,汉字导入为空
  10. ROS只使用思岚A1激光雷达进行slam建图
  11. 奇迹服务器断开怎么修复,奇迹挂机怎么总是掉线?
  12. 读后感:八部众---走出软件作坊:三五个人十来条枪 如何成为开发正规军(二十三)
  13. 什么是真正的格局?遇到烂人不计较,碰到破事别纠缠
  14. 用python刷微信投票_Python——开发一个自动化微信投票器【附代码实例方法】
  15. HTML5期末大作业:在线音乐网站设计——简洁bootstrap响应式社交音乐网站模板html整站(38页) HTML+CSS+JavaScript
  16. 金立android 7.1.1,金立K30Pro正式上市:运行安卓7.1.1系统,699元起
  17. 交换机vlan配置实训心得_交换机与路由器的实训心得
  18. python报错ValueError: Must pass 2-d input. shape=(5, 1, 10)解决方案
  19. 收藏,全网开发者都在学的26门AI课程!
  20. L1-6 福到了 (模拟)

热门文章

  1. 面向对象(购买电脑)
  2. 布道侠【永久免费】利用简单布道的方法 让人人成为布道大师
  3. 使用plsql创建的用户,以普通身份无法登录进去,提示ORA-01017: 用户名/口令无效; 登录被拒绝
  4. 计算机英语职称考试报名时间2015,2015年度全国职称计算机考试3月6日起报名
  5. tiktok纯协议,私信功能
  6. 华为watch手表打开USB调试与驱动安装方法
  7. 大四毕业生想要找实习程序员工作 ,我总结了三点分享给大家
  8. Typora-图片上传支持插件配置
  9. 接下来告诉大家怎么让音乐淡入淡出
  10. Matlab画图plot(x1,y1,‘ro‘,x1,y1)