记搜WA on test 2
查看原帖
记搜WA on test 2
661913
liwenxi1145144444楼主2024/11/19 12:06
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,n,a[100005],dp[100005];
bool ans[100005];
inline int init(){
	for(int i=1;i<=n/2;i++){
		if(ans[i]){
			swap(a[i],a[n-i+1]);
		}
	}
	int sum=0;
	for(int i=2;i<=n;i++){
		if(a[i]==a[i-1]){
			sum++;
		}
	}
	for(int i=1;i<=n/2;i++){
		if(ans[i]){
			swap(a[i],a[n-i+1]);
		}
	}
	return sum;
}
inline int dfs(int x){
	if(x==n/2+1){
		return init();
	}
	if(dp[x]!=-1){
		return dp[x];
	}
	dp[x]=dfs(x+1);
	ans[x]=1;
	dp[x]=min(dp[x],dfs(x+1));
	ans[x]=0;
	return dp[x];
}
signed main(){
	cin>>t;
	while(t--){
		cin>>n;
		memset(dp,-1,sizeof(dp));
		memset(ans,0,sizeof(ans));
		for(int i=1;i<=n;i++){
			cin>>a[i];
		}
		cout<<dfs(1)<<"\n";
	}
	return 0;
}

2024/11/19 12:06
加载中...