求大佬解答为什么我wa最后40分
查看原帖
求大佬解答为什么我wa最后40分
144813
无心揽青丝楼主2023/8/4 17:30

应该是处理判断是否为子序列那里出了问题

#include<bits/stdc++.h>
#define int long long 
using namespace std;
int t,a[200005];
signed main(){
	cin >> t;
	while(t--){
		int n;
		cin >> n;
		for(register int i = 1;i <= n;i ++ )cin >> a[i];
		int tot = 0;
		if(n % 2 == 0){
			int mid = n / 2;
			for(register int i = 1;i <= mid;i ++ ){
				if(a[i] != a[i + mid]){
					tot = 1;
					break;
				}
			}
			if(tot == 1)cout << "YES" << endl;
			else cout << "NO" << endl; 
		}
		else {
			int mid = n / 2;
			int r = mid + 1;
			int ans1 = 0,ans2 = 0;
		    for(register int i = 1;i <= mid;i ++){
		    	while(a[r] != a[i]){
		    		r ++;
		    		if(r > n){
		    		ans1 = 1;
		    		break;
				}
				}
				if(r > n)break;
				r ++ ;
			}
			r = 1;
			 for(register int i = mid + 2;i <= n;i ++){
		    	while(a[r] != a[i]){
		    		r ++;
		    		if(r > mid + 1){
		    		ans2 = 1;
		    		break;
				}
				}
				if(r > mid + 1)break;
				r ++ ;
			}
			if(ans1 == 1 || ans2 == 1)cout << "YES\n";
			else cout << "NO\n";
		}
	}
	return 0;
}
2023/8/4 17:30
加载中...