题意

求连续段数。
n<=3e5

思路

  • 析合树板题(然而并不会)
  • 考虑分治求。
  • 讨论max与min在左右两边的四种情况就行了。
  • O ( n l o g n ) O(n log n) O(nlogn)
#include <bits/stdc++.h>
using namespace std;
const int N = 3e5 + 10, Z = 3e5 * 2;
typedef long long ll;
int a[N], n;
int cnt[4 * N];
ll ans;
int b[N], no[N], len;int smx[N], smi[N], pmx[N], pmi[N], omx[N], omi[N];void divide(int L, int R) {if (L == R) ans++;if (L >= R) return;int mid = L + R >> 1;smx[mid + 1] = 0, smi[mid + 1] = n + 1;pmx[mid] = 0, pmi[mid] = n + 1;for(int i = mid + 1; i <= R; i++) {pmx[i] = max(pmx[i - 1], a[i]);pmi[i] = min(pmi[i - 1], a[i]);}for(int i = mid; i >= L; i--) {smx[i] = max(smx[i + 1], a[i]);smi[i] = min(smi[i + 1], a[i]);}int mi = mid, mx = mid;omx[mid] = omi[mid] = mid;for(int i = mid + 1; i <= R; i++) {while(mx >= L && smx[mx] <= pmx[i]) mx--;while(mi >= L && smi[mi] >= pmi[i]) mi--;omx[i] = mx, omi[i] = mi;}ll zs = 0;//part1for(int i = mid + 1; i <= R; i++) {int loc = i + pmi[i] - pmx[i];if (omi[i] < loc && omx[i] < loc && loc <= mid) zs++;}//part2for(int i = mid + 1; i <= R; i++) cnt[Z + i - pmx[i]] = 0;for(int i = mid + 1; i <= R; i++) {for(int j = omx[i - 1]; j > omx[i]; j--)cnt[Z + j - smi[j]] ++;for(int j = omi[i - 1]; j > omi[i]; j--)cnt[Z + j - smi[j]] --;if (omx[i] < omi[i]) zs += cnt[Z + i - pmx[i]];}//part3for(int i = mid + 1; i <= R; i++) cnt[Z + i + pmi[i]] = 0;for(int i = mid + 1; i <= R; i++) {for(int j = omx[i - 1]; j > omx[i]; j--)cnt[Z + j + smx[j]] --;for(int j = omi[i - 1]; j > omi[i]; j--)cnt[Z + j + smx[j]] ++;        if (omi[i] < omx[i]) zs += cnt[Z + i + pmi[i]];}//part4for(int i = mid + 1; i <= R; i++) cnt[Z + i] = 0;for(int i = L; i <= mid; i++) cnt[Z + smx[i] - smi[i] + i] ++;int zq = mid;for(int i = mid + 1; i <= R; i++) {while(zq > omx[i]){cnt[Z + smx[zq] - smi[zq] + zq] --;zq--;}while(zq > omi[i]) {cnt[Z + smx[zq] - smi[zq] + zq] --;zq--;}zs += cnt[Z + i];}ans += zs;divide(L, mid), divide(mid + 1, R);
}int main() {freopen("f.in", "r", stdin);cin>>n; for(int i = 1; i <= n; i++) {int x,y;scanf("%d %d",&x,&y);a[x] = y;}divide(1, n);cout<<ans<<endl;
}

CF526 F Pudding Monsters相关推荐

  1. [CF 526 F] Pudding Monsters(单调栈 + 线段树)

    CF526F Pudding Monsters problem solution code problem luogu翻译 solution observation :每行每列恰好有一个棋子,所以如果 ...

  2. 【机房练习赛 5.15】奇袭 CF526F Pudding Monsters

    题面 Pudding Monsters 问题描述 由于各种原因,桐人现在被困在 UnderWorldUnder WorldUnderWorld(以下简称 UWUWUW)中,而 UWUWUW 马上要迎来 ...

  3. Codeforces 436D Pudding Monsters

    题意简述 开始有无限长的一段格子,有n个格子种有布丁怪兽,一开始连续的布丁怪兽算一个布丁怪兽. 每回合你可以将一个布丁怪兽向左或右移动,他会在碰到第一个布丁怪兽时停下,并与其合并. 有m个特殊格子,询 ...

  4. 【CF526F】Pudding Monsters

    题意: 给你一个排列pi,问你有对少个区间的值域段是连续的. n≤3e5 题解: bzoj3745 转载于:https://www.cnblogs.com/yinwuxiao/p/9474652.ht ...

  5. 【做题记录】max-min+1=len 区间计数

    (来源:XJ高质量原创题) 原题地址 弱化版:CF526F Pudding Monsters 弱化版 题意:\(n\times n\) 的棋盘上有 \(n\) 颗棋子,每行每列都有且仅有一颗棋子,求出 ...

  6. HTML打造动漫人物,19个搭配很酷的卡通人物网站设计欣赏

    19个搭配很酷的卡通人物网站设计欣赏 11月 6, 2014 评论 Sponsor 使用插画.卡通人物这些设计元素来搭配网站是很不错的idea,因为他很容易让用户记住你的网站,特别是绘制有趣的卡通人物 ...

  7. [Python-Pygame]无中生有开发自己的2D动作游戏生成敌人

    一.构建父类 无论什么样的敌人,无论其行动.AI如何,能力强弱.大小各异,它们总会有一些共同的属性,例如无论什么样的敌人都具有生命值.攻击力等基本的属性. 从这里出发,我们可以使用类的继承来简化代码量 ...

  8. 中国成为应用程序开发商的新战场

    对 全球的应用程序开发商来说,中国正在成为他们彼此争斗的下一个战场,但事实证明,打入这个世界最大的智能手机市场是非常不容易的. 中国:App的下一个主战场 全球最大的应用程序开发商越来越多地将目光投向 ...

  9. 日常英语---十一、MapleStory/Monsters/Level 201-210(Dark Demon Eagle Rider)

    日常英语---十一.MapleStory/Monsters/Level 201-210(Dark Demon Eagle Rider) 一.总结 一句话总结:骑着鹰的快速飞行的恶魔,进入地图后跟着你. ...

最新文章

  1. 为何 Windows 10X 无法延续 Windows 的成功?
  2. js自定义函数及参数问题
  3. ASP.NET 如何动态修改 title Meta link标签
  4. nginx同域名代理tomcat不同目录下的文件
  5. 读书推荐:2017 第一期
  6. Delphi替换PE图标资源
  7. Apache日志配置
  8. php中des加密cbc模式,php中加密解密DES类的简单使用方法示例
  9. IOS10.8.2安装
  10. 在Zephyr RTOS上实现一个轮询系统
  11. CH24C 逃不掉的路
  12. idea2020不显示光标所在位置的方法名
  13. 懒人分析jQuery源码
  14. 汉字笔画动图怎么做_怎么用flash制作汉字笔顺的动画
  15. matlab:matlab神经网络工具的使用
  16. mysql timestamp毫秒_MySQL的Timestamp插入丢失毫秒的问题
  17. 硕士转计算机科学,普利茅斯大学计算机科学(转专业)理学硕士研究生申请要求及申请材料要求清单...
  18. 阿里云Oss水印图片处理Utils
  19. 推荐一个 github 项目 spider163,抓取网络数据,歌曲评论等数据
  20. 精简高效的CSS命名准则和方法

热门文章

  1. 存储 NAB 2019: Infortrend赢得Video Edge颁发的Future最佳表现奖
  2. docker启动Tomcat登录网页显示404错误解决方案
  3. Windows 禁用WIn+L锁定系统快捷键
  4. h5 img js 点击图片放大_网页对应图片点击放大 html+js
  5. 求java特色队名_有特色的队名和口号运动会
  6. 每日餐领外卖券外卖优惠券cps系统外卖券CPS系统公众号小程序源码
  7. 国内服务器安装ServerStatus探针
  8. java收集器Collector
  9. 平面设计中的字体设计风格原则有哪些
  10. 【天光学术】文艺美学论文:美学视角下“隐秀”与“幽玄”的对比分析(节选)