社区讨论
求条
学术版参与者 5已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lt2p2lv5
- 此快照首次捕获于
- 2024/02/26 16:46 2 年前
- 此快照最后确认于
- 2024/02/26 20:09 2 年前
91 pts : WA on #10
code:
CPP#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;
}
回复
共 4 条回复,欢迎继续交流。
正在加载回复...