AHOI2008 矩形

告别卡顿!OBS Studio最佳录制参数设置指南(适合游戏/网课/会议场景) 本文提供OBS Studio录制参数优化指南,针对游戏、网课及会议三大场景,详细解析帧率、码率与编码器设置。重点推荐利用硬件编码器(如NVENC)实现游戏录制零卡顿,并分享清晰稳定的网课录制与长时间会议录制配置方案,助你告别视频卡顿与音画不同步问题。 阅读详情

Description

  第一象限内有N个平行于坐标轴的矩形。你的任务非常简单,那就是计算有多少个矩形,至少被一个矩形包含。

Input

  第一行包含一个整数N,表示矩形的个数。接下来N行,每行用4个整数x1,y1,x2,y2描述了一个矩形。其中(x1,y1)表示这个矩形左下角的坐标,(x2,y2)表示右上角的坐标。

Output

  只包含一个整数,表示你得到的答案。

Sample Input

3
0 0 5 5
1 2 3 4
2 1 4 3

Sample Output

2

Hint

[样例说明]
编号为2和3的矩形被编号为1的矩形包含

[数据规模]
- 50%的数据中,N<=5000
- 100%的数据中,N<=200000
- 所有数据中,一个x值或y值最多出现一次

cdq模板题,可以转化为四维偏序,又因为这道题仅需判定0/1,所以可以降成三维。

具体来说:Ax1<Bx1&&Ax2>Bx2&&Ay1<By1&&Ay2>By2,前两维模板操作,后两维用数据结构乱搞(并没有具体)

顺便强行4维偏序一波(然而nlog^2n在本oj 卡成暴力分,洛谷不开o2tle一组)。

#include<bits/stdc++.h>
using namespace std;
const int Maxn=200005;
inline int getint(){
	int res=0;char c=getchar();
	while(!isdigit(c))c=getchar();
	while(isdigit(c))(res*=10)+=c-'0',c=getchar();
	return res;
}
struct Matrix{
	int x1,y1,x2,y2,idx;
	Matrix(int x1=0,int y1=0,int x2=0,int y2=0,int idx=0):x1(x1),y1(y1),x2(x2),y2(y2),idx(idx){}
}a[Maxn];
int n,mx,tmp[Maxn];
bool f[Maxn];
bool cmp1(const Matrix&A,const Matrix&B){
	return A.x1<B.x1;
}
bool cmp2(const Matrix&A,const Matrix&B){
	return A.x2>B.x2;
}
struct ZKW{
	int M,mx[Maxn*10];
	void build(int N){
		memset(mx,-63,sizeof(mx));
		for(M=1;M<N+4;M<<=1);
	}
	void edit(int x,int k){
		mx[x+=M+2]=k;
		while(x>>=1)mx[x]=max(mx[x<<1],mx[x<<1|1]);
	}
	int query(int s,int t){
		int Ans=-0x3f3f3f3f;
		for(s+=M+1,t+=M+3;s^t^1;s>>=1,t>>=1){
			if(~s&1)Ans=max(Ans,mx[s^1]);
			if( t&1)Ans=max(Ans,mx[t^1]);
		}
		return Ans;
	}
}zkw;
void discrete(){
	for(int i=1;i<=n;++i)
		tmp[++tmp[0]]=a[i].y1;
	sort(tmp+1,tmp+tmp[0]+1);
	mx=unique(tmp+1,tmp+tmp[0]+1)-tmp-1;
	for(int i=1;i<=n;++i)
		a[i].y1=lower_bound(tmp+1,tmp+mx+1,a[i].y1)-tmp;
}
void cdq(int l,int r){
	if(l>=r)return ;
	int mid=l+r>>1;
	cdq(l,mid),cdq(mid+1,r);
	sort(a+l,a+mid+1,cmp2),sort(a+mid+1,a+r+1,cmp2);
	int i=l,j=mid+1;
	for(;j<=r;++j){
		for(;i<=mid&&a[i].x2>=a[j].x2;++i)
			zkw.edit(a[i].y1,a[i].y2);
		f[a[j].idx]|=(zkw.query(1,a[j].y1)>=a[j].y2);
	}
	while(--i>=l)zkw.edit(a[i].y1,-0x3f3f3f3f);
}
int main(){
	n=getint();
	for(int i=1;i<=n;++i){
		int x1=getint(),y1=getint(),x2=getint(),y2=getint();
		a[i]=(Matrix){x1,y1,x2,y2,i};
	}
	sort(a+1,a+n+1,cmp1);
	discrete();
	zkw.build(mx);
	cdq(1,n);
	int Ans=0;
	for(int i=1;i<=n;++i)
		Ans+=f[i];
	cout<<Ans<<endl;
	return 0;
}
#include<bits/stdc++.h>
using namespace std;
const int Maxn=200005;
inline int getint(){
	int res=0;char c=getchar();
	while(!isdigit(c))c=getchar();
	while(isdigit(c))(res*=10)+=c-'0',c=getchar();
	return res;
}
struct Matrix{
	int x1,y1,x2,y2,idx,part;
	Matrix(int x1=0,int y1=0,int x2=0,int y2=0,int idx=0):x1(x1),y1(y1),x2(x2),y2(y2),idx(idx){}
}a[Maxn],t[Maxn];
int n,mx,tmp[Maxn];
bool f[Maxn];
bool cmp1(const Matrix&A,const Matrix&B){
	return A.x1<B.x1;
}
bool cmp2(const Matrix&A,const Matrix&B){
	return A.x2>B.x2;
}
struct ZKW{
	int M,mx[Maxn*10];
	void build(int N){
		memset(mx,-63,sizeof(mx));
		for(M=1;M<N+4;M<<=1);
	}
	void edit(int x,int k){
		mx[x+=M+2]=k;
		while(x>>=1)mx[x]=max(mx[x<<1],mx[x<<1|1]);
	}
	int query(int s,int t){
		int Ans=-0x3f3f3f3f;
		for(s+=M+1,t+=M+3;s^t^1;s>>=1,t>>=1){
			if(~s&1)Ans=max(Ans,mx[s^1]);
			if( t&1)Ans=max(Ans,mx[t^1]);
		}
		return Ans;
	}
}zkw;
void discrete(){
	for(int i=1;i<=n;++i)
		tmp[++tmp[0]]=a[i].y1;
	sort(tmp+1,tmp+tmp[0]+1);
	mx=unique(tmp+1,tmp+tmp[0]+1)-tmp-1;
	for(int i=1;i<=n;++i)
		a[i].y1=lower_bound(tmp+1,tmp+mx+1,a[i].y1)-tmp;
}
void cdq2(int l,int r){//part=-1:x1<x1',x2降序
	if(l>=r)return ;
	int mid=l+r>>1;
	cdq2(l,mid),cdq2(mid+1,r);
	int i=l,j=mid+1;
	for(;j<=r;++j){
		for(;i<=mid&&t[i].x2>=t[j].x2;++i)//这道题可以一个for到底 
			if(t[i].part==-1)zkw.edit(t[i].y1,t[i].y2);
		if(t[j].part==1)f[t[j].idx]|=(zkw.query(1,t[j].y1)>=t[j].y2);
	}
	while(--i>=l)zkw.edit(t[i].y1,-0x3f3f3f3f);
}
void cdq1(int l,int r){//x1升序 
	if(l>=r)return ;
	int mid=l+r>>1;
	cdq1(l,mid),cdq1(mid+1,r);
	sort(a+l,a+mid+1,cmp2),sort(a+mid+1,a+r+1,cmp2);
	int i=l,j=mid+1,cnt=l-1;
	while(i<=mid&&j<=r){
		if(a[i].x2>=a[j].x2){
			t[++cnt]=a[i++];
			t[cnt].part=-1;
		}else {
			t[++cnt]=a[j++];
			t[cnt].part=1;
		}
	}
	while(i<=mid)t[++cnt]=a[i++],t[cnt].part=-1;
	while(j<=r)t[++cnt]=a[j++],t[cnt].part=1;
	//重标号
	cdq2(l,r);
}
int main(){
	n=getint();
	for(int i=1;i<=n;++i){
		int x1=getint(),y1=getint(),x2=getint(),y2=getint();
		a[i]=(Matrix){x1,y1,x2,y2,i};
	}
	sort(a+1,a+n+1,cmp1);
	discrete();
	zkw.build(mx);
	cdq1(1,n);
	int Ans=0;
	for(int i=1;i<=n;++i)
		Ans+=f[i];
	cout<<Ans<<endl;
	return 0;
}

 

Linux下Catapro酶动力学预测工具保姆级安装指南(PyTorch+CUDA11.8适配版) 本文提供了Linux系统下Catapro酶动力学预测工具的详细安装指南,特别适配PyTorch+CUDA11.8环境。从环境准备、源码获取到虚拟环境创建、依赖包安装和模型配置,逐步指导用户完成安装流程,并包含常见问题排查和性能优化建议,帮助研究者快速部署这一高效酶动力学参数预测工具。 阅读详情

相关推荐

ArcGIS实战:利用IDW反距离权重法实现气象数据的批量空间插值

本文详细介绍了如何利用ArcGIS中的IDW反距离权重法实现气象数据的批量空间插值。通过实战案例和脚本示例,展示了IDW插值在气象数据分析中的高效应用,包括算法原理、参数调优、批处理自动化及常见问题解决方案,帮助用户快速生成连续分布的气象地图。

weixin_29051149的博客 240

Matalab仿真矩形线圈作四维立体图(V=f(x,y,z))

Matalab仿真矩形线圈作四维立体图(V=f(x,y,z)),计算结果使用原图显示和等刻度轴显示两种方式,可以直观显示四维立体关系。

wangyandong100的博客 1173

Windows下用RKDevTool解包update.img的完整流程(含常见错误排查)

本文详细介绍了在Windows系统下使用RKDevTool工具解包update.img固件的完整流程。从工具准备、环境搭建到逐步解包操作,重点解析了输出文件结构,并提供了修改分区后重新打包的实战方法。文章还针对解包失败、打包错误等常见问题提供了详细的排查与解决方案,旨在帮助嵌入式开发者和爱好者高效完成固件分析与定制工作。

aa123的博客 716

1187:矩形关系(运算符重载)

问题 C: 矩形关系(运算符重载) 时间限制: 1 Sec 内存限制: 128 MB 提交: 231 解决: 88 [提交][状态][讨论版] 题目描述 假设坐标采用二维平面坐标。 定义点类CPoint,包含属性x,y(整型)。方法有:带参构造函数,getX,getY分别返回点的x坐标,y坐标。 定义矩形类CRectangle,包含属性:矩形的左上角坐标leftPoint,右下角坐标rightPoint。类中方法有: 1)带参构造函数,初始化矩形的左上角、右下角 2)重载>运算符,参数为CPoin

hackermengzhi的博客 4132

STM32F407 CubeMX UART DMA高效解析BNO085九轴数据

本文详细介绍了如何在STM32F407平台上使用CubeMX配置UART和DMA高效解析BNO085九轴传感器数据。通过DMA循环接收机制实现低CPU占用的实时数据采集,并分享数据解析技巧、错误处理及实战调试经验,为嵌入式开发者提供完整解决方案。

o4p5q6r7s的博客 235

别再到处找模型了!手把手教你将TI、ADI官网的SPICE模型导入LTspice(附路径避坑指南)

本文详细介绍了如何将TI、ADI官网的SPICE模型导入LTspice的全流程,包括模型获取、路径配置、符号生成等关键步骤,并提供了路径避坑指南。通过实战案例和技巧分享,帮助电子工程师高效利用外部元器件模型进行电路仿真,提升设计效率。

weixin_42535703的博客 406

【偏序问题】三维偏序,四维偏序

三维偏序是一个很经典的东西啊。 //结果蒟蒻我居然是先写的四维的? 第一位排序当作限制,然后cdq分治+树状数组统计就好。写起来很快的啊。 题目:bzoj3262 陌上花开 1 #include<bits/stdc++.h> 2 #define N 100005 3 using namespace std; 4 int n,m,c[2*N],an...

di679520024669的专栏 377

计算机应用数学--第一次作业

中科大 计算机应用数学 第一次作业

一杯水果茶!足矣~ 1329

如何数四维矩阵

如何数四维矩阵,如下是一个四位矩阵,形状为(4,3,2,5) tensor([[[[-0.3037, 0.5017, 0.2698, 0.7181, 0.7317], [ 0.2041, -2.1096, 2.0244, -2.0167, -0.4281]], [[ 0.0483, 0.0486, -0.9498, -0.1509, -0.9814], [-0.0850, -0.8587, 1.4044, 0.6037, -...

weixin_45658098的博客 3399

第14.8章 高翔博士最新开源框架Lightning-LM源码解读(八):位姿平滑器PoseSmoother深度剖析,从原理到代码实现

本文深度解析了高翔博士开源框架Lightning-LM中的位姿平滑器PoseSmoother模块。该模块通过设置平滑因子,在保证位姿准确性的同时减少突变,使位姿变化更平稳。文章详细讲解了模块功能、数据流程和核心代码实现,包括构造函数、拷贝构造函数以及关键的PushDRPose和PushPose函数。重点分析了位姿平滑算法原理,涉及运动有效性校验、位姿队列维护和平滑因子调节等核心机制。此外还介绍了相关C++语法(如显式构造函数、默认拷贝构造)和优化方向。本解析为SLAM学习者提供了位姿平滑处理的实用实现范例。

行知SLAM 600

RuyiDify如何创建知识库API密钥:让程序安全访问知识库

知识库 API Key 是程序访问知识库的钥匙。创建它很简单,但真正重要的是知道它能做什么、应该放在哪里、不能暴露给谁。RuyiDify 讲这一步,不是为了让大家多记一个按钮,而是为了把知识库从“人工上传资料”推进到“程序化维护资料”。

未来已来,AI时代,学AI编程,做AI量化,就来大鹏AI教育。 136

[AHOI2008]紧急集合 / 聚会

i

m0_74821245的博客 352

【全局路径规划地图算法】Voronoi路径规划探索(附C++代码)

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对Voronoi路径规划探索做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容。

qq_35635374的博客 2239

[bzoj1790][Ahoi2008]Rectangle 矩形藏宝地

1790: [Ahoi2008]Rectangle 矩形藏宝地Time Limit: 10 Sec Memory Limit: 64 MB Submit: 393 Solved: 129 [Submit][Status][Discuss] Description欢乐岛上最著名的游戏是一个寻宝游戏,小可可来到宝藏的埋藏地,这是一块开阔地,宝藏被分散的埋藏在这块地下,现在要做的是一件件的把宝藏

Vampire 1134

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

BZOJ 1790: [Ahoi2008]Rectangle 矩形藏宝地

BZOJ 1790: [Ahoi2008]Rectangle 矩形藏宝地题目传送门 【题目大意】   游戏的主办方把这块开阔地当作第一象限,将所有可能埋藏宝藏的地方划成一个个矩形的土地,并把这些矩形土地的坐标都告诉了参赛者。挖宝的提示很简单,只要某一个矩阵土地至少被另外一个矩阵土地所包含,那么这个矩阵土地里肯定埋有宝藏。问:有多少个矩形土地里肯定埋有宝藏?  其实就是求对于矩形i,是否存

kxy的博客 485

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

[bzoj 1790] [Ahoi2008]Rectangle 矩形藏宝地

题意 给定N(N 思路 看到数据范围以为要O(nlog2n)" role="presentation" style="position: relative;">O(nlog2n)O(nlog2n)O(nlog_{2}n)的方法,想了半天也不会,一搜题解,哈哈哈,O(nlog22n)" role="presentation" style="position: relative;">O(nl

lololommmm的博客 277

P4793 [AHOI2008]矩形藏宝地 cdq分治 线段树

   简单题调试了半天QAQ // luogu-judger-enable-o2 #include<bits/stdc++.h> using namespace std; #define rep(i,a,b) for(ll i=(a);i<=(b);i++) #define repp(i,a,b) for(ll i=(a);i>=(b)...

weixin_30389003的博客 156

bzoj 1790: [Ahoi2008]Rectangle 矩形藏宝地

我的这种做法MLE一个点,cheat过去了。 把所有点按照x1排序,依次在线段树节点的x2位置加入区间[y1,y2] 查询时,查询线段树区间[x2,n]是否存在一个区间包含[y1,y2],在它之前加入的点的x1 查询是否存在一个区间包含这个区间: 把这些区间去除被别的区间包含的区间,剩下的按照左端点排序,二分找到最大的y1 显然,如果这个区间不包含查询的区间,那么其他区间也不可能, 维

heheda_is_an_OIer的博客 857

bzoj1790: [Ahoi2008]Rectangle 矩形藏宝地

被统考草翻回来做题不太行啊,线段树和cdq都写挂细节 这题大概就是四维偏序吧,欸n怎么到了20w,只能水70啊 但是这个好像只要有1个在里面就可以ans就可以++了耶 突然想到高中奥数老师说的,大概是这样的 a<|x-2|/x^2+1 x取任意数,求a的范围,就相当于求后面那坨的最小值 运用这个思想 那么就搞个线段树,下标跟树状数组一样判第三维,然后维护一下第四维区间最大值,只要...

weixin_30511107的博客 90

[BZOJ1790][AHOI2008]Rectangle 矩形藏宝地(四维偏序,CDQ+线段树)

1790: [Ahoi2008]Rectangle 矩形藏宝地 Time Limit: 10 SecMemory Limit: 64 MBSubmit: 553Solved: 193[Submit][Status][Discuss] Description 欢 乐岛上最著名的游戏是一个寻宝游戏,小可可来到宝藏的埋藏地,这是一块开阔地,宝藏被分散的埋藏在这块地下,现在要做的是一件...

weixin_30535565的博客 144

BZOJ 1790: [Ahoi2008]Rectangle 矩形藏宝地(CDQ分治+离散化+线段树)

Description欢乐岛上最著名的游戏是一个寻宝游戏,小可可来到宝藏的埋藏地,这是一块开阔地,宝藏被分散的埋藏在这块地下,现在要做的是一件件的把宝藏挖出来。为了提示宝藏的埋藏点,游戏的主办方把这块开阔地当作第一象限,将所有可能埋藏宝藏的地方划成一个个矩形的土地,并把这些矩形土地的坐标都告诉了参赛者。挖宝的提示很简单,只要某一个矩阵土地至少被另外一个矩阵土地所包含,那么这个矩阵土地里肯定埋有宝藏。

Ab.Ever 846

BZOJ1790:[Ahoi2008]Rectangle 矩形藏宝地 (CDQ分治+线段树)

题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1790题目分析:这题我一开始想了很久,想到平面扫描啊乱七八糟的东西,后来发现其实我们根本不用当每一个藏宝地是一个矩形。如果一个藏宝地i的左下角坐标为(A,B),右上角坐标为(C,D),那么我们就是要查看有没有一个藏宝地的A值小于i的A值,而且其B值小于i的B值,其C,D值分别大于i的C,D值

KsCla 713

[Ahoi2008]Rectangle 解题报告

又是喜闻乐见的只会傻逼做法的题。。跟我跑得差不多快的人都写了1K,我写了快4K。。 并不知道他们怎么搞的,说下我的做法: 考虑按x从大到小的扫描线,每次在矩形的左下角(x1,y1)(x_1,y_1)插入一个数y2y_2,判断一个矩形(x1,y1)−(x2,y2)(x_1,y_1)-(x_2,y_2)是否被包含就相当于询问矩形(0,0)−(x1,y1)(0,0)-(x_1,y_1)的最大值是否大于

TA 748

2017AHOI备战日志

学习记录

Circus 1038

BZOJ-几道比较有趣的题目

题目一 描述 BZOJ 1008: [HNOI2008]越狱 监狱有连续编号为1…N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱 分析 如果直接求的话十分复杂, 而且貌似还要考虑容斥? 这个问题的关键就是转化一下, 求不能发生越狱的状

ghy1953 2012
上一篇: 关于快速幂和慢速乘(俄罗斯农民乘法)
下一篇: HDU 5126 stars(4维偏序)
DancingZ
博客等级 码龄9年 10粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值