【CF526F】Pudding Monsters cdq分治
【CF526F】Pudding Monsters
题意:给你一个排列$p_i$,问你有对少个区间的值域段是连续的。
$n\le 3\times 10^5$
题解:bzoj3745 Norma 的弱化版。直接cdq分治,考虑最大值和最小值分别在左右两边的情况。这里就当练练手了。
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn=300010;
typedef long long ll;
const int inf=1<<30;
ll ans;
int n;
int v[maxn],rm[maxn],rn[maxn],lm[maxn],ln[maxn],s1[maxn<<1],s2[maxn<<1];
inline int rd()
{
int ret=0,f=1; char gc=getchar();
while(gc<'0'||gc>'9') {if(gc=='-') f=-f; gc=getchar();}
while(gc>='0'&&gc<='9') ret=ret*10+(gc^'0'),gc=getchar();
return ret*f;
}
void solve(int l,int r)
{
if(l==r) return ;
int i,j1,j2,mid=(l+r)>>1;
solve(l,mid),solve(mid+1,r);
for(lm[mid+1]=0,ln[mid+1]=inf,i=mid;i>=l;i--) lm[i]=max(lm[i+1],v[i]),ln[i]=min(ln[i+1],v[i]);
for(rm[mid]=0,rn[mid]=inf,i=mid+1;i<=r;i++) rm[i]=max(rm[i-1],v[i]),rn[i]=min(rn[i-1],v[i]);
for(i=mid,j1=j2=mid+1;i>=l;i--)
{
while(j1<=r&&rn[j1]>ln[i]&&rm[j1]<lm[i]) s1[rn[j1]+j1]++,j1++;
while(j2<=r&&rm[j2]<lm[i]) s2[rn[j2]+j2]++,j2++;
if(j1!=mid+1&&j1-1>=i+lm[i]-ln[i]) ans++;
ans+=s2[i+lm[i]]-s1[i+lm[i]];
}
for(i=mid+1;i<=r;i++) s1[rn[i]+i]=s2[rn[i]+i]=0;
for(i=mid+1,j1=j2=mid;i<=r;i++)
{
while(j1>=l&&ln[j1]>rn[i]&&lm[j1]<rm[i]) s1[ln[j1]-j1+n]++,j1--;
while(j2>=l&&lm[j2]<rm[i]) s2[ln[j2]-j2+n]++,j2--;
if(j1!=mid&&j1+1<=i-(rm[i]-rn[i])) ans++;
ans+=s2[rm[i]-i+n]-s1[rm[i]-i+n];
}
for(i=mid;i>=l;i--) s1[ln[i]-i+n]=s2[ln[i]-i+n]=0;
}
int main()
{
n=rd();
int i,a;
for(i=1;i<=n;i++) a=rd(),v[a]=rd();
solve(1,n);
printf("%lld",ans+n);
return 0;
}//3 1 1 2 2 3 3
【CF526F】Pudding Monsters cdq分治的更多相关文章
- Codeforces 526F Pudding Monsters - CDQ分治 - 桶排序
In this problem you will meet the simplified model of game Pudding Monsters. An important process in ...
- CF526F Pudding Monsters
CF526F Pudding Monsters 题目大意:给出一个\(n* n\)的棋盘,其中有\(n\)个格子包含棋子. 每行每列恰有一个棋子. 求\(k*k\)的恰好包含\(k\)枚棋子的子矩形个 ...
- CodeForces526F:Pudding Monsters (分治)
In this problem you will meet the simplified model of game Pudding Monsters. An important process in ...
- [Codeforce526F]:Pudding Monsters(分治)
题目传送门 题目描述 由于各种原因,桐人现在被困在Under World(以下简称UW)中,而UW马上要迎来最终的压力测试——魔界入侵.唯一一个神一般存在的Administrator被消灭了,靠原本的 ...
- 「CF526F」 Pudding Monsters
CF526F Pudding Monsters 传送门 模型转换:对于一个 \(n\times n\) 的棋盘,若每行每列仅有一个棋子,令 \(a_x=y\),则 \(a\) 为一个排列. 转换成排列 ...
- [Codeforces526F]Pudding Monsters 分治
F. Pudding Monsters time limit per test 2 seconds memory limit per test 256 megabytes In this proble ...
- 【教程】简易CDQ分治教程&学习笔记
前言 辣鸡蒟蒻__stdcall终于会CDQ分治啦! CDQ分治是我们处理各类问题的重要武器.它的优势在于可以顶替复杂的高级数据结构,而且常数比较小:缺点在于必须离线操作. CDQ分治的基 ...
- BZOJ 2683 简单题 ——CDQ分治
[题目分析] 感觉CDQ分治和整体二分有着很本质的区别. 为什么还有许多人把他们放在一起,也许是因为代码很像吧. CDQ分治最重要的是加入了时间对答案的影响,x,y,t三个条件. 排序解决了x ,分治 ...
- HDU5618 & CDQ分治
Description: 三维数点 Solution: 第一道cdq分治...感觉还是很显然的虽然题目不能再傻逼了... Code: /*=============================== ...
随机推荐
- HTML5新特性[ Notifications ] 桌面消息
在执行完以上代码后,我们就成功地创建了一个消息框实例,在Chrome下面它最终会显示成这样: 到这里我们已经成功了一半,但能不能正确地显示出这个消息框,最终还取决于用户的授权.鉴于浏览器的安全机制,只 ...
- python新建txt文件,并逐行写入数据
#coding=utf-8 txtName = "codingWord.txt"f=file(txtName, "a+")for i in range(1,10 ...
- SQL Server连接错误1326
全新的SQL Server 2017,在2018年末才安装上,不过使用它来管理并不复杂的几张表,占用相对较多服务器资源,确实是有些大材小用. 无论如何,安装还是比较顺利.记得2012年第一次安装SQL ...
- C#获取网页的HTML码、下载网站图片 get post
/// <summary> /// 获取网页的HTML码 /// </summary> /// <param name="url">链接地址&l ...
- C++11中的右值引用及move语义编程
C++0x中加入了右值引用,和move函数.右值引用出现之前我们只能用const引用来关联临时对象(右值)(造孽的VS可以用非const引用关联临时对象,请忽略VS),所以我们不能修临时对象的内容,右 ...
- 项目通过tomcat部署到服务器,请求数据中文乱码问题
问题: 本地项目请求访问,浏览器中文输出没问题.部署到服务器上面之后,返回到浏览器的中文就乱码了. 尝试办法: 1.修改tomcat下的conf中的service.xml中的配置信息: 重新启动后,没 ...
- JAVA代码实现多级树结构封装对象
树结构在开发中经常遇到.例如:部门.菜单.员工架构等等.下面用部门作为例子构造部门结构树 1.部门表:dept -- ---------------------------- -- Table str ...
- TypeScript学习笔记(八):1.5版本之后的模块和命名空间
我之前有写过TS1.5版本之前的“模块”的笔记:TypeScript学习笔记(七):模块 但是TS这里的模块和在ECMAScript 2015里的模块(即JS原生支持了模块的概念)概率出现了混淆,所以 ...
- 视频压缩和H264
一.视频压缩 1.1 为什么需要压缩视频? 假设一个2小时未压缩的高清视频,1920×1080p的电影,我们来计算一下他的存储容量.先介绍一下帧率(frame rate或者是 FPS)概念,也就是每秒 ...
- java this 子类调父类,父类再调用子类已覆盖的方法及属性(又一次理解)
之前一直以为 this关键字 是指调用者对象,但是这次才真正理解,this代表当前对象,但是指向调用者对象,其实就是多态的用法,如下所示:B 继承了 A,在B 中调用A类的方法,在A 中用this 访 ...