我看以前写过一个最长不下降,但是感觉可能没有那么好理解emmmm

下面这个是从正序寻找的emmmm

先来一个WA代码,我给写了WA的具体行数,看看其他行其实可以看出它的思路

第二个代码是AC的

 #include <iostream>
#include <string>
#include <string.h>
#include <vector>
using namespace std;
long MAX=;
int a[];
int maxa[];
int pos[];
int main() {
int N;
cin >> N;
for (int i = ; i <= N; ++i) {
cin >> a[i];
maxa[i] = ;
}
int maxfinal=;
int final_pos=;
for (int k = ; k <= N; ++k) {
for (int i = k-; i >=; --i) {
if (a[k] > a[i]) {
maxa[k] = max(maxa[k], maxa[i] + );
pos[k]=i;//WA典范,因为maxa可能没有取maxa[i]的值,但是pos 一直在改变
if (maxa[k] > maxfinal) {
maxfinal = maxa[k];
final_pos=k;
} }
}
}
cout<<maxfinal<<endl;
for (int l = ; l < ; ++l) {
cout<<pos[l]<<endl; }
for (int j = final_pos; ; ) {
if(a[j]==)
break;
cout<<a[j]<<" ";
j=pos[j]; } }

没错就是max(,)的下一行,但是如果只需要输出长度的话就把这行给注释掉就行了

 #include <iostream>
#include <string>
#include <string.h>
#include <vector>
using namespace std;
long MAX=;
int a[];
int maxa[];
int pos[];
int main() {
int N;
cin >> N;
for (int i = ; i <= N; ++i) {
cin >> a[i];
maxa[i] = ;
}
int maxfinal=;
int final_pos=;
for (int k = ; k <= N; ++k) {
for (int i = k-; i >=; --i) {
int data;
if (a[k] > a[i]) {
if(maxa[k]<maxa[i] + ) {
maxa[k] = maxa[i] + ;
pos[k] = i;
if (maxa[k] > maxfinal) {
maxfinal = maxa[k];
final_pos = k;
}
} }
}
}
cout<<maxfinal<<endl;
for (int j = final_pos; ; ) {
if(a[j]==)
break;
cout<<a[j]<<" ";
j=pos[j]; } }

这个是输出序列的,那个存数方式还算很常用

还有就是,一维数组比二维要快?我一会儿写一篇来检测一下哈

最长不下降代码dp的更多相关文章

  1. 「10.19」最长不下降子序列(DP)·完全背包问题(spfa优化DP)·最近公共祖先(线段树+DFS序)

    我又被虐了... A. 最长不下降子序列 考场打的错解,成功调了两个半小时还是没A, 事实上和正解的思路很近了,只是没有想到直接将前$D$个及后$D$个直接提出来 确实当时思路有些紊乱,打的时候只是将 ...

  2. 最长不下降子序列//序列dp

    最长不下降子序列 时间: 1000ms / 空间: 131072KiB / Java类名: Main 描述 求最长不下降子序列的长度 输入格式 第一行为n,表示n个数第二行n个数 输出格式 最长不下降 ...

  3. 算法复习——求最长不下降序列长度(dp算法)

    题目: 题目背景 161114-练习-DAY1-AHSDFZ T2 题目描述 有 N 辆列车,标记为 1,2,3,…,N.它们按照一定的次序进站,站台共有 K 个轨道,轨道遵从先进先出的原则.列车进入 ...

  4. Codeforces Round #323 (Div. 2) Once Again... CodeForces - 582B 最长非下降子序列【dp】(不明白)

    B. Once Again... time limit per test 1 second memory limit per test 256 megabytes input standard inp ...

  5. 【DP】最长不下降子序列问题(二分)

    Description 给你一个长度为n的整数序列,按从左往右的顺序选择尽量多的数字并且满足这些数字不下降. Thinking 朴素dp算法:F[i]表示到第i位为止的最长不下降子序列长度 F[i]= ...

  6. 洛谷 P2766 最长不下降子序列问【dp+最大流】

    死于开小数组的WA?! 第一问n方dp瞎搞一下就成,f[i]记录以i结尾的最长不下降子序列.记答案为mx 第二问网络流,拆点限制流量,s向所有f[i]为1的点建(s,i,1),所有f[i]为mx(i+ ...

  7. luogu2766 最长不下降子序列问题 DP 网络流

    题目大意:给定正整数序列x1,...,xn .(1)计算其最长不下降子序列的长度s.(不一定是否连续)(2)计算从给定的序列中最多可取出多少个长度为s的不下降子序列.(序列内每一个元素不可重复)(3) ...

  8. NOIP 2004 T3 合唱队形(DP、最长上升/下降子序列)

    链接:https://ac.nowcoder.com/acm/contest/1082/C来源:牛客网 题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队 ...

  9. dp最长不下降序列

    // // Created by snnnow on 2020/4/13. // //这是dp 问题的基础题 // //最长不下降 //(导弹拦截是其例题) //那这篇文章是讲啥呢, // 主要是吧, ...

随机推荐

  1. TypeScript学习——数组、元组、接口(2)

    数组 数组类型注解 const numberArr: (number | string)[] = [1, '2', 3]; //既可以是number 也可以是string const stringAr ...

  2. 线性表的顺序存储和链式存储c语言实现

    一.线性表的顺序存储 typedef int ElemType;typedef struct List { ElemType *data;//动态分配 ,需要申请空间 int length; }Lis ...

  3. Layer 3.0

    https://jeesite.gitee.io/front/layer/3.0/layer.layui.com/index.html

  4. 【FastDFS】FastDFS 分布式文件系统的安装与使用,看这一篇就够了!!

    写在前面 有不少小伙伴在实际工作中,对于如何存储文件(图片.视频.音频等)没有一个很好的解决思路.都明白不能将文件存储在单台服务器的磁盘上,也知道需要将文件进行副本备份.如果自己手动写文件的副本机制, ...

  5. redis 链接数满了

    服务器上可以设置timeout参数,这样可以将限制的连接自动释放掉.

  6. 记录下 rhel 7 安装MySQL 并重置root密码

    注意官方是很不提倡用root的. 下载并安装MySQL 最新的rpm地址 https://dev.mysql.com/downloads/repo/yum/ #wget https://repo.my ...

  7. springSecurity使用

    目录 1.1 依赖包导入 2.1 没有安全机制下的一个web 3.1 做一个安全机制的web 官网https://spring.io/guides/gs/securing-web/ 无情的翻译官... ...

  8. Sass简单、快速上手_Sass快速入门学习笔记总结

    Sass是世界上最成熟.稳定和强大的专业级css扩展语言 ,除了Sass是css的一种预处理器语言,类似的语言还有Less,Stylus等. 这篇文章关于Sass快速入门学习笔记. 资源网站大全 ht ...

  9. python学习笔记之装饰器、生成器、内置函数、json(五)

    一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能比如说,我以前写了很多代码,系统已经上线了,但是性能比较不好,现在想把程序里面 ...

  10. C#获取CPU与网卡硬盘序列号及Base64和DES加密解密操作类

    public class RegisterHelp { /// <summary> /// CPU /// </summary> /// <returns>< ...