hdu 5074 相邻的和最大dp
http://acm.hdu.edu.cn/showproblem.php?pid=5074
给定一个序列 有些位数未知,给你全部两个数连续所得到的能量。问你怎么安排数字使得总能量最大
二维dp,dp[i][j]表示第i位放音符j
分类讨论就可以
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <queue>
#include <stack>
#include <iostream>
#include <algorithm>
using namespace std;
#define RD(x) scanf("%d",&x)
#define RD2(x,y) scanf("%d%d",&x,&y)
#define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define clr0(x) memset(x,0,sizeof(x))
typedef long long LL;
const int maxn = 105;
int n,m,s[maxn][maxn],p[maxn];
int dp[maxn][maxn];//i位。此位j
int main() {
int _;RD(_);while(_--){
RD2(n,m);
for(int i = 1;i <= m;++i)
for(int j = 1;j <= m;++j){
RD(s[i][j]);
}
for(int i = 1;i <= n;++i)
RD(p[i]);
clr0(dp);
for(int i = 1;i < n;++i){
if(p[i] > 0){
if(p[i+1] > 0)
dp[i+1][p[i+1]] = dp[i][p[i]] + s[p[i]][p[i+1]];
else
for(int j = 1;j <= m;++j)
dp[i+1][j] = max(dp[i+1][j],dp[i][p[i]] + s[p[i]][j]);
}
else{
if(p[i+1] > 0)
for(int j = 1;j <= m;++j)
dp[i+1][p[i+1]] = max(dp[i+1][p[i+1]],dp[i][j] + s[j][p[i+1]]);
else
for(int j = 1;j <= m;++j)
for(int k = 1;k <= m;++k)
dp[i+1][j] = max(dp[i+1][j],dp[i][k] + s[k][j]);
}
}
int ans = 0;
for(int i = 1;i <= m;++i)
ans = max(ans,dp[n][i]);
printf("%d\n",ans);
} return 0;
}
版权声明:本文博主原创文章。博客,未经同意不得转载。
hdu 5074 相邻的和最大dp的更多相关文章
- hdu 5074 相邻数和最大dp
http://acm.hdu.edu.cn/showproblem.php?pid=5074 给定一个序列 有些位数未知,给你所有两个数连续所得到的能量,问你怎么安排数字使得总能量最大 二维dp,dp ...
- hdu 5074 Hatsune Miku DP题目
题目传送门http://acm.hdu.edu.cn/showproblem.php?pid=5074 $dp[i][j] =$ 表示数列前$i$个数以$j$结尾的最大分数 $dp[i][j] = - ...
- HDU 1024 Max Sum Plus Plus --- dp+滚动数组
HDU 1024 题目大意:给定m和n以及n个数,求n个数的m个连续子系列的最大值,要求子序列不想交. 解题思路:<1>动态规划,定义状态dp[i][j]表示序列前j个数的i段子序列的值, ...
- HDU 1231 最大连续子序列 --- 入门DP
HDU 1231 题目大意以及解题思路见: HDU 1003题解,此题和HDU 1003只是记录的信息不同,处理完全相同. /* HDU 1231 最大连续子序列 --- 入门DP */ #inclu ...
- hdu 4778 Gems Fight! 博弈+状态dp+搜索
作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4102743.html 题目链接:hdu 4778 Gems Fight! 博弈+状态dp+搜 ...
- hdu 4514 并查集+树形dp
湫湫系列故事——设计风景线 Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Tot ...
- hdu 3247 AC自动+状压dp+bfs处理
Resource Archiver Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 100000/100000 K (Java/Ot ...
- hdu 2825 aC自动机+状压dp
Wireless Password Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others ...
- hdu 3433 A Task Process 二分+dp
A Task Process Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
随机推荐
- Fast portable non-blocking network programming with Libevent
Fast portable non-blocking network programming with Libevent Fast portable non-blocking network prog ...
- svn简介与使用
本文简单介绍windows下svn服务器与客户端软件的简单应用. 其中,svn服务器用于储存和管理代码,相当与文本服务器的作用(多版本控制等功能),同时分配用户代码的访问与使用权限. 客户端软件 用于 ...
- (二十一)unity4.6学习Ugui中文文档-------交互-Supported Events & Raycasters
大家好,我是孙广东. 转载请注明出处:http://write.blog.csdn.net/postedit/38922399 更全的内容请看我的游戏蛮牛地址:mod=guide&view=m ...
- Gnu Linux--Ubuntu系统清理项整理
/********************************************************************* * Author : Samson * Date ...
- CSharp Oracle 登陆
=======后台Oracle存储过程================ 1.创建表 --判读表存在先删除begin EXECUTE IMMEDIATE 'DROP TABLE student'; ...
- 用EnableMenuItem不能使菜单变灰的原因
为何不能Disable菜单项 问:我有一个工具button在WM_COMMAND消息是这样做的: CMenu *pMenu = GetMenu(); pMe ...
- hdu4336压缩率大方的状态DP
Card Collector Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- 赤裸裸的splay平衡树
HYSBZ1588 http://www.lydsy.com/JudgeOnline/problem.php?id=1588 给我们n天的营业额, 要求出每天的最小波动值,然后加起来. 当天最小波动 ...
- 关于bind函数和connect函数的测试结论
1. 一般客户端不用绑定,系统给你自动分配(有些ip不是固定的,bind也不是一个好方法):而服务器需要绑定,因为需要给客户端一个众所周知的固定的地址: 2. 关于bind错误,可以用WSAGetLa ...
- MongoDB获得短暂的
大约MongoDB该数据是现在比较少.和大多数英文网站.最上面的经笔者从官方网站翻译.请翻译或误解之处请作证.然后,我们将继续关注MongoDB,和翻译“Developer Zone”和“Admin ...