# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
770301 | Amylopectin | Copy and Paste 3 (JOI22_copypaste3) | C++14 | 3031 ms | 2568 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <iostream>
#include <stdio.h>
#include <vector>
using namespace std;
const long long mxn = 3e3 + 10;
// const long long mxn = 20;
char s[mxn] = {};
long long c1,c2,c3,u[mxn] = {},rev[mxn] = {},dp[mxn][mxn] = {};
long long re(long long cl,long long cr)
{
if(dp[cl][cr] != 0)
{
return dp[cl][cr];
}
long long i,j,k,o,n = cr - cl + 1,cn,cm,cou,cma = 1,fmi = -1,cmi;
for(i=cl; i<=cr; i++)
{
u[i] = 0;
}
fmi = c1 * n;
for(i=n/2; i>0; i--)
{
cma = 1;
for(j=cl; j<=cl+n - i*2; j++)
{
if(u[j] != i)
{
cou = 0;
cn = j;
rev[j] = j;
for(k=j+1; k<j+i; k++)
{
while(1)
{
if(s[k] == s[cn])
{
rev[k] = cn+1;
cn++;
break;
}
if(cn == j)
{
rev[k] = j;
break;
}
cn = rev[cn-1];
}
}
cn = j;
for(k=j; k<=cr; k++)
{
while(1)
{
if(s[k] == s[cn])
{
cn++;
break;
}
if(cn == j)
{
break;
}
cn = rev[cn-1];
}
if(cn == j+i)
{
u[k-i+1] = i;
cn = rev[cn-1];
}
}
cn = j;
for(k=j; k<=cr; k++)
{
while(1)
{
if(s[k] == s[cn])
{
cn++;
break;
}
if(cn == j)
{
break;
}
cn = rev[cn-1];
}
if(cn == j+i)
{
cou ++;
cn = j;
}
}
// if(fmi == -1)
// {
// fmi = re(j,j+i-1) + c2 + cou * c3 + c1 * (n-cou*i);
// }
// else
// {
cmi = re(j,j+i-1) + c2 + cou * c3 + c1 * (n-cou*i);
if(fmi > cmi)
{
fmi = cmi;
}
// }
// if(cou > cma)
// {
// cma = cou;
// }
}
}
}
dp[cl][cr] = fmi;
return fmi;
}
int main()
{
long long i,j,m,n;
scanf("%lld %s %lld %lld %lld",&n,&s,&c1,&c2,&c3);
re(0,n-1);
printf("%lld",dp[0][n-1]);
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |