# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
587380 |
2022-07-01T18:10:08 Z |
Bench0310 |
Miners (IOI07_miners) |
C++17 |
|
1153 ms |
528 KB |
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int dp[40][40];
int ndp[40][40];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n;
cin >> n;
string opt="XMFB";
vector<string> st;
map<string,int> h;
for(int a=0;a<4;a++)
{
for(int b=0;b<4;b++)
{
for(int c=0;c<4;c++)
{
bool ok=1;
bool nonx=0;
for(int x:{c,b,a})
{
nonx|=(x!=0);
if(x==0) ok&=(!nonx);
}
if(ok)
{
string t=string(1,opt[a])+string(1,opt[b])+string(1,opt[c]);
h[t]=st.size();
st.push_back(t);
}
}
}
}
const int N=40;
vector<int> score(N,0);
for(int i=0;i<N;i++)
{
set<char> tmp;
for(char c:st[i]) if(c!='X') tmp.insert(c);
score[i]=tmp.size();
}
vector<array<int,3>> mv(N,{-1,-1,-1});
for(int i=0;i<N;i++)
{
for(int j=1;j<=3;j++)
{
string tmp=opt[j]+st[i];
tmp.pop_back();
mv[i][j]=h[tmp];
}
}
memset(dp,0b10000000,sizeof(dp));
dp[0][0]=0;
auto chmax=[&](int &a,int b){a=max(a,b);};
string s;
cin >> s;
for(char c:s)
{
memset(ndp,0b10000000,sizeof(ndp));
int t=opt.find(c);
for(int j=0;j<N;j++)
{
for(int k=0;k<N;k++)
{
int nj=mv[j][t];
chmax(ndp[nj][k],dp[j][k]+score[nj]);
int nk=mv[k][t];
chmax(ndp[j][nk],dp[j][k]+score[nk]);
}
}
memcpy(dp,ndp,sizeof(ndp));
}
int res=0;
for(int i=0;i<N;i++) for(int j=0;j<N;j++) chmax(res,dp[i][j]);
cout << res << "\n";
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
212 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
11 ms |
360 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
60 ms |
340 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
135 ms |
340 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
286 ms |
376 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
852 ms |
508 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1153 ms |
528 KB |
Output is correct |