洛谷——P2657 低头一族
2024-08-31 06:17:57
https://www.luogu.org/problem/show?pid=2657
题目描述
一群青年人排成一队,用手机互相聊天。
每个人的手机有一个信号接收指标,第i个人的接收指标设为v[i]。
如果位置在x[i]的人要和位置在xj的人聊天,那么这两人组成的一对的信号发射强度就是abs(x[i]-x[j])*max(v[i],v[j]).
现在我们想知道,这些人所有对子中的信号发射强度的总和。
输入输出格式
输入格式:
第一行一个整数N,接下来N行,每行两个整数v[i]和x[i]。
输出格式:
所有对的信号发射强度总和。
输入输出样例
输入样例#1:
4
3 1
2 5
2 6
4 3
输出样例#1:
57
说明
对于40%的数据,N<=5,000
对于100%的数据,N<=100,000 1≤x[i]≤20,000
[color=red]注意:可能有两人在同一个位置
答案在int64或long long范围内[/color]
对于公式 abs(x[i]-x[j])*max(v[i],v[j]). 先给年轻人排队,让V小的在前面
用树状数组维护第i个人的前面有多少人的x比他的小,维护前面比他小的x的人的x的总和
#include <algorithm>
#include <cstdio> #define LL long long
const int N(+);
LL n,ans;
struct Node {
LL val,pos;
bool operator < (const Node &x)const
{
return val<x.val;
}
}people[N]; inline void read(LL &x)
{
x=; register char ch=getchar();
for(;ch>''||ch<'';) ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-'';
} #define max(a,b) (a>b?a:b) LL maxpos,sum[N],num[N];
#define lowbit(x) (x&((~x)+1))
inline void Update(LL *tr,LL i,LL x)
{
for(; i<=maxpos; i+=lowbit(i)) tr[i]+=x;
}
inline LL Query(LL *tr,LL i)
{
LL ret=;
for(; i; i-=lowbit(i)) ret+=tr[i];
return ret;
} int AC()
{
read(n);
for(int i=; i<=n; ++i)
{
read(people[i].val);
read(people[i].pos);
maxpos=max(maxpos,people[i].pos);
}
std::sort(people+,people+n+);
for(int i=; i<=n; ++i)
{
LL pos=people[i].pos,val=people[i].val;
LL numl=Query(num,pos-);
LL suml=Query(sum,pos-);
LL numr=Query(num,maxpos)-Query(num,pos);
LL sumr=Query(sum,maxpos)-Query(sum,pos);
ans+=val*(pos*numl-suml+sumr-pos*numr);
Update(num,pos,); Update(sum,pos,pos);
}
printf("%lld\n",ans);
return ;
} int Hope=AC();
int main(){;}
最新文章
- 基于 SailingEase WinForm Framework 开发客户端程序(3:实现菜单/工具栏按钮的解耦及状态控制)
- QML 从无到有 (基础)
- LD算法获取字符串相似度
- road习题(一)
- C#获取真实IP地址实现方法
- extern &ldquo;C&rdquo;原理,用法以及使用场景-2016.01.05
- Ubuntu 12.04 LTS(64bit) 环境下JDK、 Eclipse、 ADT、 快捷图标
- Poj OpenJudge 百练 2602 Superlong sums
- Hadoop 2.6.3动态增加/删除DataNode节点
- android 随手记 倒计时
- Python Tutorial 学习(九)--Classes
- 将C#程序嵌入资源中(C# 调用嵌入资源的EXE文件方法)
- HIVE快速入门
- My first essay
- centos7下nginx安装
- 编译和解释性语言和python运行方式
- mac下安装maven
- 25.75k8s
- web前端 ajax请求报415/400错
- java获取当前项目或类路径
热门文章
- Android 删除新版安卓fragment_main.xml
- Oracle 数据块损坏与恢复具体解释
- 使用RabbitMQ放置自己定义对象(不借助序列化工具,比如protobuffer)V2.0
- 0x5C 数位统计DP
- [Swift]注册并购买加入Apple开发者计划。提示: “你的支付授权失败。请核对你的信息并重试,或尝试其他支付方式。请联系你的银行”
- Elasticsearch日志收集
- LeetCode Weekly Contest 27
- Unity3d 刚体
- 洛谷P2851 [USACO06DEC]最少的硬币The Fewest Coins(完全背包+多重背包)
- Python:Matplotlib 画曲线和柱状图(Code)