F. Moving Points
https://codeforces.com/contest/1311/problem/F
这是一道线段树类型的题;
可以用权值线段树或者树状数组来解;

所以,我们可以分为两部分,第一部分是计算出到当前点位置,小于等于当前点的速度的个数 ,总的个数乘当前点的速度
减去 小于等于当前点的速度的坐标总值即为答案;
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=2e5+;
int b[maxn];
struct node
{
int x,v;
}a[maxn];
bool cmp(node t1,node t2)
{
return t1.x<t2.x;
}
struct tre
{
int l;int r;
ll sum;
int num;
}tree[maxn<<];
void pushup(int root)
{
tree[root].sum=tree[root<<].sum+tree[root<<|].sum;
tree[root].num=tree[root<<].num+tree[root<<|].num;
}
void build(int l,int r,int root)
{
tree[root].l=l;tree[root].r=r;
tree[root].sum=;tree[root].num=;
if(l==r) return;
int mid=l+r>>;
build(l,mid,root<<);
build(mid+,r,root<<|);
pushup(root);
}
void update(int pos,int val,int root)
{
int L=tree[root].l,R=tree[root].r;
if(L==R){
tree[root].sum+=val;
tree[root].num+=;
return;
}
int mid=L+R>>;
if(pos<=mid) update(pos,val,root<<);
else update(pos,val,root<<|);
pushup(root);
}
ll query(int pos,int flag,int root)
{
int L=tree[root].l;
int R=tree[root].r;
if(L==R){
if(!flag) return tree[root].num;
else return tree[root].sum;
}
int mid=L+R>>;
ll ans=;
if(pos<=mid) ans+=query(pos,flag,root<<);
else{
if(!flag) ans+=tree[root<<].num;
else ans+=tree[root<<].sum;
ans+=query(pos,flag,root<<|);
}
return ans;
}
int main()
{
int n;
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&a[i].x);
}
for(int i=;i<=n;i++){
scanf("%d",&a[i].v);
b[i]=a[i].v;
}
sort(a+,a++n,cmp);
sort(b+,b++n);
int len=unique(b+,b++n)-b-;
ll ans=;
build(,2e5+,);
for(int i=;i<=n;i++){
int v=lower_bound(b+,b++len,a[i].v)-b;
ans+=query(v,,)*a[i].x-query(v,,);
update(v,a[i].x,);
}
printf("%lld\n",ans);
return ; }
F. Moving Points的更多相关文章
- F. Moving Points 解析(思維、離散化、BIT、前綴和)
Codeforce 1311 F. Moving Points 解析(思維.離散化.BIT.前綴和) 今天我們來看看CF1311F 題目連結 題目 略,請直接看原題. 前言 最近寫1900的題目更容易 ...
- Codeforces Round #624 (Div. 3) F. Moving Points 题解
第一次写博客 ,请多指教! 翻了翻前面的题解发现都是用树状数组来做,这里更新一个 线段树+离散化的做法: 其实这道题是没有必要用线段树的,树状数组就能够解决.但是个人感觉把线段树用熟了会比树状数组更有 ...
- F - Moving Points树状数组
题:https://codeforces.com/contest/1311/problem/F 题意:给定x轴上的点以及他们的速度v,只在x轴上运动,求最小的dis之和,注意,这里的时间是可随意的,比 ...
- 详细讲解Codeforces Round #624 (Div. 3) F. Moving Points
题意:给定n个点的初始坐标x和速度v(保证n个点的初始坐标互不相同), d(i,j)是第i个和第j个点之间任意某个时刻的最小距离,求出n个点中任意一对点的d(i,j)的总和. 题解:可以理解,两个点中 ...
- HDOJ 4717 The Moving Points
The Moving Points Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- HDU 4717The Moving Points warmup2 1002题(三分)
The Moving Points Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- The Moving Points hdu4717
The Moving Points Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- HDU 4717 The Moving Points (三分)
The Moving Points Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- HDUOJ---The Moving Points
The Moving Points Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
随机推荐
- 实例探究Aspectj,解析SentinelResourceAspect
为了学习SentinelResourceAspect,这篇文章里我用Aspectj实现一个AOP实例,一起来看下. Sentinel 提供了 @SentinelResource 注解用于定义资源,支持 ...
- Qt 条件编译 arm windows linux 判断 跨平台
如果代码里面有些判断需要不同的参数做判断: 办法:在pro文件里面做定义 方法1:直接定义一个宏:用的时候可以直接判断,这样做不好的地方是编译前需要重新切换一下宏 1)定义宏 DEFINES += _ ...
- php面试笔记(2)-php基础知识-常量和数据类型
本文是根据慕课网Jason老师的课程进行的PHP面试知识点总结和升华,如有侵权请联系我进行删除,email:guoyugygy@163.com 面试是每一个PHP初学者到PHP程序员必不可少的一步,冷 ...
- maven mvn 安装介绍
maven是什么? Maven是基于项目对象模型(POM project object model),可以通过一小段描述信息(配置)来管理项目的构建,报告和文档的软件项目管理工具 Maven 除了以程 ...
- Zookeeper 介绍 原理
简介: ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务. 它Google的Chubby一个开源的实现,在分布式协调技术方面做得比较好的就是Google的Chubby还有 ...
- 风物长宜放眼量,人间正道是沧桑 - 一位北美 IT 技术人破局
引言 我对于本科时光的印象,还停留在那所普通 211 大学的建筑物之间,我坐在大学的时光长廊里,满眼望去,都是经历的过的故事.可毕业后回首,却很少有人能说,自己从来没有迷茫过.迷茫,仿佛就是一团乌云, ...
- Sap Hana 关于BP的一些理解
BP里面有角色和角色分组,角色分组相当于包含多个角色. 客户和供应商使用不同的角色来创建. 创建角色和分组前可以创建自定义的角色类别和角色分组类别. 文档:关于BP.note 链接:笔记 作者:明光烁 ...
- [MySQL] mysql索引的长度计算和联合索引
1.所有的索引字段,如果没有设置not null,则需要加一个字节.2.定长字段,int占4个字节.date占3个字节.char(n)占n个字符.3.变长字段,varchar(n),则有n个字符+两个 ...
- dmock 基于Django的轻量级Mock平台
GitHub:https://github.com/yjlch1016/dmock # dmock 基于Django的轻量级Mock平台 dmock即Django+Mock的缩写 一.思路: mock ...
- IDEA 代码量统计(Statistic)
IDEA 代码量统计(Statistic) 1.1 前言 项目到了一定阶段,都会想要看看项目的代码量情况,这里主要使用插件Statistic进行代码统计查看. 1.2 安装插件步骤 找到插件市场入口并 ...