TLE 57分
查看原帖
TLE 57分
1279212
yym111楼主2025/7/30 17:16
#include<bits/stdc++.h>
using namespace std;
int n,w,a[1005],dp[1005][3][35];
int dfs(int x,int y,int z){
	if(x>n){
		return 0;
	}
	if(dp[x][y][z]!=-1){
		return dp[x][y][z];
	}
	int ans1=0,ans2=0;
	if(z<w&&a[x]!=y){
		ans1=dfs(x+1,-1*y+3,z+1)+1;
	}
	if(y==a[x]){
		ans2=dfs(x+1,y,z)+1;
	}else{
		ans2=dfs(x+1,y,z);
	}
	return max(ans1,ans2);
}
int main(){
	cin>>n>>w;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	memset(dp,-1,sizeof(dp));
	cout<<dfs(1,1,0);
}

难难难难难难难难难难难

2025/7/30 17:16
加载中...