求条
  • 板块学术版
  • 楼主封禁用户
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/2/26 16:45
  • 上次更新2024/2/26 20:09:40
查看原帖
求条
982155
封禁用户楼主2024/2/26 16:45

91 pts : WA on #10

code:

#include<bits/stdc++.h>
#define int long long
#define INF 1e18
using namespace std;
int n,k,a[505],f[505][505][505];
int dfs(int l,int r,int t)
{
	if(l>r) return 0;
	if(f[l][r][t]!=-1) return f[l][r][t];
	int ans=INF;
	f[l][r][t]=INF;
	if(t<k-1) ans=min(ans,dfs(l,r,t+1)+1);
	else if(t==k-1) ans=dfs(l+1,r,0);
	for(int i=l+1;i<=r;i++) if(a[l]==a[i]) ans=min(ans,dfs(l+1,i-1,0)+dfs(i,r,min(k-1,t+1)));
	return f[l][r][t]=ans;
}
signed main()
{
	scanf("%d",&n);
	k=3;
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    memset(f,-1,sizeof(f));
	dfs(1,n,0);
	printf("%d\n",f[1][n][0]);
	return 0;
}
2024/2/26 16:45
加载中...