传送门

写了一中午,被自己瓜得无话可说。

cdq的题,然后开始脑补。

写了第一个版本是考虑一半对另一半的贡献,贡献的那一遍维护单调性,没有考虑查询的一半的点之间的影响,一直偏大,14pt。

卡掉的数据:

5

1 5

5 4

2 1

3 2

4 3

然后不知道如何脑抽地写了第二个版本,树状数组乱搞,从挡住的地方往上在数组数组里减,然后被重复挡的部分会被多减,一直偏小,31pt

卡掉的数据

5

1 1

4 2

2 3

5 4

5 5

最终屈服于题解,,智商堪忧,,

按x排序,按y分治,考虑下一半对上一半的影响,上一半维护单增的单调栈,相当于知道这个查询点前一个挡住它的点的位置pos,从该点往后的单减的栈就是答案。

于是下一半维护单减的栈,二分找到其中第一个x大于pos的x的位置,往后的栈大小就是答案。

//Achen
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<cstdio>
#include<vector>
#include<queue>
#include<ctime>
#include<cmath>
const int N=2e5+7;
typedef long long LL;
using namespace std;
int n,xx[N],yy[N],q1[N],q2[N],top1,top2;
LL ans;template<typename T> void read(T &x) {char ch=getchar(); x=0; T f=1;while(ch!='-'&&(ch<'0'||ch>'9')) ch=getchar();if(ch=='-') f=-1,ch=getchar();for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0'; x*=f;
}struct node{int x,y;friend bool operator <(const node&A,const node &B) {return A.x<B.x;}
}p[N],tp[N];int ef(int x) {int l=1,r=top1,res=0;while(l<=r) {int mid=((l+r)>>1);if(p[q1[mid]].x>x) res=mid,r=mid-1;else l=mid+1;}if(res!=0) res=top1-res+1;return res;
}void cdq(int l,int r) {if(l==r) return; int mid=((l+r)>>1),ql=l-1,qr=mid;top1=top2=0;for(int i=l;i<=r;i++) {if(p[i].y<=mid) {tp[++ql]=p[i];while(top1&&p[q1[top1]].y<p[i].y) top1--;q1[++top1]=i;}else {tp[++qr]=p[i];while(top2&&p[q2[top2]].y>p[i].y) top2--;ans+=ef(p[q2[top2]].x);q2[++top2]=i;}}for(int i=l;i<=r;i++) p[i]=tp[i];cdq(l,mid); cdq(mid+1,r);
}#define DEBUG
int main() {
#ifdef DEBUGfreopen("scarecrows.in","r",stdin);freopen("scarecrows.out","w",stdout);
#endifread(n);for(int i=1;i<=n;i++) {read(p[i].x); read(p[i].y);xx[i]=p[i].x;yy[i]=p[i].y;}sort(xx+1,xx+n+1);sort(yy+1,yy+n+1);for(int i=1;i<=n;i++) {p[i].x=lower_bound(xx+1,xx+n+1,p[i].x)-xx;p[i].y=lower_bound(yy+1,yy+n+1,p[i].y)-yy;}sort(p+1,p+n+1);cdq(1,n);printf("%lld\n",ans);return 0;
}

View Code

不管怎么说,bzojSolved数终于突破两位数了,留恋一下,可喜可贺可喜可贺。

转载于:https://www.cnblogs.com/Achenchen/p/8080789.html

bzoj4237稻草人相关推荐

  1. Stargazer的分治讲义

    cyk的分治讲义 文章目录 分治讲义 一.一般分治 1.序列分治 2.整体二分 3.CDQ分治 前置 引入 进入正题 4.二进制分组 5.线段树分治 二.树上分治 6.点分治 关于操作树上点分(论文) ...

  2. 【BZOJ4237】稻草人

    题意 给定平面上 \(N\) 个关键点,询问有多少个矩形满足左下和右上各有一个关键点,且矩形中间没有关键点. \(N\le 2\cdot 10^5\) . 题解 我们按 \(x\) 排序分治,对于左右 ...

  3. BZOJ4237 JOISC2014 稻草人 CDQ分治、单调栈

    传送门 题意:给出平面上$N$个点,求满足以下两个条件的矩形:①左下角与右上角各有一个点:②矩形内部没有点.$N \leq 2 \times 10^5$,所有数字大于等于$0$,保证坐标两两不同 最开 ...

  4. Bzoj4237:稻草人

    题面 传送门 Sol CDQ  C D Q CDQ分治 先对 x  x x排序,对y'>y yy在 CDQ  C D Q CDQ分治是从大到小排序 从大到小加入,右边用单调栈维护 x  x x递 ...

  5. PHP企业网站源码-稻草人PHP系统源码v1.0.3

    简介: 稻草人PHP系统是一个致力于业务系统的快速开发及快捷建立的PHP企业网站源码. 安装步骤: 下载源码解压后,Web服务器配置根目录为public 安装系统如下: 安装路径是:host/inst ...

  6. bzoj 4237: 稻草人(CDQ分治+单调栈+二分)

    4237: 稻草人 Time Limit: 40 Sec  Memory Limit: 256 MB Submit: 1352  Solved: 594 [Submit][Status][Discus ...

  7. 小程序稻草人图床神器,前后端开源

    文章目录 稻草人图床神器 小程序 后台: 小程序详解 项目结构 开屏页 1.判断网络状态 2.判断授权状态 3.跳转页面 授权页 主页 1. 图片按钮插槽组件 2. 上传文件 列表页 1.search ...

  8. 稻草人项目--项目前期准备

    目录 稻草人项目: 稻草人项目流程演示: 稻草人项目功能实现组件及工作原理: 创建数据库表格及表字段名称: 1. 项目前期准备--学习创建Maven聚合项目 1.1. 创建聚合项目 1.2. 通过父项 ...

  9. 稻草人项目--( day04 )

    目录 稻草人项目 8. 在SpringMVC框架中统一处理异常 关于统一处理异常的方法: 9. 请求参数验证 10.注册前端页面测试 11.注册成功后的收尾工作 12. 阶段小结 稻草人项目 8. 在 ...

最新文章

  1. 如何用c语言将度分秒变为弧度_弧度与角度从哪里来
  2. 启动R环境并执行R脚本
  3. 在 64 位版本的 Windows 上,如何在 32 位版本的 ASP.NET 1.1 和 64 位版本的 ASP.NET 2.0 之间切换...
  4. Sql 中取小数点后面两位小数.
  5. JAVA项目中出现部分中文乱码问题
  6. xp环境下 .net framework 3.5 安装过程过慢 原因浅析
  7. CondaHTTPError: HTTP 000 CONNECTION FAILED for url <https://mirrors.tuna.ts
  8. python可以读取excel文档吗_python打开excel文件【python读取excel文件如何进行】
  9. 利用WinRar压缩和解压缩文件
  10. java 调用native api_Windows和Native API中的系统调用?
  11. P2731 骑马修栅栏 欧拉函数
  12. oa系统源码 python_区块链技术基于springboot的办公oa系统实现源代码
  13. Ubuntu 9.04下安装飞信LibFetion V1.1版
  14. YOLOv3中Anchor理解
  15. 金蝶K3案例教程总账后台配置
  16. 台式计算机调亮度快捷键,电脑调节亮度快捷键是什么?分享电脑快速调节亮度的方法...
  17. mysql数据库SQL语句介绍
  18. simplest tensor core gemm sample
  19. 【项目】前端实习——知识库项目总结
  20. 微信小程序识别二维码参数

热门文章

  1. java python混合开发_Go+Python双语言混合开发
  2. java12章_从零开始学Java 第12章 异常处理
  3. java集合详解_Map、Set、List及其子类和接口你都明白吗?看这篇Java集合超详解
  4. 集合三人斗地主的思路
  5. 直播画面抖动_罗永浩直播带货1.1个亿,企业想玩网络直播,三大专业设备你必须知道...
  6. STM32 ISP 下载程序, C源码,
  7. mysql登录不了_登录不了MySQL的解决方法
  8. 纯jsp实现评论功能_自己实现的java手写tomcat
  9. java强引用软引用深刻理解_Java-强引用、软引用、弱引用、虚引用
  10. 2021年全国大学生电子设计竞赛重新启动通知及进度安排