bzoj4237
来源:互联网 发布:知柏地黄丸方歌 编辑:程序博客网 时间:2024/05/29 03:59
按x排序,y分治
然后单调栈随便搞一搞就行辣
#include<iostream>#include<algorithm>#include<cstdio>#include<cstdlib>#include<cstring>using namespace std;typedef long long LL;inline int read(){int x=0;bool f=0;char c=getchar();for (;c<'0'||c>'9';c=getchar()) f=c=='-'?1:0;for (;c>='0'&&c<='9';c=getchar()) x=x*10+c-'0';return f?-x:x;}const int N=200010;int n,ynum[N],stk[N],st=0,stk2[N],st2=0;LL ans=0;struct na{int x,y;}e[N],e1[N],e2[N];inline bool cmp(const na &a,const na &b) {return a.x<b.x;}inline int find(int x) {for (int l=0,r=n+1,mid;;ynum[mid=l+r>>1]<=x?l=mid:r=mid) if (l+1>=r) return l;}inline int cal(int x) {for (int l=0,r=st+1,mid;;e[stk[mid=l+r>>1]].x<=x?l=mid:r=mid) if (l+1>=r) return l;}void solve(int hd,int tl,int l,int r){if (l>=r||hd>=tl) return;int mid=l+r>>1,l1=0,l2=0,lp=hd;for (int i=hd;i<=tl;i++){if (e[i].y<=mid) {while (st&&e[i].y>e[stk[st]].y) st--;stk[++st]=i;e1[++l1]=e[i];}else {ans+=st;while (st2&&e[i].y<e[stk2[st2]].y) st2--;stk2[++st2]=i;if (st2>1) ans-=cal(e[stk2[st2-1]].x);e2[++l2]=e[i];}}st=st2=0;for (int i=1;i<=l1;i++) e[lp++]=e1[i];for (int i=1;i<=l2;i++) e[lp++]=e2[i];solve(hd,hd+l1-1,l,mid);solve(hd+l1,tl,mid+1,r);}int main(){freopen("1.in","r",stdin);freopen("1.out","w",stdout);n=read();for (int i=1;i<=n;i++) e[i].x=read(),e[i].y=ynum[i]=read();sort(ynum+1,ynum+n+1);for (int i=1;i<=n;i++) e[i].y=find(e[i].y);sort(e+1,e+n+1,cmp);solve(1,n,1,n);printf("%lld\n",ans);return 0;}
0 0
- bzoj4237
- [bzoj4237]稻草人
- BZOJ4237: 稻草人
- bzoj4237: 稻草人
- BZOJ4237 稻草人
- BZOJ4237 稻草人
- 【bzoj4237】【分治】稻草人
- 【分治计数】BZOJ4237 稻草人
- [ CDQ分治 ] BZOJ4237
- bzoj4237稻草人 cdq分治+栈
- BZOJ4237(cdq分治+单调栈)
- [BZOJ4237]稻草人(cdq分治+单调栈+二分)
- BZOJ4237:稻草人 (CDQ分治+二分+单调栈)
- /etc/group 改动及生效
- Docker概述
- php设计模式---单例模式
- Android编译遇到-Unable to execute dex: Cannot merge new index 65761 into a non-jumbo instruction!
- Ubuntu14中supervisor的安装及配置
- bzoj4237
- 牛人林达华推荐有关机器学习的数学书籍
- ARM系统开发基础
- java开发C语言解释器:编译并实现IfElse语句逻辑流程
- jQuery插件中为什么要return this.each?
- C语言文本处理列与列之间多一个空格
- cpp 8.11
- 4 行代码实现 ANDROID 快速文件下载
- 微信开发-网页授权获取用户信息