dp最长不下降序列
//
// Created by snnnow on 2020/4/13.
//
//这是dp 问题的基础题
//
//最长不下降
//(导弹拦截是其例题)
//那这篇文章是讲啥呢,
// 主要是吧,这个题是用了二维数组,
//而导弹当时是用了三个一维数组
//其实本质上是一样的
//(有本事干结构体啊!QAQ[手动狗头]) //不多说了,ans[i][1]是原数
//ans[i][2]是该项的最长
//ans[i][3]是指向下一个(下一个值的位置)
//开始咯!
#include <iostream>
using namespace std;
int main(){
int ans[][];//虽然第二维我们只要三个数,但是还是最好开大一点
int n;
cin>>n;
for (int i = ; i <= n ; ++i) {
cin>>ans[i][];
ans[i][]=;
ans[i][]=; }
for (int j = n-; j >= ; --j) {
int k=;//注意一个问题,k和p是每次i需要更新的,所以一定放在这个循环这里
int p=;
for (int i = j+; i <= n ; ++i) { if(ans[j][] >= ans[i][] && ans[j][] > k){//k记录的就是所有的ans[j][2]中最大的
k = ans[j][]; p = j;
}
if(k>){
ans[i][] = p;//p就是个"指针",ans[j][3]存放的就是个位置
ans[i][] = k+;
} } }
//挨个比较一下ans[i][2]就可以找到最大的,注意要找个变量标记出来啊
int mark=;
for(int i=;i <= n;i++){
if(ans[i][] >= ans[mark][]){
mark = i;//这里不是排序,不需要双重循环,只需要找一个东西一直比较着就行
}
}
cout << ans[mark][]<<endl;
while(mark!=){
cout<<" "<<ans[mark][];
mark = ans[mark][];
}
return ;
}
这次,把第一个逆序循环--j写成了++j..直接炸了
然后把k的定义写错了位置(k是跟随每一个ans[i]更新的)
太傻了,小白还要继续加油!
dp最长不下降序列的更多相关文章
- 算法复习——求最长不下降序列长度(dp算法)
题目: 题目背景 161114-练习-DAY1-AHSDFZ T2 题目描述 有 N 辆列车,标记为 1,2,3,…,N.它们按照一定的次序进站,站台共有 K 个轨道,轨道遵从先进先出的原则.列车进入 ...
- 问题 B: 【例9.3】求最长不下降序列(基础dp)
问题 B: [例9.3]求最长不下降序列 时间限制: 1 Sec 内存限制: 128 MB提交: 318 解决: 118[提交][状态][讨论版][命题人:quanxing] 题目描述 设有由n( ...
- JDOJ 1929: 求最长不下降序列长度
JDOJ 1929: 求最长不下降序列长度 JDOJ传送门 Description 设有一个正整数的序列:b1,b2,-,bn,对于下标i1<i2<-<im,若有bi1≤bi2≤-≤ ...
- [BZOJ1852] [MexicoOI06]最长不下降序列
[BZOJ1852] [MexicoOI06]最长不下降序列 额我也不知道是不是水过去的...和网上的另一篇题解对拍过了,但是拍不出来... 经过和神仙的讨论基本可以确定是对的了 考虑如下贪心 (我将 ...
- 最长不下降序列nlogn算法
显然n方算法在比赛中是没有什么用的(不会这么容易就过的),所以nlogn的算法尤为重要. 分析: 开2个数组,一个a记原数,f[k]表示长度为f的不下降子序列末尾元素的最小值,tot表示当前已知的最长 ...
- 九度OJ 1131:合唱队形 (DP、最长上升下降序列)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2865 解决:881 题目描述: N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形. ...
- dp入门:最长不下降序列
#include "bits/stdc++.h" using namespace std; ],dp[]; int main() { int n; cin >> n; ...
- BZOJ 1852 [MexicoOI06]最长不下降序列(贪心+DP+线段树+离散化)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1852 [题目大意] 给你N对数A1,B1……An,Bn.要求你从中找出最多的对, 把它 ...
- dp:最长非递减序列
#include <iostream.h> void main() { int i,j,a[14]={5,6,-6,-1,9,10,-5,-3,16,4,3,-4,-3,5}; int d ...
随机推荐
- Oracle 11g各种服务作用以及哪些需要开启
Windwos server 2012 R2上成功安装Oracle 11g后共有7个服务,如果全局数据库名为orcl,则Oracle服务分别为 Oracle ORCL VSSWriter Servic ...
- 手把手教你部署 Redis Cluster
环境准备 阿里云申请3台ECS,如下: 序号 内网IP OS A 172.16.190.78 CentOS 7.6 B 172.16.242.36 CentOS 7.6 C 172.16.190.77 ...
- Write a program that prints its input one word per line.
#include <stdio.h> #define State '\n' void main() { int Juge=;/*only one space*/ int c=; while ...
- 自适应高度输入框(contenteditable/textarea)
一.用div模拟textarea div模拟输入域可以根据输入内容自动伸缩,而input和textarea输入内容较多时,高度固定,内容会显示不全. 1.坑1(IOS端无法输入) 在取消全局默认样 ...
- Git篇----创建远程仓库
现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举 ...
- BUUCTF-Crypyo-No.1
我我我我我又来惹~~~~* MD5 flag{admin1} 看我回旋踢 凯撒密码 flag{5cd1004d-86a5-46d8-b720-beb5ba0417e1} Url编码 flag{and ...
- Java并发编程——为什么要用volatile关键字
首发地址 https://blog.leapmie.com/archives/66ba646f/ 日常编程中出现 volatile 关键字的频率并不高,大家可能对 volatile 关键字比较陌生,再 ...
- fiddler提示the system proxy was changed,Click to reanable capturing.导致无法抓包
出现这个提示后,fiddler无法抓取请求. 在网上搜了很多方法,比较常见的解决办法如下: 方法1: 网络设置问题,既然是使用本地浏览器,那么只需要把IE浏览器的网络设置下: 面板上点击 Tools- ...
- EntityFrameworkCore 开发实践问题及规范
严重问题 客户端求值 如where条件包含的GetValueOrDefault()不能被翻译成sql语句 不规范代码段例子 public async Task<List<Person> ...
- linux专题(一):小白的开始以及相关的学习链接
转载自:https://www.cnblogs.com/ggjucheng/archive/2011/12/16/2290158.html 学习Linux也有一阵子了,这过程中磕磕撞撞的,遇到了问题, ...