HDU 1087

  题目大意:给定一个序列,只能走比当前位置大的位置,不可回头,求能得到的和的最大值。(其实就是求最大上升(可不连续)子序列和)

  解题思路:可以定义状态dp[i]表示以a[i]为结尾的上升子序列的和的最大值,那么便可以得到状态转移方程

       dp[i] = max(dp[i], dp[j]+a[i]), 其中a[j]<a[i]且j<i;  另外每个dp[i]可以先初始化为a[i]

       理解:以a[i]为结尾的上升子序列可以由前面比a[i]小的某个序列加上a[i]来取得,故此有dp[j]+a[i], j < i, a[j] < a[i]三个条件

          若是前面没有比a[i]小的序列,那么dp[i]为a[i]本身,故此有dp[i]全初始化为a[i]。

          最后获取dp[i]数组中的最大值就是最终结果了。

/* HDU 1087 Super Jumping! Jumping! Jumping! --- dp */
#include <cstdio>
#include <cstring> int a[];
int dp[]; inline int MAX(int a, int b){
return a > b ? a : b;
} int main()
{
#ifdef _LOCAL
freopen("D:input.txt", "r", stdin);
#endif int n; while (scanf("%d", &n) == && n){ for (int i = ; i <= n; ++i){
scanf("%d", a + i); //获取n个数
dp[i] = a[i]; //dp[i]的初始化
}//for(i) //dp[i] = max(dp[i], dp[j]+a[i]), 其中a[j] < a[i]
int maxnum = dp[]; //max保存最终结果
for (int i = ; i <= n; ++i){
for (int j = ; j <= i; ++j){
if (a[j] < a[i]){
dp[i] = MAX(dp[i], dp[j] + a[i]);
if (dp[i] > maxnum){
maxnum = dp[i];
}
}
}//for(j)
}//for(i)
printf("%d\n", maxnum);
} return ;
}

HDU 1087 Super Jumping! Jumping! Jumping的更多相关文章

  1. HDU 1087 Super Jumping! Jumping! Jumping!(求LSI序列元素的和,改一下LIS转移方程)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1087 Super Jumping! Jumping! Jumping! Time Limit: 20 ...

  2. hdu 1087 Super Jumping! Jumping! Jumping!(动态规划DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087 Super Jumping! Jumping! Jumping! Time Limit: 200 ...

  3. HDU 1087 Super Jumping! Jumping! Jumping! 最长递增子序列(求可能的递增序列的和的最大值) *

    Super Jumping! Jumping! Jumping! Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64 ...

  4. hdu 1087 Super Jumping! Jumping! Jumping!(dp 最长上升子序列和)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087 ------------------------------------------------ ...

  5. DP专题训练之HDU 1087 Super Jumping!

    Description Nowadays, a kind of chess game called "Super Jumping! Jumping! Jumping!" is ve ...

  6. hdu 1087 Super Jumping! Jumping! Jumping! 简单的dp

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  7. HDU 1087 Super Jumping! Jumping! Jumping! 最大递增子序列

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  8. HDU 1087 Super Jumping! Jumping! Jumping! (DP)

    C - Super Jumping! Jumping! Jumping! Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format: ...

  9. HDU 1087 Super Jumping! Jumping! Jumping!(动态规划)

    Super Jumping! Jumping! Jumping! Problem Description Nowadays, a kind of chess game called “Super Ju ...

随机推荐

  1. nbtstat -a <IP> 会显示主机名、所在工作组等信息

    nbtstat -a <IP> 会显示主机名.所在工作组等信息

  2. 戴文的Linux内核专题:04安全

    转自Linux中国 Linux内核是所有Linux系统的核心.如果有任何恶意代码控制或破害了内核的任何一部分,那么系统会严重受损,文件可能被删除或损坏,私人信息可能被盗等等.很明显,保持内核安全涉及到 ...

  3. 从协议VersionedProtocol开始

    VersionedProtocol协议是Hadoop的最顶层协议接口的抽象:5--3--3共11个协议,嘿嘿 1)HDFS相关 ClientDatanodeProtocol:client与datano ...

  4. AS3事件流机制

    事件流: 显示对象,深度 MouseEnabled,MouseChildren:显示对象,同层次(父容器为同一对象)遮挡问题

  5. 支持多人协作的在线免费作图工具:ProcessOn

    之前朋友给我推荐一款作图工具ProcessOn,出于好奇我就研究了一下它,今天我就给大家简单介绍一下这款免费的在线作图工具:ProcessOn 首先使用ProcessOn我们需要有一个帐号,这样每次操 ...

  6. WordPress 4.0 “Benny” 正式发布

    http://wordpress.org/news/2014/09/benny/Highlights and What’s New:http://codex.wordpress.org/Version ...

  7. BCP 导入导出数据库数据

    使用 bcp 将数据库迁移到 Azure SQL Database --所有 都是在本机sql上运行--先开启cmdshellEXEC sp_configure 'show advanced opti ...

  8. (转)Ratchet教程:创建项目

    原文:http://www.w3cplus.com/mobile/how-to-create-mobile-project-width-ratchet.html Ratchet教程:创建项目      ...

  9. 玩转无线电 -- 温哥华天车 RFID 票务系统

    0x00 前言 如今物联网 RFID系统已经完全融入了我们的生活当中. 从楼宇门禁到 Apple Pay. 可以说其身影是无处不在.很多网友也分享了自己对RFID系统的安全测试心得.不过大多还是基于门 ...

  10. Js验证userAgent是否来自手机端

    function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&] ...