首页 > 其他分享 >[abc309 F] Box in Box

[abc309 F] Box in Box

时间:2023-07-16 20:37:14浏览次数:41  
标签:Box 二分 abc309 cn int mid const

F - Box in Box

首先,每个长方体的\(h,w,d\)都是可以任意互换的,所以我们考虑用\(a_0,a_1,a_2\)来代替它们(\(a_0\leq a_1\leq a_2\))

然后可以发现一个规律,我们肯定是用\(a_0\)和\(a_0\)比较,\(a_1\)和\(a_1\)比较,\(a_2\)和\(a_2\)比较

那么现在显然就是三位偏序,可以上\(CDQ\)了,先对\(a_0\)进行排序,但是因为题目要求的是严格大于,所以在\(CDQ\)时,\(mid\)不一定是取\(\frac{l+r}2\),而是一个使得\(mid\)的\(a_0\)和\(mid+1\)的\(a_0\)不相同的,尽量靠近中间的位置

因为若当前区间的\(l\)的\(a_0\)和\(r\)的\(a_0\)都相等了,我们就不用管这个区间了,所以即使我们并没有在下标上进行二分,但是我们相当于在\(a_0\)的值域上进行了二分(并不是严格二分,只是一个相当于在二分的过程),所以复杂度没有问题

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5; 
int n,lsh[N],tot;
struct node{
	int a[3];
	bool operator < (const node &other)const{
		return a[0]<other.a[0];	
	}
}cn[N];
bool cmp(node a,node b){
	return a.a[1]<b.a[1];
}
map<int,int> st,ed;
int c[N];
void add(int x,int y){
	for(;x<=tot;x+=x&-x) c[x]+=y; 
}
int ask(int x){
	int ans=0;
	for(;x;x-=x&-x) ans+=c[x];
	return ans;
}
void solve(int l,int r){
	if(cn[l].a[0]==cn[r].a[0]) return;
	int mid=l+r>>1;
	if(cn[mid].a[0]==cn[mid+1].a[0]){
		int len1=st[cn[mid].a[0]]-l,len2=r-ed[cn[mid].a[0]];
		if(len1<len2) mid=ed[cn[mid].a[0]];
		else mid=st[cn[mid].a[0]]-1;
	}
	solve(l,mid),solve(mid+1,r);
	sort(cn+l,cn+mid+1,cmp),sort(cn+mid+1,cn+r+1,cmp);
	int a=l,b=mid+1;
	for(;b<=r;++b){
		while(a<=mid&&cn[a].a[1]<cn[b].a[1]) add(cn[a].a[2],1),++a;
		if(ask(cn[b].a[2]-1)){ puts("Yes"); exit(0); } 
	}
	for(int i=l;i<a;++i) add(cn[i].a[2],-1);
}
int main(){
	scanf("%d",&n);
	for(int i=1;i<=n;++i) scanf("%d%d%d",&cn[i].a[0],&cn[i].a[1],&cn[i].a[2]),sort(cn[i].a,cn[i].a+3),lsh[++tot]=cn[i].a[2];
	sort(cn+1,cn+n+1),sort(lsh+1,lsh+tot+1),tot=unique(lsh+1,lsh+tot+1)-lsh-1;
	for(int i=1;i<=n;++i){
		if(!st[cn[i].a[0]]) st[cn[i].a[0]]=i;
		ed[cn[i].a[0]]=i;
		cn[i].a[2]=lower_bound(lsh+1,lsh+tot+1,cn[i].a[2])-lsh; 
	}
	solve(1,n);
	puts("No");
	return 0;
}

标签:Box,二分,abc309,cn,int,mid,const
From: https://www.cnblogs.com/LuoyuSitfitw/p/17558454.html

相关文章

  • r语言实现box-cox
    R语言实现Box-Cox变换引言Box-Cox变换是一种常用的数据转换方法,用于改善数据的正态性和方差齐性。这种变换可以将非正态分布的数据转换为近似正态分布的数据,从而使得在统计分析中的假设成立。在R语言中,我们可以使用boxcox()函数来实现Box-Cox变换。Box-Cox变换的原理Box-Cox变......
  • ssh远程登陆virtualbox debian12
    1.检查ssh是否安装ps-e|grepssh只有ssh-agent表示没装1.1安装ssh-serversudoaptinstallopenssh-server-y2.Virtualbox网络设置3.ssh远程登陆#获取iphostname-I其它问题blueisnotinthesudoersfile$suroot$vi/etc/sudoersblueALL=(......
  • androidflexbox
    如何实现"androidflexbox"的步骤介绍在开发Android应用时,我们经常需要使用到灵活的布局,以适应不同屏幕尺寸和设备方向的变化。AndroidFlexbox是一个强大的库,它提供了一种方便的方式来创建灵活的布局,使元素能够自动适应空间,并自动换行。在本文中,我将向你介绍如何使用AndroidFlex......
  • Spartacus search box 里显示的产品列表数据是从哪里进行搜索的
    如下图所示,selector:cx-searchboxComponent名称:Search-box.component.ts点击searchbar之后:添加css类:在断点停下来的地方,查看搜索结果列表:抛出ProductSearch的action:最后调用ProductSearchConnector进行搜索:dispatch到adapter:ProductListComponent......
  • c# PasswordBoxHelper
    1publicclassPasswordBoxHelper2{3publicstaticreadonlyDependencyPropertyPasswordProperty=DependencyProperty.RegisterAttached("Password",typeof(string),typeof(PasswordBoxHelper),4newPropertyMetadata(......
  • WPF CheckBox勾选框大小设置
    1、设置CheckBox,FontSize,只有字体发生变化,前面的勾选框太小,可以设置LayoutTransform<StyleTargetType="CheckBox"><SetterProperty="HorizontalAlignment"Value="Left"/><SetterProperty="LayoutTra......
  • jQuery: message box
     https://www.codeproject.com/articles/263531/jquery-message-box-pluginhttps://dotctor.github.io/jQuery.msgBox/https://www.c-sharpcorner.com/UploadFile/bc1c71/display-message-box-in-center-of-window-using-jquery/https://www.queness.com/post/1696/create-a-......
  • 界面控件DevExtreme v23.1新版亮点 - 全新的DateRangeBox组件
    DevExtreme拥有高性能的HTML5/JavaScript小部件集合,使您可以利用现代Web开发堆栈(包括React,Angular,ASP.NETCore,jQuery,Knockout等)构建交互式的Web应用程序。从Angular和Reac,到ASP.NETCore或Vue,DevExtreme包含全面的高性能和响应式UI小部件集合,可在传统Web和下一代移动应用程序中......
  • 获取input[type="checkbox"]:checked 所在tr中特定元素
    1.要求如下 2.html源码<divclass="btn"><buttontype="button"onclick="getYuan()">获取</button></div><divclass="forms"><table><tbody>......
  • Query2box Reasoning over Knowledge Graphs in Vector Space using Box Embeddings
    目录概符号说明Query2Box代码RenH.,HuW.andLeskovecJ.Query2box:Reasoningoverknowledgegraphsinvectorspaceusingboxembeddings.ICLR,2020.概Boxembedding用于查询判断,和我想的那个有很大差别啊.我对这方面不是很了解,只能记录个大概.符号说明......