P1541 [NOIP2010 提高组] 乌龟棋

include

include

include

include

using namespace std;
int c[5];
int n,m;
int a[10001];
int x;
int dp[41][41][41][41];
int find(int i,int j,int k,int z){
int ans=0;
if(i!=0){
ans=max(ans,dp[i-1][j][k][z]);
}
if(j!=0){
ans=max(ans,dp[i][j-1][k][z]);
}
if(k!=0){
ans=max(ans,dp[i][j][k-1][z]);
}
if(z!=0){
ans=max(ans,dp[i][j][k][z-1]);
}
return ans;
}
int co(int i,int j,int k,int z){
return i1+j2+k3+z4+1;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i){
scanf("%d",&a[i]);
}
for(int i=1;i<=m;++i){
scanf("%d",&x);
c[x]++;
}
for(int i=0;i<=c[1];++i){
for(int j=0;j<=c[2];++j){
for(int k=0;k<=c[3];++k){
for(int z=0;z<=c[4];++z){
dp[i][j][k][z]=find(i,j,k,z)+a[co(i,j,k,z)];
}
}
}
}
cout<<dp[c[1]][c[2]][c[3]][c[4]];
return 0;
}

posted @ 2021-02-02 11:14  Simex  阅读(102)  评论(0编辑  收藏  举报