HUD 5074 Hatsune Miku



Hatsune Miku

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)
Total Submission(s): 1499    Accepted Submission(s): 1019


Problem Description
Hatsune Miku is a popular virtual singer. It is very popular in both Japan and China. Basically it is a computer software that allows you to compose a song on your own using the vocal package.

Today you want to compose a song, which is just a sequence of notes. There are only m different notes provided in the package. And you want to make a song with n notes.


Also, you know that there is a system to evaluate the beautifulness of a song. For each two consecutive notes a and b, if b comes after a, then the beautifulness for these two notes is evaluated as score(a, b).

So the total beautifulness for a song consisting of notes a1, a2, . . . , an, is simply the sum of score(ai, ai+1) for 1 ≤ i ≤ n - 1.

Now, you find that at some positions, the notes have to be some specific ones, but at other positions you can decide what notes to use. You want to maximize your song’s beautifulness. What is the maximum beautifulness you can achieve?
 

Input
The first line contains an integer T (T ≤ 10), denoting the number of the test cases.

For each test case, the first line contains two integers n(1 ≤ n ≤ 100) and m(1 ≤ m ≤ 50) as mentioned above. Then m lines follow, each of them consisting of m space-separated integers, the j-th integer in the i-th line for score(i, j)( 0 ≤ score(i, j) ≤ 100). The next line contains n integers, a1, a2, . . . , an (-1 ≤ ai ≤ m, ai ≠ 0), where positive integers stand for the notes you cannot change, while negative integers are what you can replace with arbitrary notes. The notes are named from 1 to m.
 

Output
For each test case, output the answer in one line.
 

Sample Input
  
  
2 5 3 83 86 77 15 93 35 86 92 49 3 3 3 1 2 10 5 36 11 68 67 29 82 30 62 23 67 35 29 2 22 58 69 67 93 56 11 42 29 73 21 19 -1 -1 5 -1 4 -1 -1 -1 4 -1
 

Sample Output
  
  
270 625
 

Source


题意:给出n和m,给你m*m的矩阵表示i-j的贡献,给出一个长度为n的乐谱,其中-1表示该位置可填任意值,问最大的贡献为多少。

题解:dp[I][j]表示当前位置为i,乐符为j的总贡献。然后如果当前位确定,直接转移,否则,枚举所有可能,转移。

代码:

#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string.h>
#include <queue>
#include <math.h>
#include <map>
#include <set>
#define ll long long
int dis[60][60];
int dp[110][60];
int a[110];
int max(int a,int b)
{
    if(a>=b)
        return a;
    else return b;
}
int main()
{
    int t,n,m;
    scanf("%d",&t);
    while(t--)
    {
        memset(dp,-1,sizeof(dp));
        scanf("%d%d",&n,&m);
        for(int i=1; i<=m; i++)
        {
            for(int j=1; j<=m; j++)
            {
                scanf("%d",&dis[i][j]);
            }
        }
        for(int i=1; i<=n; i++)
            scanf("%d",&a[i]);
        if(a[1]!=-1)
            dp[1][a[1]]=0;
        else
        {
            for(int i=1; i<=m; i++)
                dp[1][i]=0;
        }
        for(int i=2; i<=n; i++)
        {
            for(int j=1; j<=m; j++)
            {
                if(dp[i-1][j]!=-1)
                {
                    if(a[i]!=-1)
                    {
                        dp[i][a[i]]=max(dp[i][a[i]],dp[i-1][j]+dis[j][a[i]]);
                    }
                    else
                    {
                        for(int k=1; k<=m; k++)
                        {
                        dp[i][k]=max(dp[i][k],dp[i-1][j]+dis[j][k]);

                        }
                    }
                }
            }
        }
        int ans=0;
        for(int i=1; i<=m; i++)
            ans=max(ans,dp[n][i]);
        printf("%d\n",ans);
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MikuMikuDance是一款日本制作的3D舞蹈动画软件,由日本公司P社开发,首次发布于2007年。该软件的主要特点是可以通过自定义的3D模型来创建、编辑和演示舞蹈动画。用户可以自由选择模型、舞蹈动作、场景和相机角度等来制作自己的舞蹈视频。 MikuMikuDance在日本非常受欢迎,尤其是在虚拟偶像Hatsune Miku出现后,更是迅速走红。Hatsune Miku是由Crypton Future Media开发的一位虚拟偶像,她的形象和声线深受粉丝喜爱。许多用户使用MikuMikuDance软件来制作Hatsune Miku的舞蹈视频,这一现象也带动了软件的普及和发展。 MikuMikuDance的739天知道汉化版,是由国内各个MMD社区的爱好者自发进行的汉化工作。这个版本的诞生,使得更多的中国用户可以更方便地使用和享受MikuMikuDance软件。739天知道汉化版的出现,不仅大大降低了中国用户学习和操作软件的门槛,同时也为中国MMD社区的发展做出了积极的贡献。 通过MikuMikuDance 739天知道汉化版,中国用户可以制作各种类型的舞蹈动画,表达自己的创意和想法。同时,用户也可以通过分享自己的作品,与其他MMD爱好者进行交流和互动。这个汉化版的出现,丰富了中国MMD爱好者的创作空间,促进了MMD文化在中国的传播和推广。 总的来说,MikuMikuDance 739天知道汉化版的问世,为中国用户提供了更好的软件使用体验,也推动了中国MMD社区的发展。希望在未来,越来越多的中国用户能够通过这款软件来创作出更多优秀的舞蹈动画作品。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值