T1 小田的消消乐游戏

总结

部分拿分,4040' ,我当时的思路是从后往前遍历数组,找到能删除最多数的方案,但是这样可能拆散正确答案中的删除组合,所以没有实现,拿了部分分。

错误:没有考虑整体的正解,而是只关注了每一次操作时删除的数的数量,也就是说我从一开始就在想拿部分分的解法,用局部最优的思考方式来思考全局最优。

题解

典型的分情况讨论:

  • 数组头尾一样 直接输出 1
  • 数组头尾不一样
    • 遍历数组,找到了符合下面条件的 ii ,输出 2
    • 没找到,输出 -1 。 条件:a[1]=a[i],a[i+1]=a[n]a[1]=a[i] ,a[i+1]=a[n]
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=5e5+5;
int n,x[N];

signed main(){
	freopen("num.in","r",stdin);
	freopen("num.out","w",stdout);
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n;
	for(int i=1;i<=n;i++) cin>>x[i];
	if(x[1]==x[n] and n>1){
		cout<<1;
		return 0;
	} 
	else {
		for(int i=2;i<n-1;i++){
			if(x[i]==x[1] and x[i+1]==x[n]){
				cout<<2;
				return 0;
			}
		}
	}
	cout<<-1;
	return 0;
}

未完