题目

在 \(R\times C\) 的矩形中,问有多少个子矩形使得存在一个给定点在其中,

保证点随机,\(R,C\leq 4\times 10^4,n\leq 10^5\)


分析

考虑容斥,用总方案减去不含点的子矩形个数,

枚举上边界,那么左右边界可取的下边界取决于点的高度,

可以发现维护点的高度实际上是在维护一棵笛卡尔树,

方案的统计可以在笛卡尔树上进行,由于带修,直接用平衡树即可


代码

#include <cstdio>
#include <cctype>
#include <algorithm>
using namespace std;
const int N=100011; typedef long long lll;
struct rec{int x,y;}a[N]; lll ans,w[N],c[N];
int ke[N],siz[N],root,las=1,son[N][2],R,C,n,mx;
int iut(){
int ans=0; char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=ans*10+c-48,c=getchar();
return ans;
}
bool cmp(rec x,rec y){return x.x<y.x;}
int build(int l,int r){
if (l>r) return 0;
int mid=(l+r)>>1;
siz[mid]=r-l+1;
son[mid][0]=build(l,mid-1);
son[mid][1]=build(mid+1,r);
return mid;
}
void pup(int now){
siz[now]=siz[son[now][0]]+siz[son[now][1]]+1;
w[now]=w[son[now][0]]+w[son[now][1]]+1ll*ke[now]*(siz[son[now][0]]+1)*(siz[son[now][1]]+1);
}
void Split(int now,int kth,int &fi,int &se){
if (!now) {fi=se=0; return;}
if (kth>siz[son[now][0]]){
fi=now;
Split(son[now][1],kth-siz[son[now][0]]-1,son[now][1],se);
}else{
se=now;
Split(son[now][0],kth,fi,son[now][0]);
}
pup(now);
}
int Merge(int fi,int se){
if (!fi||!se) return fi|se;
if (ke[fi]>ke[se]){
son[fi][1]=Merge(son[fi][1],se);
pup(fi);
return fi;
}else{
son[se][0]=Merge(fi,son[se][0]);
pup(se);
return se;
}
}
void update(int x,int z){
int fi,se,th; Split(root,x-1,fi,se);
Split(se,1,se,th),w[se]=ke[se]=z;
root=Merge(Merge(fi,se),th);
}
int main(){
R=iut(),C=iut(),n=iut(),mx=R>C?R:C;
for (int i=1;i<=mx;++i) c[i+1]=c[i]+i;
for (int i=1;i<=n;++i) a[i]=(rec){iut(),iut()};
sort(a+1,a+1+n,cmp),root=build(1,C);
for (int l=1,r;l<=n;las=a[l].x,l=r){
ans+=(c[a[l].x]-c[las])*c[C+1]-w[root]*(a[l].x-las);
for (r=l;a[r].x==a[l].x;++r) update(a[r].y,a[l].x);
}
ans+=(c[R+1]-c[las])*c[C+1]-w[root]*(R+1-las);
return !printf("%lld",c[R+1]*c[C+1]-ans);
}

#平衡树#洛谷 2611 [ZJOI2012]小蓝的好友的更多相关文章

  1. 洛谷 P2611 [ZJOI2012]小蓝的好友 解题报告

    P2611 [ZJOI2012]小蓝的好友 题目描述 终于到达了这次选拔赛的最后一题,想必你已经厌倦了小蓝和小白的故事,为了回馈各位比赛选手,此题的主角是贯穿这次比赛的关键人物--小蓝的好友. 在帮小 ...

  2. 【BZOJ2658】[Zjoi2012]小蓝的好友(mrx) 平衡树维护笛卡尔树+扫描线

    [BZOJ2658][Zjoi2012]小蓝的好友(mrx) Description 终于到达了这次选拔赛的最后一题,想必你已经厌倦了小蓝和小白的故事,为了回馈各位比赛选手,此题的主角是贯穿这次比赛的 ...

  3. 【BZOJ2658】[Zjoi2012]小蓝的好友(mrx) (扫描线,平衡树,模拟)

    题面 终于到达了这次选拔赛的最后一题,想必你已经厌倦了小蓝和小白的故事,为了回馈各位比赛选手,此题的主角是贯穿这次比赛的关键人物--小蓝的好友. 在帮小蓝确定了旅游路线后,小蓝的好友也不会浪费这个难得 ...

  4. [洛谷P2610] [ZJOI2012]旅游

    洛谷题目链接:[ZJOI2012]旅游 题目描述 到了难得的暑假,为了庆祝小白在数学考试中取得的优异成绩,小蓝决定带小白出去旅游~~ 经过一番抉择,两人决定将T国作为他们的目的地.T国的国土可以用一个 ...

  5. [洛谷P2597] [ZJOI2012]灾难

    洛谷题目链接:[ZJOI2012]灾难 题目描述 阿米巴是小强的好朋友. 阿米巴和小强在草原上捉蚂蚱.小强突然想,如果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引 ...

  6. 洛谷 P2609 [ZJOI2012]数列 解题报告

    P2609 [ZJOI2012]数列 题目描述 小白和小蓝在一起上数学课,下课后老师留了一道作业,求下面这个数列的通项公式: A(0)=0 A(1)=1 A(2i)=A(i) (对于任意 i>0 ...

  7. @bzoj - 2658@ [Zjoi2012]小蓝的好友(mrx)

    目录 @description@ @solution@ @accepted code@ @details@ @description@ 终于到达了这次选拔赛的最后一题,想必你已经厌倦了小蓝和小白的故事 ...

  8. 洛谷 P2597 [ZJOI2012]灾难 解题报告

    P2597 [ZJOI2012]灾难 题目描述 阿米巴是小强的好朋友. 阿米巴和小强在草原上捉蚂蚱.小强突然想,如果蚂蚱被他们捉灭绝了,那么吃蚂蚱的小鸟就会饿死,而捕食小鸟的猛禽也会跟着灭绝,从而引发 ...

  9. 洛谷 P2173 [ZJOI2012]网络 解题报告

    P2173 [ZJOI2012]网络 题目描述 有一个无向图G,每个点有个权值,每条边有一个颜色.这个无向图满足以下两个条件: 对于任意节点连出去的边中,相同颜色的边不超过两条. 图中不存在同色的环, ...

  10. AC日记——文艺平衡树 洛谷 P3391

    文艺平衡树 思路: splay翻转操作模板: 虚拟最左最右端点,然后每次都把l翻转到root,r+2翻转到root的右节点: 然后在r+2的左节点上打标记: 标记需要在旋转,rank,print时下放 ...

随机推荐

  1. 面试官:你知道Comparable 和 Comparator 的区别吗?我:巴拉巴拉

    写在开头 面试官:"我们在Java的集合和数据结构中都离不开比较器,请你聊一聊Comparable 和 Comparator 这两种的区别吧" 内心活动:"上来就这么直接 ...

  2. 【LeetCode剑指offer#06】实现pow函数、计算x的平方根

    实现pow函数 实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn ). 示例 1: 输入:x = 2.00000, n = 10 输出:1024.00000 示例 2: 输入:x ...

  3. 【Azure 应用服务】Azure SignalR 是否可以同时支持近十万人在线互动

    什么是 Azure SignalR 服务? Azure SignalR Service 简化了通过 HTTP 向应用程序添加实时 Web 功能的过程. 这种实时功能允许服务将内容更新推送到连接的客户端 ...

  4. 【Azure 应用服务】App Services 恶意软件防护相关

    问题描述 App Services 恶意软件防护相关资料,App Service是否默认开启病毒防护呢? 问题解答 App Services 默认启用了Antimalware 软件功能,Microso ...

  5. C++ //STL---常用算法 //常用遍历 for_each //transform

    1 //STL---常用算法 2 //常用遍历 for_each 3 //transform 4 #include<iostream> 5 #include<string> 6 ...

  6. TypeScript实践总结

    下文将TypeScript简称ts 一.为什么要学 1.1 减少bug,提高质量 强语言,语法等方面异常,编译阶段"提前"报错 支持面向对象,软件设计与工程化更为成熟,更容易做单元 ...

  7. python AI 应用开发编程实战 大模型实战基础(一)

    自从 由美国主导openAi公司开发的gpt大模型问世以来,人工智能技术一直在推动整个科技行业发展,所以当下全球大公司都在布局Ai产品应用,这是这二年出了好几千个Ai产品应用,全球大大小小甚至超出近上 ...

  8. 2022_vue3笔记

    由于公司项目有vue2.5,自己电脑又要3.2,总不可能总是安装删除环境,这儿使用安装nvm版本管理 安装node前配置一下镜像地址 node_mirror: https://npm.taobao.o ...

  9. tomcat SSL安全连接配置简介

    tomcat中使用https提供服务,配置的方式有两种.生成或购买CA证书时会要求绑定域名.设置密码和证书别名(aliase). tomcat可用的证书列表里用三个文件: 方式一: <Conne ...

  10. git 撤销本地 git提交的commit记录 (git reset --hard ID)

    git 撤销本地 git提交的commit记录 (git reset --hard ID) ID的获取方法 这个id,就是你要退回的那个id,我这里截图的时候已经回退了,正常是你提错了的下面那个git ...