BZOJAC,你谷WA71求助
查看原帖
BZOJAC,你谷WA71求助
362101
_TLEer_的小号楼主2021/2/15 19:54

RT.

#include <bits/stdc++.h>
using namespace std;
int read(){
   int s=0,f=1;
   char ch=getchar();
   while(ch<'0'||ch>'9'){
      if(ch=='-') f=-1;
      ch=getchar();
   }
   while(ch>='0'&&ch<='9'){
      s=s*10+ch-'0';
      ch=getchar();
   }
   return s*f;
}
int t,w,arr[1010],dp[1010/*x*/][3/*y*/][31];//在x时,y棵树下,还剩z次机会
int dfs(int w,int ut,int t){
   if(dp[t][ut][w])return dp[t][ut][w];
   if(t==0)return 0;
   int ans1=0,ans2=0;
   if(w&&arr[t]!=ut)
      ans1=dfs(w-1,3-ut,t-1)+1;
   ans2=dfs(w,ut,t-1)+(ut==arr[t]?1:0);
   return dp[t][ut][w]=max(ans1,ans2);
}
int main(){
   t=read();
   w=read();
   for(int i=1;i<=t;i++)arr[i]=read();
   cout<<dfs(w,1,t)<<endl;
   return 0;
}
2021/2/15 19:54
加载中...