关于报错信息
  • 板块灌水区
  • 楼主Butterfly__qwq
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/4/27 11:19
  • 上次更新2024/4/27 13:48:28
查看原帖
关于报错信息
529038
Butterfly__qwq楼主2024/4/27 11:19

rt,今天写代码的时候有一条这样的报错信息:

Error:value of (某16进制码) is too big for field of 4 bytes at (某16进制码)

编译能运行,但是不让输入就结束了,bdfs无果

然后更离谱的是他的报错文件是一个很奇怪的文件:ccKSKlnX.s

这是我的代码,帮看一下为什么会报错:

/*
Author:Butterfly
Start Coding:2024/4/27 10:17
Finish Coding:
Finish Debugging:
*/ 
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=500005,Q=100005,L=20;
int n,q;
struct KDTree
{
	struct KDNode
	{
		int x[2],sum,lc,rc,mn[2],mx[2];
		#define x(i,j) kdt[i].x[j]
		#define mn(i,j) kdt[i].mn[j]
		#define mx(i,j) kdt[i].mx[j]
		#define sum(i) kdt[i].sum
		#define lc(i) kdt[i].lc
		#define rc(i) kdt[i].rc
	}kdt[N];
	int cnt,n,rec[N],rt[L];
	void del(int &u)
	{
		if(!u)return;
		rec[++cnt]=u;
		del(lc(u));
		del(rc(u));
		u=0;
	}
	void pushup(int u)
	{
		sum(u)=sum(lc(u))+sum(rc(u))+1;
		for(int i:{0,1})
		{
			mn(u,i)=mx(u,i)=x(u,i);
			if(lc(u))
			{
				mn(u,i)=min(mn(u,i),mn(lc(u),i));
				mx(u,i)=max(mx(u,i),mx(lc(u),i));
			}
			if(rc(u))
			{
				mn(u,i)=min(mn(u,i),mn(rc(u),i));
				mx(u,i)=max(mx(u,i),mx(rc(u),i));
			}
		}
	}
	int build(int l,int r,int d)
	{
		int mid=l+r>>1;
		nth_element(rec+l,rec+mid,rec+r+1,[d,this](int a,int b){return x(a,d)<x(b,d);});
		int rt=rec[mid];
		if(l<mid)lc(rt)=build(l,mid-1,d^1);
		if(r>mid)rc(rt)=build(mid+1,r,d^1);
		pushup(rt);
		return rt;
	}
	void update(int x[])
	{
		n++;
		for(int i:{0,1,2})x(n,i)=x[i];
		rec[cnt=1]=n;
		for(int i=0;;i++)
		{
			if(rt[i])del(rt[i]);
			else
			{
				rt[i]=build(1,cnt,0);
				break;
			}
		}
	}
	int query(int u,int l[],int r[])
	{
		if(!u)return 0;
		int f=1;
		for(int i:{0,1,2})f&=(l[i]<=mn(u,i)&&mx(u,i)<=r[i]);
		if(f)return sum(u);
		for(int i:{0,1,2})if(mx(u,i)<l[i]||mn(u,i)>r[i])return 0;
		f=1;
		for(int i:{0,1,2})f&=(l[i]<=x(u,i)&&x(u,i)<=r[i]);
		return query(lc(u),l,r)+query(rc(u),l,r)+f;
	}
};
struct SegNode
{
	int lc,rc;
	KDTree dat;
	#define l(i) sg[i].lc
	#define r(i) sg[i].rc
}sg[Q<<5];
struct SegTree
{
	int n,q[2];
	void update(int &u,int l,int r,int x,int y,int p)
	{
		if(!u)u=++n;
		q[0]=x;q[1]=y;
		sg[u].dat.update(q);
		if(l==r)return;
		int mid=l+r>>1;
		if(p<=mid)update(l(u),l,mid,x,y,p);
		else update(r(u),mid+1,r,x,y,p);
	}
	int query(int &u,int l,int r,int L[],int R[],int k)
	{
		if(l==r)return l;
		if(!u)u=++n;
		int res=0;
		if(r(u))res=sg[u].dat.query(u,L,R);
		int mid=l+r>>1;
		if(res<k)return query(l(u),l,mid,L,R,k-res);
		return query(r(u),mid+1,r,L,R,k);
	}
}T;
signed main()
{
	cin>>n>>q;
	for(int i=1,op,rt,a,b,c,d,e,q1[2],q2[2];i<=n;i++)
	{
		cin>>op>>a>>b>>c;
		rt=1;
		if(op==1)T.update(rt,1,n,a,b,c);
		else
		{
			cin>>d>>e;
			q1[0]=a;q1[1]=b;q2[0]=c;q2[1]=d;
			cout<<T.query(rt,1,n,q1,q2,e)<<'\n';
		}
	}
}
2024/4/27 11:19
加载中...