线段树,假设求(x1,y1)点的贡献,就找所有比该点出现时间晚,且x坐标大于x1的点中y最大的,贡献就是Y-y1,由于题目条件限制,不可能有x坐标大于(x1,y1)且y坐标大于y1的点,所以贡献肯定为正。

思路参考了这篇博客:https://blog.csdn.net/qq_39599067/article/details/82560005#accode。

#include<bits/stdc++.h>
using namespace std;
const int maxn=;
struct node{
int x,y;
};
node xx[maxn],yy[maxn],re[maxn];
int x[maxn],y[maxn],maxv[][maxn*];
int ql,qr,v,p;
bool cmpx(node a,node b){
if(a.x==b.x)return a.y<b.y;
return a.x<b.x;
}
bool cmpy(node a,node b){
if(a.y==b.y)return a.x<b.x;
return a.y<b.y;
}
void update(int o,int L,int R,int pos){
if(L==R){
maxv[pos][o]=v;
return;
}
int M=L+(R-L)/;
if(p<=M)update(o*,L,M,pos);
else update(o*+,M+,R,pos);
maxv[pos][o]=max(maxv[pos][o*],maxv[pos][o*+]);
}
int query(int o,int L,int R,int pos){
int ans=;
if(ql<=L&&qr>=R){
return maxv[pos][o];
}
int M=L+(R-L)/;
if(ql<=M)ans=max(ans,query(o*,L,M,pos));
if(qr>M)ans=max(ans,query(o*+,M+,R,pos));
return ans;
}
int main(){
int n;
long long ans=;
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d%d",&x[i],&y[i]);
xx[i].x=yy[i].x=re[i].x=x[i];
xx[i].y=yy[i].y=re[i].y=y[i];
}
sort(xx+,xx++n,cmpx);
sort(yy+,yy++n,cmpy);
sort(x+,x++n);
sort(y+,y++n);
for(int i=n;i>=;i--){
int pos=lower_bound(x+,x++n,re[i].x)-x;
if(pos==n)ans+=1ll*re[i].y;
else{
ql=pos+,qr=n;
ans+=1ll*(re[i].y-query(,,n,));
}
p=pos;
v=re[i].y;
update(,,n,);
pos=lower_bound(y+,y++n,re[i].y)-y;
if(pos==n)ans+=1ll*re[i].x;
else{
ql=pos+,qr=n;
ans+=1ll*(re[i].x-query(,,n,));
}
p=pos;
v=re[i].x;
update(,,n,);
}
printf("%lld\n",ans);
}

2018网络预选赛 徐州G 线段树的更多相关文章

  1. 2018网络预选赛 徐州H 线段树+树状数组

    设读入的数组是a,树状数组用来维护a数组区间和sum,线段树用来维护一个另一个数组ssum的区间和,区间每个点a[i]*(n-i+1),那么l-r的答案是l-r的ssum-(n-r)*(sum[r]- ...

  2. 徐州网络赛G-Trace【线段树】

    There's a beach in the first quadrant. And from time to time, there are sea waves. A wave ( xx , yy  ...

  3. Subsequence Count 2017ccpc网络赛 1006 dp+线段树维护矩阵

    Problem Description Given a binary string S[1,...,N] (i.e. a sequence of 0's and 1's), and Q queries ...

  4. 2018.07.22 codeforces750E(线段树维护状态转移)

    传送门 给出一个数字字串,给出若干个询问,询问在字串的一段区间保证出现2017" role="presentation" style="position: re ...

  5. HDU 6356 Glad You Came 2018 Multi-University Training Contest 5 (线段树)

    题目中没有明说会爆int和longlong 的精度,但是在RNG函数中不用unsigned int 会报精度,导致队友debug了很久... 根据每次生成的l,r,v对区间更新m次,然后求 i*ai的 ...

  6. Educational Codeforces Round 61 (Rated for Div. 2) G(线段树,单调栈)

    #include<bits/stdc++.h>using namespace std;int st[1000007];int top;int s[1000007],t[1000007];i ...

  7. HDU-6315 Naive Operations//2018 Multi-University Training Contest 2___1007 (线段树,区间除法)

    原题地址 Naive Operations Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 502768/502768 K (Java/ ...

  8. HDU 4417 Super Mario(2012杭州网络赛 H 离线线段树)

    突然想到的节约时间的方法,感觉6翻了  给你n个数字,接着m个询问.每次问你一段区间内不大于某个数字(不一定是给你的数字)的个数 直接线段树没法做,因为每次给你的数字不一样,父节点无法统计.但是离线一 ...

  9. 2019ccpc网络赛hdu6703 array(线段树)

    array 题目传送门 解题思路 操作1是把第pos个位置上的数加上\(10^7\),操作2是找到区间[1,r]中没有且大于k的最小的数.注意到k的范围是小于等于n的,且n的范围是\(10^5\),远 ...

随机推荐

  1. linux设置开机自动进入命令模式

    1)打开终端,输入命令:      su – root     2)输入密码 3)再输入如下命令进入到命令行模式:      init 3 4)修改启动模式为永久命令行模式:      vi /etc ...

  2. RNN、LSTM、Char-RNN 学习系列(一)

    RNN.LSTM.Char-RNN 学习系列(一) zoerywzhou@gmail.com http://www.cnblogs.com/swje/ 作者:Zhouw  2016-3-15 版权声明 ...

  3. LeetCode OJ:Lowest Common Ancestor of a Binary Search Tree(最浅的公共祖先)

    Given a binary search tree (BST), find the lowest common ancestor (LCA) of two given nodes in the BS ...

  4. SQL使用指南(2)—— 约束的使用

    主键约束 (1)创建表时添加主键约束 primary key<column_name> (2) 修改表时添加主键约束 ALTER TABLE table_name ADD CONSTRAI ...

  5. HihoCoder1139 二分·二分答案

    描述 在上一回和上上回里我们知道Nettle在玩<艦これ>,Nettle在整理好舰队之后终于准备出海捞船和敌军交战了.在这个游戏里面,海域是N个战略点(编号1..N)组成,如下图所示其中红 ...

  6. 加密第四节_IPSec基本理论

    加密第四节_IPSec基本理论 本节内容 IPSec简介 IPSec两种工作模式 判断隧道模式和传输模式 IPSec两种模型 IPSec两个数据库 IPSec基本理论 IPSec简介 提供了网络层的安 ...

  7. Js中的prototype的用法二

    用过JavaScript的同学们肯定都对prototype如雷贯耳,但是这究竟是个什么东西却让初学者莫衷一是,只知道函数都会有一个prototype属性,可以为其添加函数供实例访问,其它的就不清楚了, ...

  8. /etc删了怎么办

    实施一个哥们一个手抖,把/etc删掉了:别人无法ssh到上面,除了他.怎么办? 从类似的OK机器中打包一个etc.tar,然后将etc.tar放到OK机器www服务器目录里面:然后在问题机器上面通过w ...

  9. bzoj 4300 绝世好题——DP

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4300 考虑 dp[ i ] 能从哪些 j 转移过来,就是那些 a[ j ] & a[ ...

  10. ExtJs中获得当前选中行号(Grid中多选或者是单选)及Grid的反选(取消选中行)

    多选,如何获得每行的行号: function getlineNum(){    var sm=titleGird.getSelectionModel(); // 获得grid的SelectionMod ...