제출 #863258

#제출 시각아이디문제언어결과실행 시간메모리
863258HuyQuang_re_ZeroMiners (IOI07_miners)C++14
100 / 100
120 ms110680 KiB
#include <bits/stdc++.h>
#define ll long long
#define db long double
#define N 100005
#define II pair <ll,ll>
#define III pair <ll,II>
#define IV pair <vector <int>,vector <int> >
#define fst first
#define snd second
#define BIT(x,i) ((x>>i)&1)
#define pi acos(-1)
#define to_radian(x) (x*pi/180.0)
#define to_degree(x) (x*180.0/pi)
#define rand(l,r) (l+rng()%(r-l+1))
using namespace std;
int f[N][4][4][4][4],a[N],i,j,k,n,c[4][4][4];
string s;
int cal(int i,int k1,int k2,int h1,int h2)
{
    if(i>n) return 0;
    if(f[i][k1][k2][h1][h2]>-1) return f[i][k1][k2][h1][h2];
    int res=0;
    res=max(res,cal(i+1,k2,a[i],h1,h2)+c[k1][k2][a[i]]);
    res=max(res,cal(i+1,k1,k2,h2,a[i])+c[h1][h2][a[i]]);
    return f[i][k1][k2][h1][h2]=res;
}
int main()
{
  //  freopen("miners.inp","r",stdin);
  //  freopen("miners.out","w",stdout);
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);
    cin>>n>>s; s=" "+s;
    for(i=1;i<=n;i++)
    {
        if(s[i]=='M') a[i]=1;
        if(s[i]=='F') a[i]=2;
        if(s[i]=='B') a[i]=3;
    }
    for(i=0;i<=3;i++)
        for(j=0;j<=3;j++)
            for(k=0;k<=3;k++)
            {
                set <int> s;
                if(i>0) s.insert(i);
                if(j>0) s.insert(j);
                if(k>0) s.insert(k);
                c[i][j][k]=s.size();
            }
    memset(f,-1,sizeof(f));
    cout<<cal(1,0,0,0,0);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...