题目链接:

pid=5074">http://acm.hdu.edu.cn/showproblem.php?pid=5074

题意:

给定一个m*m的矩阵mp。然后给定一个长度为n的序列

sum= mp[a[1]][a[2]]+......+mp[a[n-1]][a[n]];

假设a[i]小于0的话则a[i]能够为1~m之间的随意一个数,求sum的最大值

我们能够枚举第i个位置

然后dp[i][j]=max(dp[i][j],dp[i-1][k]+mp[k][j]) 表示第i个位置在j的最大值;

然后分两种情况

假设a[i]是一个确定的数的话 dp[i][a[i]]=max( dp[i][a[i]],dp[i-1][j]+mp[j][a[i]] )

假设不确定的话 就仅仅能枚举a[i]了 dp[i][k]=max(dp[i][k],dp[i-1][j]+mp[j][k]);

这两种情况都是建立在前一个位置已经确定了值的情况下;

代码例如以下:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std; const int maxn = 55;
int mp[maxn][maxn];
int dp[maxn*2][maxn],a[maxn*2]; int main()
{
int t,n,m;
scanf("%d",&t);
while(t--){
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++){
for(int j=1;j<=m;j++)
scanf("%d",&mp[i][j]);
}
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
memset(dp,-1,sizeof(dp));
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]+mp[j][a[i]]);
else{
for(int k=1;k<=m;k++)
dp[i][k]=max(dp[i][k],dp[i-1][j]+mp[j][k]);
}
}
}
}
/***************
cout<<" debug "<<endl;
for(int i=1;i<=n;i++){
for(int j=0;j<=m;j++)
cout<<dp[i][j]<<" ";
cout<<endl;
}
cout<<"***********"<<endl;
**************/
int maxn = -1000;
for(int i=1;i<=m;i++)
maxn=max(dp[n][i],maxn);
printf("%d\n",maxn);
}
return 0;
}

ACM/ICPC2014鞍山现场赛E hdu5074Hatsune Miku的更多相关文章

  1. ACM/ICPM2014鞍山现场赛D Galaxy (HDU 5073)

    题目链接:pid=5073">http://acm.hdu.edu.cn/showproblem.php?pid=5073 题意:给定一条线上的点,然后能够去掉当中的m个,使剩下的到重 ...

  2. 2014 acm鞍山现场赛总结

    好像大家都习惯打完比赛写总结,我也来水一发好了.. 记一下流水账,那么多第一次献给了acm,不记一下就白去那么远的地方了.. 首先比赛前网上买了机票跟火车票了.比赛前一天早上6点钟起来收拾东西6点半坐 ...

  3. hdu 5078 2014鞍山现场赛 水题

    http://acm.hdu.edu.cn/showproblem.php?pid=5078 现场最水的一道题 连排序都不用,由于说了ti<ti+1 //#pragma comment(link ...

  4. hdu 5071(2014鞍山现场赛B题,大模拟)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5071 思路:模拟题,没啥可说的,移动的时候需要注意top的变化. #include <iostr ...

  5. 2013 ACM/ICPC 长沙现场赛 A题 - Alice's Print Service (ZOJ 3726)

    Alice's Print Service Time Limit: 2 Seconds      Memory Limit: 65536 KB Alice is providing print ser ...

  6. 2013 ACM/ICPC 长沙现场赛 C题 - Collision (ZOJ 3728)

    Collision Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge There's a round medal ...

  7. 2014鞍山现场赛C题HDU5072(素筛+容斥原理)

    Coprime Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total ...

  8. hdu 4432 第37届ACM/ICPC天津现场赛B题

    题目大意就是找出n的约数,然后把约数在m进制下展开,各个数位的每一位平方求和,然后按m进制输出. 模拟即可 #include<cstdio> #include<iostream> ...

  9. hdu 5078(2014鞍山现场赛 I题)

    数据 表示每次到达某个位置的坐标和时间 计算出每对相邻点之间转移的速度(两点间距离距离/相隔时间) 输出最大值 Sample Input252 1 9//t x y3 7 25 9 06 6 37 6 ...

随机推荐

  1. css 优先级

    css优先级的四大原则: 原则一: 继承不如指定 如果某样式是继承来的永远不如具体指定的优先级高.例子1:CODE:<style type="text/css"> &l ...

  2. #include <boost/function.hpp>

    为atoi取别名fun,fun实质上是函数指针 #include <iostream> #include <boost/function.hpp> void main() { ...

  3. 网站服务管理系统wdcp简介及功能特性

    WDCP是WDlinux Control Panel的简称,是一套用PHP开发的Linux服务器管理系统以及虚拟主机管理系统,,旨在易于使用Linux系统做为我们的网站服务器,以及平时对Linux服务 ...

  4. andengine游戏引擎总结基础篇

      其他的游戏引擎知道的不是很对,不过相对于学java的童鞋们来说,那是个不错的选择啦,这个发动机咋样,google去吧.基础篇包括图片,字体,音效,数据读取,会了这点,就会做简单的小游戏啦 对于游戏 ...

  5. .Net资源文件全球化

    I:本博文代码示例效果图 好久没来写随笔了.不多说先上大饼!  跟着直接上 [代码下载地址] II:ASP.NET 资源文件介绍 在ASP.NET特殊文件夹内有那么两个不太引人注意,他们分别是App_ ...

  6. C#文件读写操作

    方法1:使用FileStream读写文件 using System;using System.Collections.Generic;using System.Text;using System.IO ...

  7. UINavigationController和UITabBarController合用

    一.创建一个 Tabbed Application.默认创建的是带有两个Tab的工程. 二.在AppDelegate.h里面添加 @property (strong, nonatomic) UINav ...

  8. xcode中控件共有属性

    Text,title 控件上的文字 backgroung 背景图片或颜色 alignment 布局(居中,..) mode显示模式(缩放,拉伸..) drawing 隐藏控件的可见性 alpha 透明 ...

  9. android上传json与服务器交互

    http://www.2cto.com/kf/201403/289328.html http://www.tuicool.com/articles/FZJR3eB

  10. c语言字符串翻转系列

    2013-10-25 最近碰到一道笔试题,是关于字符串翻转的.题目是:将一段英文翻转,但保留单词拼写,如给定字符串str="I am a student",返回为"stu ...