我看以前写过一个最长不下降,但是感觉可能没有那么好理解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. Spring 获取单例流程(一)

    读完这篇文章你将会收获到 在 getBean 方法中, Spring 处理别名以及 factoryBean 的 name Spring 如何从多级缓存中根据 beanName 获取 bean Spri ...

  2. Python内置函数和内置常量

    Python内置函数 1.abs(x) 返回一个数的绝对值.实参可以是整数或浮点数.如果实参是一个复数,返回它的模. 2.all(iterable) 如果 iterable 的所有元素为真(或迭代器为 ...

  3. 2020年Web前端开发工程师市场怎么样?学会什么技术才能拿到高薪

    几乎整个互联网行业都缺前端工程师,不仅在刚起步的创业公司,对上市公司乃至巨头这个问题也一样存在.据统计,国外的前端开发人员和后端开发人员比例约1:1,但是在国内比例却在1:3以下, Web前端开发职位 ...

  4. BAT 非右键方式以管理员身份运行批处理

    @echo off & PUSHD %~dp0 & TITLE Run The BAT File As An Administrator mode con lines=4 cols=6 ...

  5. SpringCloud之zuul

  6. css如何设置不可点击?

    通过设置元素的pointer-events属性设置为none,来实现元素不可点击.此方法是通过设置元素的鼠标事件失效来实现元素不可点击. css设置不可点击: css代码: .disable { po ...

  7. Promise内部实现原理

    promise内部实现原理: function $Promise(fn) { // Promise 的三种状态 this.PENDING = 'pending' this.RESOLVED = 're ...

  8. JSOI2015 Salesman(树型DP)

    [luogu6082] [题目描述] 某售货员小T要到若干城镇去推销商品,由于该地区是交通不便的山区,任意两个城镇之间都只有唯一的可能经过其它城镇的路线. 小T 可以准确地估计出在每个城镇停留的净收益 ...

  9. Django---进阶4

    目录 CBV源码剖析 模版语法传值 过滤器(过滤器只能最多有两个参数) 标签 自定义过滤器.标签.inclusion_tag 模版的继承 模版的导入 作业 CBV源码剖析 # 你自己不要修改源码 除了 ...

  10. 数据可视化之 图表篇(五) PowerBI图表不够炫酷?来看看这个

    现在这个大数据时代,每时每刻.各行各业都在产生多种多样的海量数据,如何简单高效的来理解.挖掘这些数据,发现背后的见解就非常重要. 本文介绍这个图表就可以帮你快速发现海量数据背后的见解,微软研究院打造的 ...