九度OJ 1480 最大上升子序列和 -- 动态规划

最长上升子序列——动态规划(C++详解) 题目描述 LIS(Longest Increasing Subsequence)最长上升子序列 一个数的序列bi,当b1 < b2 < … < bS的时候,我们称这个序列是上升的。 比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中最长的长度是4,比如子序列(1, 3, 5, 8). 对于给定的序... 阅读详情

题目地址:http://ac.jobdu.com/problem.php?pid=1480

题目描述:

一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, ...,aN),我们可以得到一些上升的子序列(ai1, ai2, ..., aiK),这里1 <= i1 < i2 < ... < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。这些子序列中序列和最大为18,为子序列(1, 3, 5, 9)的和.

你的任务,就是对于给定的序列,求出最大上升子序列和。注意,最长的上升子序列的和不一定是最大的,比如序列(100, 1, 2, 3)的最大上升子序列和为100,而最长上升子序列为(1, 2, 3)。

输入:

输入包含多组测试数据。
每组测试数据由两行组成。第一行是序列的长度N (1 <= N <= 1000)。第二行给出序列中的N个整数,这些整数的取值范围都在0到10000(可能重复)。

输出:

对于每组测试数据,输出其最大上升子序列和。

样例输入:
7
1 7 3 5 9 4 8
样例输出:
18
来源:
2012年北京大学计算机研究生机试真题
状态 dp[i]表示以i结尾的递增子序列的和。

状态转移方程dp[i] = max(dp[j]) + data[i], 1 <= j < i, 且data[j] < data[i]

#include <stdio.h>
  
int N;
int data[1001];
int dp[1001];
  
int MIS(){
    int i, j;
    int max;
    for (i = 1; i <= N; ++i){
        dp[i] = data[i];
        for (j = 1; j < i; ++j){
            if (data[i] > data[j] && dp[i] < dp[j] + data[i]){
                dp[i] = dp[j] + data[i];
            }
        }
    }
    max = -1;
    for (i = 1; i <= N; ++i){
        if (max < dp[i])
            max = dp[i];
    }
    return max;
}
  
int main(void){
    int i;
    while (scanf("%d", &N) != EOF){
        for (i = 1; i <= N; ++i){
            scanf("%d", &data[i]);
        }
        printf("%d\n", MIS());
    }
  
    return 0;
}



Host是如何与EC通信的 EC中有三个寄存器,分别为状态寄存器EC_SC、命令寄存器EC_SC和数据寄存器EC_DATA。而状态寄存器和命令寄存器同属于一个寄存器,这几个寄存器遵循着ACPI EC规范。host可以根据ACPI协议规范来与EC进行通信。 以下是个寄存器的详细介绍。 EC状态寄存器(EC_SC(R)),该寄存器是一个只读寄存器,它反映了此时EC接口的状态。下图为该寄存器表。 EC状态寄存器表中各位的具体含义: OBF(Output Buffer is Full),该状态位置1... 阅读详情

相关推荐

从零到一:手把手教你用C#开发AGV调度系统(附避坑指南)

本文详细介绍了如何使用C#开发高效的AGV调度系统,涵盖从环境搭建到核心算法实现的完整流程。重点解析了动态路径规划、多机协同等关键技术,并提供了实用的避坑指南和性能优化建议,帮助开发者快速构建工业级车辆控制调度系统。

blockchain9miner的博客 741

最大上升子序列和

题目描述: 一个数的序列bi,当b1 你的任务,就是对于给定的序列,求出最大上升子序列和。注意,最长的上升子序列的和不一定是最大的,比如序列(100, 1, 2, 3)的最大上升子序列和为100,而最长上升子序列为(1, 2, 3)。 输入: 输入包含多组测试数据。 每组测试数据由两行组成。第一行是序列的长度N (1 输出: 对于每组测试数据,输出其最大上升子序列和

hackerzchao 2737

openwrt编译及第一个安装包教程

Date: 2017.03.14 Made:SuperDeverloper Email: na1206@live.com Target: For mt7688 based board说明:本人在学习过程中走了不少弯路,希望本文档能为后来者提供便利。欢迎复制和使用本文档。本文档记录了搭建openwrt编译环境以及快速创建ipk包(openwrt上的安装程序)。本文档在实际应用中做过几次修改,以帮

SuperDevloper的博客 1万+

最长上升子序列、最大上升子序列的和、最大连续子序列

一.最长上升子序列 1.动态规划 O(n^2) 2.二分法 O(n*logn) 二.最长上升子序列的和

weixin_66306407的博客 1587

Redash离线环境部署2020.1(centos+windows)

背景 Redash是一款开源的BI系统,核心功能是添加数据源,然后进行数据的可视化展示。一般会拿出来同Supervisor和Metabase进行选型比较,这里对三者的选型不做细致分析。而是给出在Redash开发环境部署踩过的坑,很多坑是自己琢磨出来的,网上几乎找不到更新的资料。适用于没怎么用过linux,也不怎么熟悉python的,用的是最新(master)的redash的代码(上一个发布版本...

Jone_wan的专栏 2137

网络安全面试题

在当今社会网络安全行业越来越发达,也有越来越多的人去学习,为了更好地进行工作,除了学好知识外还要应对企业的面试。 所以在这里我归总了一些网络安全方面的常见面试题,希望对大家有所帮助。 windows常见 1:描述tcp/udp的区别及优劣,及其发展前景 TCP—传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能...

fzx_hsaj的博客 6万+

c++最大上升子序列和(详解)

在MASS问题中,给定一个正整数序列,求最长的上升子序列,并且要求这个上升子序列的和最大。注意,最长的上升子序列的和不一定是最大的,比如序列(100,1,2,3)的最大上升子序列和为100,而最长上升子序列为(1,2,3)。比如,对于序列(1,7,3,5,9,4,8),有它的一些上升子序列,如(1,7),(3,4,8)等等。

2301_76180325的博客 1763

Abaqus中Cohesive单元建模:从本构到失效的完整指南

本文提供了Abaqus中Cohesive单元建模的完整指南,涵盖从本构模型到失效分析的全过程。详细解析了Cohesive单元作为模拟界面粘结与失效的关键工具,其核心在于弹性本构、损伤起始准则和损伤演化定律的设置。文章通过双悬臂梁(DCB)实例,手把手指导前处理、材料定义、求解设置及后处理分析,并分享了刚度、强度、断裂能等关键参数的影响与收敛性调优的实用避坑技巧,帮助用户准确模拟复合材料及胶接结构的界面失效行为。

cuda7parallel的博客 700

九度OJ 1480 动态规划 最大上升子序列和

题目1480:最大上升子序列和 时间限制:1 秒内存限制:128 兆特殊判题:否提交:1112解决:419 题目描述: 一个数的序列bi,当b1 你的任务,就是对于给定的序列,求出最大上升子序列和。注意,最长的上升子序列的和不一定是最大的,比如序列(100, 1, 2, 3)的最大上升子序列和为100,而最长上升子序列为(1, 2, 3)。 输入: 输入包含多组测试数据。 每组测试

星辰大海 1119

CANape快速上手

文章帮助记录CANape学习过程。

小弱鸡的博客 1万+

【DRAM存储器四十六】LPDDR5介绍--基本操作之行操作、读、写

简述LPDDR5的行操作和读写时序

highman110的博客 761

九度OJ-1480:最大上升子序列和

把最长递增子序列模板一改便可。 设计状态:设 dp[j]表示以list[j]结尾的递增子序列的序列和中的最大值。 边界条件;dp[1]=list[1] 转移方程:dp[j]=max{ list[j],dp[i]+list[j] | i 题目描述: 一个数的序列bi,当b1 你的任务,就是对于给定的序列,求出最大上升子序列和。注意,最长的上升子序列的和不一定是最大的

听风就是雨 519

TPM 2.0实例探索2 —— LUKS磁盘加密(1)

本文对LUKS行了系统介绍

phmatthaus的专栏 1700

九度oj 1480

题目描述: 一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, ...,aN),我们可以得到一些上升的子序列(ai1, ai2, ..., aiK),这里1 <= i1 < i2 < ... < iK <= N。比如,对于...

aling1199的博客 110

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

九度 oj 题目1480:最大上升子序列和

http://ac.jobdu.com/problem.php?pid=1480 #include #include #include int main(){ //freopen("in/1480.in","r",stdin); int dp[1005],a[1005],n; while(scanf("%d",&n) !=EOF){

guojiaqi007的专栏 367

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【九度OJ】1480【动态规划】【C实现】【北大2012】

参考: http://blog.youkuaiyun.com/jdplus/article/details/20226807 开始

ALiTuTu的专栏 568

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

打不开磁盘配额linux,九度OJ 1455 珍惜现在,感恩生活 -- 动态规划(背包问题)...

题目描述:为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买。请问:你用有限的资金最多能采购多少公斤粮食呢?输入:输入数据首先包含一个正整数C,表示有C组测试用例,每组测试用例的第一行是两个整数n和m(1<=n<=100, 1<=m<=100),分别表示经费的金...

weixin_33765959的博客 183

C++---最长上升子序列模型---最大上升子序列和(每日一道算法2023.3.3)

比如,对于序列(1,7,3,5,9,4,8),有它的一些上升子序列,如(1,7),(3,4,8)等。 这些子序列中和最大为18,为子序列(1,3,5,9)的和。 你的任务,就是对于给定的序列,求出最大上升子序列和。 注意,最长的上升子序列的和不一定是最大的,比如序列(100,1,2,3)的最大上升子序列和为100,而最长上升子序列为(1,2,3)。

SRestia的博客 1174

动规之最长上升子序列

Problem Description 一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, ..., aN),我们可以得到一些上升的子序列(ai1, ai2, ..., aiK),这里1<= i1 < i2 < ... < iK <= N。比如,对于序列(1, 7, 3,...

s_t_a_r_s的博客 640

[AcWing] 1017. 怪盗基德的滑翔翼(C++实现)最长上升子序列模型

[AcWing] 1017. 怪盗基德的滑翔翼(C++实现)最长上升子序列模型1. 题目2. 读题(需要重点注意的东西)3. 解法4. 可能有帮助的前置习题5. 所用到的数据结构与算法思想6. 总结 1. 题目 2. 读题(需要重点注意的东西) 读题: 只能选择一个方向下降,可以选则正向、可以选择反向 所选择的楼是呈现单调下降的(反过来就是单调上升的) 即无论正向和反向,都可以看成求最长上升的子序列,即在每个节点正向求一遍最长上升子序列、再反向求一遍最长上升子序列,最后取max得到最大的

cloud的博客 1925

C++数据结构与算法分析——最长上升子序列问题

最长上升子序列问题 例题 题目描述 给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。 输入格式 第一行包含整数N。 第二行包含N个整数,表示完整序列。 输出格式 输出一个整数,表示最大长度。 数据范围 1≤N≤10001≤N≤10001≤N≤1000, −109≤数列中的数≤109−10^9≤数列中的数≤10^9−109≤数列中的数≤109 输入样例: 7 3 1 2 1 8 5 6 输出样例: 4 样例解释 输入的序列中最长上升子序列为1,2,5,6,长度为4因此输出4. 解题思路

l_red_forest的博客 1205

浅说线性DP(下)

动态规划入门详解

CylMK的博客 1105

C++动态规划之最长上升子序列

例如序列1,2,4,5,3就,他含有的最大上升子序列为1,2,4,5。可以更方便的找到和删除自己想要的和不想要的数,例如序列1,2,4,3,5,2,他的最大上升子序列就是1,2,4,5,单调递增。转化成数组就是1,2,3,2,4,2,分别代表数组长度为i(i为下标)时的最大上升子序列长度。例如序列A={1,3,5,4,2},删除其中的第3项和第5项,得到序列B={1,3,4},删除其中的第3项和第4项,得到序列C={1,3,2},此时序列B和C是序列A的子序列。动态规划,单调队列都可以。

2302_80364740的博客 864
上一篇: 九度OJ 1547 出入栈 -- 动态规划
下一篇: 动态规划 -- “最”系列题目
JDPlus
博客等级 码龄15年 221粉丝 125原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值