首页 > 其他分享 >CF333D 另一种做法

CF333D 另一种做法

时间:2023-12-18 17:56:53浏览次数:31  
标签:val point LL 一种 插入 点数 做法 CF333D 1005

前言

duel 的时候做的题,做出来的时候感觉很神,看了题解做法感觉自己是个傻逼。

本做法时间复杂度是 \(O(n^{\tfrac{5}{2}})\),可以作为补充了解。

题解

一个矩阵四个角的最大值有点烦,我们把它们排序,从小到大依次插入,则问题变为:

在 \(n\times m\) 的平面中,每次插入一个点,求在什么时候会出现一个矩形的四个顶点。

我们发现插入点数并不多,自然想到直接每次暴力向左右扫描。

设插入点数为 \(k\),则时间复杂度为 \(O(mk)\)。

那么插入点数的上界是多少呢?

其实我也不会证qaq

感谢EI老师 @Elegia 给出一篇博客,证明了插入点数的上界是 \(O(n\sqrt{n})\),有兴趣的可以在此处阅读。

Code

#include<bits/stdc++.h>
using namespace std;
#define LL long long
struct point{
	LL x,y,val;
}b[1000005];
LL n,i,j,k,m,cnt=0;
LL a[1005][1005];
bool flag[1005][1005];
bool tmp[1005][1005];
LL cmp(point x,point y){
	return x.val>y.val;
}
int main(){
	scanf("%lld%lld",&n,&m);
	for(i=1;i<=n;i++){
		for(j=1;j<=m;j++){
			scanf("%lld",&a[i][j]);
			b[++cnt].val=a[i][j];
			b[cnt].x=i;b[cnt].y=j; 
		}
	}
	sort(b+1,b+cnt+1,cmp);
	for(i=1;i<=cnt;i++){
		flag[b[i].x][b[i].y]=true;
		for(j=1;j<b[i].x;j++)
		  if(flag[j][b[i].y]==true){
		  	if(tmp[j][b[i].x]==true){
		  		printf("%lld",b[i].val);
		  		return 0;
			}
			else{
				tmp[j][b[i].x]=true;
			}
		  } 
		for(j=b[i].x+1;j<=n;j++)
		  if(flag[j][b[i].y]==true){
		  	if(tmp[b[i].x][j]==true){
		  		printf("%lld",b[i].val);
		  		return 0; 
			}
			else{
				tmp[b[i].x][j]=true;
			}
		  }
	}
	return 0;
}

标签:val,point,LL,一种,插入,点数,做法,CF333D,1005
From: https://www.cnblogs.com/monster-hunter/p/17911810.html

相关文章

  • 如何给图数据库 NebulaGraph 新增一种数据类型,以 Binary 为例
    NebulaGraph内核所自带的数据结构其实已经很丰富了,比如List、Set、Map、Duration、DataSet等等,但是我们平时在建表和数据写入的时候,可以用到的数据结构其实比较有限,复杂结构目前仅支持以下几种:enumPropertyType{UNKNOWN=0,...//基础类型TIME......
  • 如何给图数据库 NebulaGraph 新增一种数据类型,以 Binary 为例
    NebulaGraph内核所自带的数据结构其实已经很丰富了,比如List、Set、Map、Duration、DataSet等等,但是我们平时在建表和数据写入的时候,可以用到的数据结构其实比较有限,复杂结构目前仅支持以下几种:enumPropertyType{UNKNOWN=0,...//基础类型TIM......
  • 一种PVE直通全网卡,不丢管理的小技巧
    参考来源:B站up,非常普通的旅者关键词:PVE小技巧,网卡直通,NAS概要:PVE网络除了常规的物理网络设备外,还存在一个虚拟的网络设备lo没在网络的UI界面显示。我们可以通过桥接lo的方式接入虚拟机主路由的LAN口,形成一个虚拟机的内部网络。再直通所有网卡到虚拟主路由,通过主路由管理所有......
  • 一种可以实现搜索结果按照相似度来排序的sql,核心是分词和order by like 的使用
    常规的搜索一般使用like执行模糊搜索,这种搜索有个缺陷,一旦搜索内容里面有一个错的就会导致搜索失败。有没有一种实现可以容错的且按照相似度排序的方法呢?类似百度google那样的。经过自己的测试发现使用分词结合排序的orderbylike可以实现。我直接给出例子sql的吧  比如......
  • 一种LED驱动专用控制电路方案
    一、基本的概述TM1651是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU数字接口、数据锁存器、LED高压驱动、键盘扫描等电路。本产品性能优良,质量可靠。采用SOP16/DIP16的封装形式。二、特性说明采用功率CMOS工艺显示模式(7字段×4位),支持共阳数码管输......
  • 一种LED驱动专用控制电路方案
    一、基本的概述TM1651是一种带键盘扫描接口的LED(发光二极管显示器)驱动控制专用电路,内部集成有MCU数字接口、数据锁存器、LED高压驱动、键盘扫描等电路。本产品性能优良,质量可靠。采用SOP16/DIP16的封装形式。二、特性说明采用功率CMOS工艺显示模式(7字段×4位),支持共阳数码管输......
  • 一种LED驱动专用控制电路
    一、基本概述TM1620是一种LED(发光二极管显示器)驱动控制专用IC,内部集成有MCU数字接口、数据锁存器、LED驱动等电路。本产品质量可靠、稳定性好、抗干扰能力强。主要适用于家电设备(智能热水器、微波炉、洗衣机、空调、电磁炉)、机顶盒、电子称、智能电表等数码管或LED显示设备。二......
  • 商用软件调用开源代码后硬分叉不合并 —— 一种合法的防御性编程或者是商用软件的贪婪
    看到一个说法,说前段时间某滴的公司代码升级导致错误最后使全公司业务崩溃一整天的事情是因为公司商用软件中使用了一种合法的防御性编程,也就是商用软件调用开源代码后硬分叉不合并。 可以说商业企业大幅度使用开源软件已经是公开的秘密了,但是出于实际情况这些不合规的将开源软......
  • vscode全离线环境下远程连接慢、扩展未启用的一种原因
    简单写写网络环境堡垒机-VMware远程->开发虚拟机(Windows,离线)-SSH->编译服务器(Ubuntu,离线)问题现象按照网络教程在编译服务器上离线部署了vscodeserver,配置好ssh公钥,在Windows开发虚拟机上使用vscode的RemoteSSH扩展连接到编译服务器,出现以下问题长时间处于“正在打开远程”......
  • 在Python的类型提示中,你不能直接使用​​or​​​来表示一个参数可以是多种类型中的一
    在Python的类型提示中,你不能直接使用or来表示一个参数可以是多种类型中的一种。你应该使用typing.Union来表示这种情况¹²。所以,你的函数应该这样写:fromtypingimportUnion,Listdefquery_coilNum(self,coilNum:Union[str,List[str]]):pass在这个例子中,Union[str,Li......