hdu 1087最长上升子序列和问题
看来大佬的dp思路,在这里就简单的总结下吧。
拿到一个问题,先得考虑是否适用dp算法。
1,找到最优解的结构,看其子问题是否也满足最优化(子问题最优化问题)
2, 看时候有子问题重叠
确定一个问题可以用dp来解决以后开始分析
1,用递归的定义来划分解的结构。
2,选择合适的数据结构来存放子问题的最优解。
3,按怎样的顺序去存放子问题。
dp[i]表示的是以i为结尾的最长上升和的长度,dp[i]的递归定义 =max(dp[j]+a[i]) //a[i] 为数组里面的值 j的范围为1~i a[j]<a[i],这里只有一个维 数据结构选用一位顺序数组就可以了。代码如下:
#include<iostream>
#include<cstring>
#include<cstdio>
#define inf 1<<29
using namespace std;
int main()
{
cin.sync_with_stdio(false);
int n;
int a[];
while(cin>>n)
{
if(n==) break;
for(int i=;i<=n;i++) cin>>a[i];
int dp[];
memset(dp,,sizeof(dp));
//dp[1]=a[1];
int maxn=-inf;
for(int i=;i<=n;i++)
{
int sum=;
for(int j=;j<i;j++)
{
if(a[j]<a[i]&&sum<dp[j]) sum=dp[j];
}
dp[i]=sum+a[i];
if(maxn<dp[i]) maxn=dp[i];
}
cout<<maxn<<endl;
} return ;
}
hdu 1087最长上升子序列和问题的更多相关文章
- hdu 1950 最长上升子序列(lis) nlogn算法【dp】
这个博客说的已经很好了.http://blog.csdn.net/shuangde800/article/details/7474903 简单记录一下自己学的: 问题就是求一个数列最长上升子序列的长度 ...
- HDU 5773 最长上升子序列
题意 给出一个序列 问它的最长严格上升子序列多长 这个序列中的0可以被替代为任何数 n的范围给出了1e5 所以平常的O(n*n)lis不能用了 在kuangbin的模板里有O(nlogn)的模板 套上 ...
- hdu 1950 最长上升子序列
//Accepted 3540 KB 62 ms //dp 最长上升子序列 #include <cstdio> #include <cstring> #include < ...
- HDU 5748 最长上升子序列的长度nlogn(固定尾部)
Bellovin Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total ...
- HDU 1025(最长上升子序列)
题意是要在两条平行线间连点,要在线不交叉的前提下尽可能多的连线,问最多能连多少条线. 现假定题中所给的是 9 组点,分别是:1—3,2—8,3—5,4—9,5—2,6—4,7—6,8—7,9—1,如图 ...
- HDU 1159 最长公共子序列(n*m)
Common Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- HDU 1159 最长公共子序列
Common Subsequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- hdu 5773 最长递增子序列 (nlogn)+贪心
The All-purpose Zero Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...
- HDU - 1503 最长公共子序列记录路径
题意:先给两个水果的名字然后得出一个最短的序列包含这两个词. 思路:我一开始的思路是先求出最长公共子序列,然后做一些处理将其他的部分输出来:两种水果的字符串和最长公共子序列的字符串这三个字符串做对比, ...
随机推荐
- 谈谈Java对象的强引用,软引用,弱引用,虚引用分别是什么
整体结构 java提供了4中引用类型,在垃圾回收的时候,都有自己的各自特点. 为什么要区分这么多引用呢,其实这和Java的GC有密切关系. 强引用(默认支持模式) 把一个对象赋给一个引用变量,这个引用 ...
- python selenium 的配置安装
selenium的使用需要以下几个配置步骤. (1) 首先安装selenium,使用python自带的pip进行安装.若pip配置到系统环境变量,可以直接在cmd命令行中使用,若没有配置到到环境变量, ...
- mysql 给用户设置权限
grant all on wordpress.* to wordpress@'10.0.0.%' identified by 'wordpress'; all 全部权限 ...
- win10 下cuda 9.0 卸载
1.首先 对于cuda8.0.cuda7.5的卸载都可以兼容 安装cuda9.0之后,电脑原来的NVIDIA图形驱动会被更新,NVIDIA Physx系统软件也会被更新(安装低版cuda可能不会被更新 ...
- features its own
Gulp.js features its own built-in watch() method - no external plugin required ---- However, the Arn ...
- 011-通过网络协议解析网络请求-DNS-ARP-TCPIP
一.概述 1.1.tcp/ip概述 TCP/IP不是一个协议,而是一个协议族的统称.里面包括IP协议.IMCP协议.TCP协议.跨越了多层模型的多层 TCP/IP协议族按照层次由上到下,层层包装.最上 ...
- c++ string操作
#include <iostream>#include <string> using namespace std; int main(){ string str1(" ...
- Qt自定义类添加qvector报错
PtsData& PtsData::operator=(const PtsData& obj){ return *this;} PtsData::~PtsData(){ }
- github上有对应官方的各种模型
https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/detection_model_zoo ...
- mysql物理备份innobackupex
一.全量备份 1.安装xtrabackup # wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/b ...