cspst2 区间dp 求优化到n^2
  • 板块学术版
  • 楼主spaceholder
  • 当前回复3
  • 已保存回复4
  • 发布时间2023/10/25 17:26
  • 上次更新2023/11/2 11:27:16
查看原帖
cspst2 区间dp 求优化到n^2
480416
spaceholder楼主2023/10/25 17:26
#include<bits/stdc++.h> //exp:30score
#define int long long
using namespace std;
char a[8011];
int n,ans;
int dp[8011][8011];
signed main()
{
//	freopen("game.in","r",stdin);
//	freopen("game.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;++i) 
	{
		cin>>a[i];
		if(a[i]==a[i-1]) dp[i-1][i]=1,ans++;
	}
	for(int l=3;l<=n;++l)
	{
		for(int i=1;i+l-1<=n;++i)
		{
			int j=i+l-1;
			bool flag=0;
			for(int k=i;k<j;++k)
			{
				if(dp[i][k]&&!dp[k+1][j]||!dp[i][k]&&dp[k+1][j]) break; 
				if(dp[i][k]&&dp[k+1][j])
				{
					ans++;
					dp[i][j]=1;
					flag=1;
					break;
				} 
			}
			if(!flag&&a[i]==a[j]&&dp[i+1][j-1]) dp[i][j]=1,ans++; 
		}
	}
	cout<<ans;
	return 0;
}

2023/10/25 17:26
加载中...