玄关关于本地与洛谷运行环境区别
查看原帖
玄关关于本地与洛谷运行环境区别
1076971
anke2017楼主2025/7/22 20:14

我写了这样一份代码:

#include<bits/stdc++.h>

using namespace std;
constexpr int maxn=100010;
constexpr int maxa=1e9;
struct tree2
{
	int val[maxn<<5];
	int ls[maxn<<5];
	int rs[maxn<<5];
	int roots[maxn<<5];
	int cnt=0,now=0;
	__inline void clone(int &node)
	{
		val[++cnt]=val[node];
		ls[cnt]=ls[node];
		rs[cnt]=rs[node];
		node=cnt;
	}
	__inline void insert(int &now,int l,int r,int pos)
	{
		clone(now);
		val[now]+=pos;
		if(l==r)return;
		int mid=(l+r)>>1;
		if(pos<=mid)
			insert(ls[now],l,mid,pos);
		else 
			insert(rs[now],mid+1,r,pos);
	}
	__inline int query(int r1,int r2,int l,int r,int ql,int qr)
	{
		if(val[r2]-val[r1]==0)
			return 0;
		if(ql<=l&&r<=qr)
			return val[r2]-val[r1];
		if(qr<l||r<ql)
			return 0;
		int mid=(l+r)>>1;
		return query(ls[r1],ls[r2],l,mid,ql,qr)+query(rs[r1],rs[r2],mid+1,r,ql,qr);
	}
	__inline int insert(int val)
	{
		now++;
		roots[now]=roots[now-1];
		insert(roots[now],1,maxa,val);
	}
	__inline int query(int l,int r,int ql,int qr)
	{
		return query(roots[l-1],roots[r],1,maxa,ql,qr);
	}
}tr;
int main()
{
	ios::sync_with_stdio(false);cin.tie(0);
	int n,m;cin>>n;
	for(int i=1;i<=n;i++)
	{
		int t;cin>>t;
		tr.insert(t);
	}
//在线时没有跳出这个循环
	cin>>m;
	for(int i=1;i<=m;i++)
	{
		int l,r;cin>>l>>r;
		if(!tr.query(l,r,1,1)){cout<<"0\n";continue;}
		int now=tr.query(l,r,1,1),lst=1;
		while(1)
		{
			int t=tr.query(l,r,lst+1,now+1);
			if(!t)break;
			else lst=now+1,now+=t;
		}
		cout<<now+1<<'\n';
	}
	return 0;
}

它在本地运行样例一切正常,答案也是对的。

但是到了 IDE,样例就会 TLE,而且提交后也会全部 TLE。求大佬解释一下。

2025/7/22 20:14
加载中...