先按y排序,二分,两边递归下去,然后处理下半部分对上半部分的贡献,即左下点在下半部分,右上点在上半部分的合法矩形个数。

两个部分均按x排序,枚举右上点p,则左下点需要满足:

1.横坐标大于上半部分纵坐标比p小的点的最大横坐标k。

2.不存在下半部分点满足纵坐标在两点之间,横坐标也在两点之间。

这样,我们对上半部分维护一个纵坐标单减的单调栈,下半部分维护纵坐标单增的单调栈。

每次枚举p时,将下半部分所有横坐标小于p的点加入栈中,再在栈中二分k即可。

 #include<cstdio>
#include<algorithm>
#include<cstring>
#define rep(i,l,r) for (int i=(l); i<=(r); i++)
typedef long long ll;
using namespace std; const int N=;
ll ans;
int n,stk1[N],stk2[N];
struct P{ int x,y; }p[N];
bool cmpx(const P &a,const P &b){ return a.x<b.x; }
bool cmpy(const P &a,const P &b){ return a.y<b.y; } void solve(int L,int R){
if (R<=L) return;
sort(p+L,p+R+,cmpy); int mid=(L+R)>>;
sort(p+L,p+mid+,cmpx); sort(p+mid+,p+R+,cmpx);
int top1=,top2=,w=L;
rep(i,mid+,R){
while (top1 && p[stk1[top1]].y>p[i].y) top1--;
stk1[++top1]=i;
while (w<=mid && p[w].x<p[i].x){
while (top2 && p[stk2[top2]].y<p[w].y) top2--;
stk2[++top2]=w; w++;
}
int l=,r=top2,pos=-;
while (l<=r){
int m=(l+r)>>;
if (p[stk2[m]].x>p[stk1[top1-]].x) pos=m,r=m-; else l=m+;
}
if (~pos) ans+=top2-pos+;
}
solve(L,mid); solve(mid+,R);
} int main(){
freopen("bzoj4237.in","r",stdin);
freopen("bzoj4237.out","w",stdout);
scanf("%d",&n);
rep(i,,n) scanf("%d%d",&p[i].x,&p[i].y);
p[]=(P){-,-}; solve(,n); printf("%lld\n",ans);
return ;
}

最新文章

  1. 让hammer完美支持Pixi.js - 2D webG库
  2. 从一个简单例子来理解js引用类型指针的工作方式
  3. 反距离权重插值inverse distance weighting,IDW
  4. Go - 内置函数大全
  5. ACM 会场安排问题
  6. 转:服务器控件的 ID,ClientID,UniqueID 的区别
  7. sysobjects.xtype介绍
  8. 《使用shell位置变量进行目录文件的备份小脚本》
  9. Asp.net封装js的类
  10. js事件监听机制(事件捕获)总结
  11. windows下Apache配置SSL安全连接
  12. Mysql.Data的连接驱动 .net 的源码竟然在git了
  13. 【锋利的Jquery】读书笔记七
  14. python3.6.4 tkinter安装
  15. temp 和 tmp 文件
  16. 当view为wrap_conten时获取一个view的具体宽高
  17. Object.prototype.toString.call() 、 instanceof 以及 Array.isArray()判断数组的方法的优缺点
  18. Python 12306登陆详细分析及操作
  19. xss脚本绕过限制的方法
  20. es6学习日记1

热门文章

  1. 【BZOJ】1875: [SDOI2009]HH去散步 矩阵快速幂
  2. [BZOJ 3039&amp;洛谷P4147]玉蟾宫 题解(单调栈)
  3. Java源码-HashMap(jdk1.8)
  4. 用C#实现通过串口对设备的数据采集--Server层
  5. localhost或127.0.0.1或192.168.1.*被转到129129.com上的问题
  6. CentOS7安装Hadoop2.7完整步骤
  7. Photon3Unity3D.dll 解析四&mdash;&mdash;LitePeer
  8. LightOJ - 1179 Josephus Problem(约瑟夫环)
  9. CSU 1412 Line and Circles
  10. bootstrap navbar items alignment