[P10264] 建议加强数据 / Hack
查看原帖
[P10264] 建议加强数据 / Hack
759412
Gu_zhiyuan楼主2024/6/1 17:18

本题在GESP官方题解上的代码能被以下数据卡掉:

IN:

1
6
1 5 4 3 6 3
1
1 6

out

3

官方代码输出:

6

官方代码如下:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=1e5+10;
int a[N];
int nxt[N][30],pos[20];
int main(){
	int t;
	cin>>t;
	while(t--){
		int n;
		cin>>n;
		memset(pos,0,sizeof pos);
		for(int i=1;i<=n;i++){
			cin>>a[i];
			for(int j=0;j<=20;j++)nxt[i][j]=n+1;
		}
		for(int i=n;i>=1;i--){
			if(!pos[a[i]]){
				nxt[a[i]][0]=n+1;
				pos[a[i]]=i;
			}else{
				nxt[i][0]=pos[a[i]];
				pos[a[i]]=i;
			}
		}
		for(int i=n;i>=1;i--){
			for(int j=1;j<=20;j++){
				if(nxt[i][j-1]+1<=n)
					nxt[i][j]=nxt[nxt[i][j-1]+1][j-1];
				}
		}
		int q;
		cin>>q;
		while(q--){
			int l,r;
			cin>>l>>r;
			int ii=l;
			int ans=0;
			while(ii<=r){
				while(ii<=r&&nxt[ii][0]>r){
					ii++;
					ans++;
				}
				if(ii>r)break;
				for(int j=20;j>=0;j--){
					if(nxt[ii][j]<=r){
						ii=nxt[ii][j];
						break;
					}
				}
				ii++;
			}
			cout<<ans<<"\n";
		}
	}
}

建议加强数据。


如果是我对题意理解有误,请dalao解释一下。

2024/6/1 17:18
加载中...