Problem B : Ball Game
Description
There are 4 types of balls (A, B, C and D) and a huge box. The balls of the same type have the same weight.
Lily likes to play a game. She puts theses balls into the box one by one. Suppose she has already put some balls into the box and their total weight is w. When she continues putting a new ball into the box, she will receive a bonus score, denoted as c. The value of c equals to the product of the weight of the new ball and the last digit of w. Note that when the box is empty, the value of w is 0.
Now give you the number of each type of balls and their weights, can you tell Lily the maximum score she can get in total?
Input
There are several test cases. Each test case has one line containing 8 numbers.
Each of the first 4 numbers, A, B, C and D (0 ≤ A, B, C, D ≤ 30), indicates the number of the respective type of balls.
Each of the next 4 numbers, a, b, c and d (1 ≤ a, b, c, d ≤ 100,000), indicates the weight of the respective type of balls.
Output
For each test case, print one line with the maximum total score Lily can get.
Sample Input
1 1 1 1 2 3 4 5 3 6 8 8 25 66 18 12
Sample Output
71 5213
Author: Alez
四维dp。。。
#include <bits/stdc++.h>
#define LL long long
using namespace std;
int dp[50][50][50][50];
int wA,wB,wC,wD;
int fun(int a,int b,int c,int d)
{
return a*wA+b*wB+c*wC+d*wD;
}
int main()
{
int cntA,cntB,cntC,cntD;
while(cin>>cntA>>cntB>>cntC>>cntD)
{
memset(dp,0,sizeof(dp));
cin>>wA>>wB>>wC>>wD;
for(int i=0;i<=cntA;i++)
{
for(int j=0;j<=cntB;j++)
{
for(int k=0;k<=cntC;k++)
{
for(int l=0;l<=cntD;l++)
{
if(i>0)
dp[i][j][k][l]=max(dp[i-1][j][k][l]+((fun(i-1,j,k,l))%10)*wA,dp[i][j][k][l]);
if(j>0)
dp[i][j][k][l]=max(dp[i][j-1][k][l]+((fun(i,j-1,k,l))%10)*wB,dp[i][j][k][l]);
if(k>0)
dp[i][j][k][l]=max(dp[i][j][k-1][l]+((fun(i,j,k-1,l))%10)*wC,dp[i][j][k][l]);
if(l>0)
dp[i][j][k][l]=max(dp[i][j][k][l-1]+((fun(i,j,k,l-1))%10)*wD,dp[i][j][k][l]);
}
}
}
}
cout<<dp[cntA][cntB][cntC][cntD]<<endl;
}
return 0;
}
本文介绍了一种通过放置不同类型的球来获得最大总分数的游戏算法。利用四维动态规划方法,详细阐述了如何计算每一步操作的最佳得分策略,旨在帮助玩家理解如何最大化得分。
494

被折叠的 条评论
为什么被折叠?



