Submission #216104

#TimeUsernameProblemLanguageResultExecution timeMemory
216104anmichiMiners (IOI07_miners)C++17
76 / 100
1588 ms101112 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define P pair<int,int> #define fi first #define se second #define rep(i,n) for(int i=0;i<n;i++) #define all(v) v.begin(),v.end() #define pb push_back template<class T>void chmax(T &a,T b){if(a<b)a=b;} template<class T>void chmin(T &a,T b){if(a>b)a=b;} constexpr int INF=1000000000; constexpr int mod=1000000007; int dx[]={0,1,0,-1},dy[]={1,0,-1,0}; int kaijo[2000010]; int gcd(int a,int b){ if(b==0)return a; return gcd(b,a%b); } int lcm(int a,int b){ return a/gcd(a,b)*b; } bool prime(int a){ if(a==1)return false; for(int i=2;i*i<=a;i++){ if(a%i==0)return false; } return true; } void init_fact(){ kaijo[0]=1; for(int i=1;i<=2000000;i++){ kaijo[i]=kaijo[i-1]*i; kaijo[i]%=mod; } } int modpow(int a,int b){ if(b==0)return 1; if(b%2)return modpow(a,b-1)*a%mod; int memo=modpow(a,b/2); return memo*memo%mod; } int comb(int a,int b){ if(!kaijo[0])init_fact(); return kaijo[a]*modpow(kaijo[a-b],mod-2)%mod*modpow(kaijo[b],mod-2)%mod; } int inv(int x){ x=modpow(x,mod-2); return x; } bool kosa(double ax,double ay,double bx,double by,double cx,double cy,double dx,double dy){ double ta=(cx-dx)*(ay-cy)+(cy-dy)*(cx-ax); double tb=(cx-dx)*(by-cy)+(cy-dy)*(cx-bx); double tc=(ax-bx)*(cy-ay)+(ay-by)*(ax-cx); double td=(ax-bx)*(dy-ay)+(ay-by)*(ax-dx); return tc*td<0&&ta*tb<0; } int n,a[100010]; string s; int dp[100010][4][4][4][4]; signed main(){ cin>>n>>s; rep(i,n+1){ rep(c,4){ rep(d,4){ rep(e,4){ rep(f,4){ dp[i][c][d][e][f]=-INF; } } } } } dp[0][3][3][3][3]=0; rep(i,n){ if(s[i]=='M')a[i]=0; if(s[i]=='F')a[i]=1; if(s[i]=='B')a[i]=2; } rep(i,n){ rep(c,4){ rep(d,4){ rep(e,4){ rep(f,4){ set<int>x,y; x.insert(c); x.insert(d); x.insert(a[i]); x.erase(3); y.insert(e); y.insert(f); y.insert(a[i]); y.erase(3); chmax(dp[i+1][a[i]][c][e][f],dp[i][c][d][e][f]+(int)x.size()); chmax(dp[i+1][c][d][a[i]][e],dp[i][c][d][e][f]+(int)y.size()); } } } } } int ans=0; rep(c,3){ rep(d,3){ rep(e,3){ rep(f,3){ chmax(ans,dp[n][c][d][e][f]); } } } } cout<<ans<<endl; return 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...