简单dp

  1. #include <stdio.h>
  2. #include <cstring>
  3. #include <iostream>
  4. #include <map>
  5. using namespace std;
  6. typedef unsigned long long ull;
  7. const int N = 105;
  8. int n, m, a[N];
  9. int s[N][N], dp[2][N];
  10. void pt(int x ){
  11. for(int i = 1; i <= m; i++)printf("%d ", dp[x][i]); puts("");
  12. }
  13. int solve(){
  14. int cur = 0;
  15. if(a[1] < 0)
  16. memset(dp[cur], 0, sizeof dp[cur]);
  17. else
  18. {
  19. memset(dp[cur], -1, sizeof dp[cur]);
  20. dp[cur][a[1]] = 0;
  21. }
  22. for(int i = 2; i <= n; i++)
  23. {
  24. cur ^= 1;
  25. memset(dp[cur], -1, sizeof dp[cur]);
  26. if(a[i]>0)
  27. {
  28. for(int j = 1; j <= m; j++)
  29. if(dp[cur^1][j] != -1)
  30. dp[cur][a[i]] = max(dp[cur][a[i]], dp[cur^1][j] + s[j][a[i]]);
  31. }
  32. else
  33. {
  34. for(int j = 1; j <= m; j++)
  35. if(dp[cur^1][j]!=-1)
  36. for(int k = 1; k <= m; k++)
  37. dp[cur][k] = max(dp[cur][k], dp[cur^1][j]+s[j][k]);
  38. }
  39. // cout<<i<<":"; pt(cur);
  40. }
  41. int ans = 0;
  42. for(int i = 1; i <= m; i++)
  43. ans = max(ans, dp[cur][i]);
  44. return ans;
  45. }
  46. void input(){
  47. cin>>n >> m;
  48. for(int i = 1; i <= m; i++)
  49. for(int j = 1; j <= m; j++)
  50. scanf("%d", &s[i][j]);
  51. for(int i = 1; i <= n; i++) scanf("%d", &a[i]);
  52. }
  53. int main(){
  54. int T; cin>>T;
  55. while(T--){
  56. input();
  57. cout<<solve()<<endl;
  58. }
  59. return 0;
  60. }
  61. /*
  62. 9
  63. 3 3
  64. 1 1 5
  65. 5 1 100
  66. 1 5 1
  67. -1 -1 -1
  68.  
  69. */

HDU 5074 Hatsune Miku 2014 Asia AnShan Regional Contest dp(水的更多相关文章

  1. dp --- 2014 Asia AnShan Regional Contest --- HDU 5074 Hatsune Miku

    Hatsune Miku Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=5074 Mean: 有m种音符(note),现在要从 ...

  2. HDU 5074 Hatsune Miku(2014鞍山赛区现场赛E题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5074 解题报告:给出一个长度为n的序列,例如a1,a2,a3,a4......an,然后这个序列的美丽 ...

  3. 2014 Asia AnShan Regional Contest --- HDU 5073 Galaxy

    Galaxy Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=5073 Mean: 在一条数轴上,有n颗卫星,现在你可以改变k颗 ...

  4. 2014 Asia AnShan Regional Contest --- HDU 5078 Osu!

    Osu! Problem's Link:   http://acm.hdu.edu.cn/showproblem.php?pid=5078 Mean: 略. analyse: 签到题,直接扫一遍就得答 ...

  5. HDU 5073 Galaxy 2014 Asia AnShan Regional Contest 规律题

    推公式 #include <cstdio> #include <cmath> #include <iomanip> #include <iostream> ...

  6. hdu5071 2014 Asia AnShan Regional Contest B Chat

    模拟题: add的时候出现过的则不再添加 close的时候会影响到top rotate(Prior.Choose)的时候会影响到top /*============================== ...

  7. hdu5072 2014 Asia AnShan Regional Contest C Coprime

    最后一次参加亚洲区…… 题意:给出n(3 ≤ n ≤ 105)个数字,每个数ai满足1 ≤ ai ≤ 105,求有多少对(a,b,c)满足[(a, b) = (b, c) = (a, c) = 1] ...

  8. hdu oj 3127 WHUgirls(2009 Asia Wuhan Regional Contest Online)

    WHUgirls Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total ...

  9. 2014 ACM-ICPC Asia Anshan Regional Contest(Online Version)

    题目I - Osu! - HDU 5078 题目分析:最水的一道题吧,求两点间的距离和时间差值的最大比值 #include<stdio.h> #include<math.h> ...

随机推荐

  1. java 解析四则混合运算表达式并计算结果

    package ch8; import java.util.LinkedList; import java.util.List; import java.util.Stack; /** * 四则混合运 ...

  2. 经典算法mark

    在平时找工作的时候,或多或少会遇到一些算法问题,很多都是比较经典或者网上已经流传很久的.只是我们没有接触过,所以不知道怎么解决. 在这儿,我自己总结一些我遇到的一些经典算法,给自己增加一点记忆,也给需 ...

  3. PHP常量和数据类型考察点

    PHP 常量 常量是单个值的标识符(名称).在脚本中无法改变该值. 有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号). 注释:与变量不同,常量贯穿整个脚本是自动全局的. PHP常量的两种定 ...

  4. 面试必备【含答案】Java面试题系列(二

    1.写clone()方法时,通常都有一行代码,是什么?答:super.clone(),他负责产生正确大小的空间,并逐位复制. 2.GC 是什么? 为什么要有GC?答:GC 是垃圾收集的意思(Gabag ...

  5. 解决android的键盘弹出时,html页面的高度被压缩

    如果元素的高度是用100%表示,那么,安卓的键盘弹出时,高度会发生变化,导致布局混乱,所以最好给高度设置像素高度 $("html,body").height(window.inne ...

  6. D. Gourmet choice并查集,拓扑结构

    D. Gourmet choice time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  7. vue工程化之项目引入jquery

    既然写项目,那么少不了用jq,那我们就引入进来吧 1.因为已经安装了vue脚手架,所以需要在webpack中全局引入jquery 打开package.json文件,在里面加入这行代码,jquery后面 ...

  8. JavaSE-15 Log4j参数详解

    一:日志记录器输出级别,共有5级(从前往后的顺序排列) ①fatel:指出严重的错误事件将会导致应用程序的退出 ②error:指出虽然发生错误事件,但仍然不影响系统的继续运行 ③warn:表明会出现潜 ...

  9. Log.d 日志调试查看(所有平台)

    https://www.cnblogs.com/onechen/p/6436748.html http://docwiki.embarcadero.com/Libraries/Berlin/en/FM ...

  10. 简单说一下Set,list,Map的类型和自己的特点

    首先是Set,List,Map Set和list都是继承了Conllection接口,而Map是本身就是一个接口 set是最简单的一种集合,没有重复对象 set接口主要有两个实现: 1,hashSet ...