P2345 奶牛集会andP2657 低头一族
做法是一样的
- 题目背景
- MooFest, Open
- 题目描述
- 约翰的N 头奶牛每年都会参加“哞哞大会”。哞哞大会是奶牛界的盛事。集会上的活动很
- 多,比如堆干草,跨栅栏,摸牛仔的屁股等等。它们参加活动时会聚在一起,第i 头奶牛的坐标为Xi,没有两头奶牛的坐标是相同的。奶牛们的叫声很大,第i 头和第j 头奶牛交流,会发出max{Vi; Vj}×|Xi − Xj | 的音量,其中Vi 和Vj 分别是第i 头和第j 头奶牛的听力。假设每对奶牛之间同时都在说话,请计算所有奶牛产生的音量之和是多少。
- 输入输出格式
- 输入格式:
- • 第一行:单个整数N, ≤ N ≤
- • 第二行到第N + 行:第i + 行有两个整数Vi 和Xi, ≤ Vi ≤ ; ≤ Xi ≤
- 输出格式:
- • 单个整数:表示所有奶牛产生的音量之和
- 输入输出样例
- 输入样例#:
- 输出样例#:
- 说明
- 朴素O(N2)
- 类似于归并排序的二分O(N logN)
- 树状数组O(N logN)
V奶牛的集会
- 题目描述
- 一群青年人排成一队,用手机互相聊天。
- 每个人的手机有一个信号接收指标,第i个人的接收指标设为v[i]。
- 如果位置在x[i]的人要和位置在xj的人聊天,那么这两人组成的一对的信号发射强度就是abs(x[i]-x[j])*max(v[i],v[j]).
- 现在我们想知道,这些人所有对子中的信号发射强度的总和。
- 输入输出格式
- 输入格式:
- 第一行一个整数N,接下来N行,每行两个整数v[i]和x[i]。
- 输出格式:
- 所有对的信号发射强度总和。
- 输入输出样例
- 输入样例#:
- 输出样例#:
- 说明
- 对于40%的数据,N<=,
- 对于100%的数据,N<=, ≤x[i]≤,
- [color=red]注意:可能有两人在同一个位置
- 答案在int64或long long范围内[/color]
低头一族
思路:
先按照V排一下序只考虑X就行了,因为对于V大的来说,他和别人的贡献只是X的差得和。(这个用lowbit维护)。
- #include<iostream>
- #include<cstdio>
- #include<string.h>
- #include<algorithm>
- #include<math.h>
- #include<cmath>
- using namespace std;
- typedef long long LL;
- int n;
- LL num[],tot[];
- struct node{
- int x;
- int v;
- }a[];
- int lowbit(int x) {return x&(-x);}
- bool cmp(node a,node b)
- {
- return a.v<b.v;
- }
- long long ans;
- int MAX;
- void Add(LL *C,int x,int y)
- {
- while(x<=MAX)
- {
- C[x]+=y;
- x+=lowbit(x);
- }
- }
- LL query(LL *C,int x)
- {
- LL res=;
- while(x>)
- {
- res+=C[x];
- x-=lowbit(x);
- }
- return res;
- }
- int main()
- {
- scanf("%d",&n);
- for(int i=;i<=n;i++)
- scanf("%d%d",&a[i].v,&a[i].x),MAX=max(MAX,a[i].x);
- sort(a+,a++n,cmp);
- for(int i=,x,v;i<=n;i++)
- {
- x=a[i].x,v=a[i].v;
- LL totl,totr,numl,numr;
- numl=query(num,x-);totl=query(tot,x-);
- numr=query(num,MAX)-query(num,x);totr=query(tot,MAX)-query(tot,x);
- ans+=v*(totr-totl+x*numl-x*numr);
- Add(num,x,);
- Add(tot,x,x);
- }
- cout<<ans;
- return ;
- }
P2345 奶牛集会andP2657 低头一族的更多相关文章
- 洛谷 P2345 奶牛集会 解题报告
P2345 奶牛集会 题目背景 MooFest, 2004 Open 题目描述 约翰的N 头奶牛每年都会参加"哞哞大会".哞哞大会是奶牛界的盛事.集会上的活动很 多,比如堆干草,跨 ...
- luogu P2345 奶牛集会
二次联通门 : luogu P2345 奶牛集会 /* luogu P2345 奶牛集会 权值线段树 以坐标为下标, 坐标为值建立线段树 对奶牛按听力由小到大排序 对于要查的牛 每次第i次放入奶牛起作 ...
- 洛谷P2345 奶牛集会
题目背景 MooFest, 2004 Open 题目描述 约翰的N 头奶牛每年都会参加“哞哞大会”.哞哞大会是奶牛界的盛事.集会上的活动很 多,比如堆干草,跨栅栏,摸牛仔的屁股等等.它们参加活动时会聚 ...
- 洛谷 P2345 奶牛集会
https://www.luogu.org/problem/show?pid=2345 题目描述 约翰的N 头奶牛每年都会参加“哞哞大会”.哞哞大会是奶牛界的盛事.集会上的活动很 多,比如堆干草,跨栅 ...
- p2345 奶牛集会
传送门 题目 约翰的N 头奶牛每年都会参加“哞哞大会”.哞哞大会是奶牛界的盛事.集会上的活动很 多,比如堆干草,跨栅栏,摸牛仔的屁股等等.它们参加活动时会聚在一起,第i 头奶牛的坐标为Xi,没有两头奶 ...
- luogu P2345 奶牛集会 |排序+树状数组
题目描述 约翰的N 头奶牛每年都会参加"哞哞大会".哞哞大会是奶牛界的盛事.集会上的活动很多,比如堆干草,跨栅栏,摸牛仔的屁股等等.它们参加活动时会聚在一起,第i 头奶牛的坐标为X ...
- AC日记——奶牛集会 洛谷 P2345
奶牛集会 思路: 把奶牛按照v排序: 然后,每次都把奶牛放入一个集合s: 因为奶牛已经排序: 所以,每次第i次放入奶牛起作用的v就是vi: 每次ans+=(xi*sum-sumxl)*vi+(sumx ...
- usaco 奶牛集会 && 奶牛抗议
奶牛集会 Description 约翰家的N头奶牛每年都会参加“哞哞大会” .哞哞大会是世界奶牛界的盛事.集会上 的活动很多,比如堆干草,跨栅栏,摸牛仔的屁股等等.当然,哞哞大叫肯定也包括在内. 奶牛 ...
- [luogu]P2657低头一族[树状数组]
[luogu]P2657 低头一族 题目描述 一群青年人排成一队,用手机互相聊天. 每个人的手机有一个信号接收指标,第i个人的接收指标设为v[i]. 如果位置在x[i]的人要和位置在xj的人聊天,那么 ...
随机推荐
- TGraphiControl响应WM_MOUSEMOVE的过程(以TPaintBox为例)good
起因:非Windows句柄控件也可以处理鼠标消息,我想知道是怎么处理的:并且想知道处理消息的顺序(比如TPaintBox和TForm都响应WM_Mouse消息该怎么办)界面:把TPaintBox放到T ...
- babel的安装和使用方法
要使用Babel, 我们需要nodeJS的环境和npm, 主要安装了nodeJS, npm就默认安装了 , 现在安装nodeJS很简单了, 直接下载安装就好了: 安装es-checker 在使用Bab ...
- RedisCluster集群原理
主从复制,数据值每个服务器都存了. 针对redis集群的解决方案, 连接这个集群,不用在乎Master了 6台redis 1.why use Redis? 减轻数据库访问压力 2.持久化 RDB(间隔 ...
- easyui 日期范围前后台的设置以及实现
1.页面部分(引入相应的js) <td class="w40 tl pl10">从日期:</td> <td> <input class=& ...
- windwo访问linux文件夹方法
windwo访问linux文件夹:是通过linux的samba来实现的: 安装samba需要安装samba-client.samba-common.smaba3个包. 一:安装rpm 现有一个服务器l ...
- [Selenium] WebDriver 操作 HTML5 中的 drag/drop
以 jQuery UI 官方网站元素测试,地址:http://jqueryui.com/draggable/ 示例: package com.learningselenium.html5; impor ...
- GCD深入理解(1)
写在前面 本文原文为raywenderlich的<grand-central-dispatch-in-depth-part-1>:顺便提及一下,笔者认为,对于iOS初学者而言,raywen ...
- [AHOI 2006] 上学路线
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1266 [算法] 首先 , 用Dijkstra求单源最短路 然后 , 建出这张图G的最 ...
- 空间数据索引RTree完全解析及Java实现
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/MongChia1993/article/details/69941783 第一部分 空间数据的背景介 ...
- 在头文件#pragma comment(lib,"glaux.lib");编译器提示waring C4081: 应输入“newline“
在头文件#pragma comment(lib,"glaux.lib");编译器提示waring C4081: 应输入“newline“ #行不能加分号的