hdu5074-递推-Hatsune Miku
来源:互联网 发布:php 注入过滤 编辑:程序博客网 时间:2024/05/16 16:06
http://acm.hdu.edu.cn/showproblem.php?pid=5074
给一串数字,若为负数。。可以变化,若为正数,不能变。
问你他们 从任意相邻两个在一起构成一个价值r[i,j]
要求 价值和最大。
规定 r(i,j)为 左边为i,右边为j 的价值。
方法;保留长度为len, 后面大小为j的情况。
递推。
#include <bits/stdc++.h>using namespace std;int a[105][105];int dp[105][105];int b[105];int main(){ int t,m,n; scanf("%d",&t); while(t--){ scanf("%d%d",&m,&n); for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ scanf("%d",&a[i][j]); } } for(int i=1;i<=m;i++) scanf("%d",&b[i]); memset(dp,0,sizeof(dp)); for(int i=2;i<=m;i++){ if(b[i]<0&&b[i-1]<0) { for(int x=1;x<=n;x++) for(int j=1;j<=n;j++) dp[i][j]=max(dp[i][j],dp[i-1][x]+a[x][j]); } else if(b[i]<0&&b[i-1]>0){ for(int j=1;j<=n;j++) dp[i][j]=max(dp[i][j],dp[i-1][b[i-1]]+a[b[i-1]][j]); } else if(b[i]>0&&b[i-1]<0) { for(int j=1;j<=n;j++) dp[i][b[i]]=max(dp[i][b[i]],a[j][b[i]]+dp[i-1][j]); } else if(b[i]>0&&b[i-1]>0) dp[i][b[i]]=dp[i-1][b[i-1]]+a[b[i-1]][b[i]]; } int ans=-1; for(int i=1;i<=n;i++){ ans=max(dp[m][i],ans); } printf("%d\n",ans); } return 0;}
阅读全文
0 0
- hdu5074-递推-Hatsune Miku
- hdu5074 Hatsune Miku
- hdu5074 Hatsune Miku dp
- hdu5074——Hatsune Miku
- 【HDU5074】Hatsune Miku(简单DP)
- hdu5074 Hatsune Miku(简单dp)
- HDU5074 ACM-ICPC亚洲区域赛鞍山赛区现场赛E题 Hatsune Miku 二维DP
- hdu 5074 Hatsune Miku
- HDU 5074 Hatsune Miku
- HDu 5074 Hatsune Miku
- HDU 5074 Hatsune Miku
- hdu Hatsune Miku(DP)
- HDOJ5074 Hatsune Miku(dp)
- HUD 5074 Hatsune Miku
- HDOJ 5074 Hatsune Miku DP
- HDU 5074 Hatsune Miku(DP)
- hdu 5074 Hatsune Miku(dp)
- hdoj 5074 Hatsune Miku 【DP】
- 安装完kali需要解决的问题
- AngularJS Directive指令
- moto xt1085 Rom包半定制制作
- beanstalkd
- MySql数据库插入数据乱码
- hdu5074-递推-Hatsune Miku
- CSDN博客积分规则
- python web框架django入门
- RadioButton
- 关于C语言逻辑运算符的应用
- 制作申请表
- if else 多分支 与for循环
- Java NIO Channel 通道
- 6-11 求自定类型元素序列的中位数(25 分)