.
.
.
.
.

分析

定义f[i]表示以位置i为结尾的LIS长度。边界条件为f[0]=1,状态转移方程为

f[i]=max(f[i],f[j]+1)(j=1…i-1 a[i]>=a[j])

我们观察到,f[i]的值由前面的数字推得,所以我们只要从前往后转移,就可以保证每次使用的数字都是已经确定的值。

考虑两个数a[x]和a[y],若x< y且f[x]==f[y],那么在转移的过程中,选择a[x]更有潜力,可以获得最优的值,所以当f数组的值一样时,应选择最小的数。

按照f[i]==k分类,记录f[i]==k的所有i的最小值,f有两个特点:

(1)f[i]在计算过程中单调不升

(2)f数组是有序的,f[i]<=f[i+1]

根据这些性质,可以方便地求解:

(1)设当前求出的LIS长度为ans(初始值为1),当前元素为a[x]

(2)如果a[x]>f[ans],直接加入f数组的末尾,且ans++;否则在f数组中二分查找,找到第一个比a[x]小的数字f[k],f[k+1]=a[x],这样做保证a[x]<=f[k+1](根据性质1,2)

(3)最后的ans即为答案
.
.
.
.
.

程序:
#include<iostream>
using namespace std;
int a[100000],f[100000],n,ans,tj;int work(int w,int l,int r)
{while (l<r){int mid=(l+r)/2;if (w>=f[mid]) l=mid+1;else r=mid;}return l;
}int main()
{cin>>n;for (int i=0;i<n;i++)cin>>a[i];f[1]=a[0]; for (int i=1;i<n;i++){if (f[ans]<a[i]) tj=++ans;else tj=work(a[i],1,ans+1);f[tj]=a[i];}cout<<n-ans;return 0;
}

转载于:https://www.cnblogs.com/YYC-0304/p/9499908.html

洛谷P3902 递增相关推荐

  1. 洛谷P2766-最长递增子序列问题

    chunlvxiong的博客 题目描述: 给定正整数序列x1,...,xn (1≤n≤500). 1.计算其最长递增子序列的长度s. 2.计算从给定的序列中最多可取出多少个长度为s的递增子序列. 3. ...

  2. 洛谷P1198 [JSOI2008]最大数

    P1198 [JSOI2008]最大数 267通过 1.2K提交 题目提供者该用户不存在 标签线段树各省省选 难度提高+/省选- 提交该题 讨论 题解 记录 最新讨论 WA80的戳这QwQ BZOJ都 ...

  3. Educational Codeforces Round 81 (Rated for Div. 2) F.Good Contest \ 洛谷 划艇 组合 计数dp

    cf传送门 P3643 [APIO2016]划艇 文章目录 题意: 思路: 题意: aia_iai​在[li,ri][l_i,r_i][li​,ri​]等概率随机选一个数,求aaa数组不增的概率. 思 ...

  4. 动态规划——最长公共子序列(洛谷P1439)

    题目选自洛谷P1439 动态规划的模板题,最长公共子序列 1.譬如给定2个序列: 1 2 3 4 53 2 1 4 5 试求出最长的公共子序列. 那么 最普通的 LCS 代码: #include< ...

  5. 二分答案——跳石头(洛谷 P2678)

    题目选自洛谷P2678 这道题题目并不复杂,思考一下也能知道用二分的方法来做. 难点在于如何判断是否满足条件,以及二分的边界问题. 下面给出详细解题思路: //tot表示需要搬走的石块数量,i表示找的 ...

  6. [洛谷P3957] 跳房子

    洛谷题目连接:跳房子 题目描述 跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一. 跳房子的游戏规则如下: 在地面上确定一个起点,然后在起点右侧画 \(n\) 个格子,这些格 ...

  7. 洛谷p1216 IOI1994 Day1T1

    洛谷p1216 IOI1994 Day1T1 洛谷原题 题目描述 观察下面的数字金字塔. 写一个程序来查找从最高点到底部任意处结束的路径,使路径经过数字的和最大.每一步可以走到左下方的点也可以到达右下 ...

  8. 洛谷 P1919 【模板】A*B Problem升级版 【快速傅里叶变换 FFT】

    [洛谷 P1919] [模板]A*B Problem升级版 题目大意 给你两个超大整数 a,ba,ba,b,问 a∗ba*ba∗b 其中 a,b≤101000000a,b\leq10^{1000000 ...

  9. YBTOJ反素数洛谷P1463(数论)

    YBTOJ反素数&&洛谷P1463() 题目传送门 打表什么的就不说了,主要讲讲正解. 对于每个反素数,有如下性质: 性质1: 1~ N中的最大的反质数,就是1~N中约数个数最多的数中 ...

最新文章

  1. Android draw bitmap 图片不显示的问题
  2. 78.Zabbix监控Nginx
  3. python循环语句-Python for循环控制语句一般格式及方法
  4. Android --- AndroidManifest.xml文件内容详细介绍
  5. arduino电源接口直径多大_求助:Arduino UNO(如下图)有三种供电方式:USB供电,5v(供应芯片,下面一排接口中“...
  6. Leecode题解汇总(附题型归类)
  7. java数据库的优化_用Java向数据库中插入大量数据时的优化
  8. SGD(随机梯度下降算法)的缺点
  9. cuteFTP使用教程
  10. SQL Server 2008 R2安装步骤示例
  11. 想更快成长更应该关注的博客
  12. 一个简单的Python暴力破解网站登录密码脚本
  13. 极限理论总结01:随机变量的四种收敛、CMT及Slutsky定理
  14. 宽带无法远程连接到计算机,登录校园宽带是显示不能建立远程计算机连接,在别的电脑可以登录 是为什么?...
  15. EmguCV学习(一)
  16. 用python判断闰年
  17. 爬虫利器 xpath 实践案例
  18. 热门光学软件之初体验网络课程系列大纲8
  19. 糖尿病遗传风险检测挑战赛
  20. 在windows系统上如何将iphone备份到移动硬盘

热门文章

  1. 科大星云诗社动态20210330
  2. 新挑战之打造一流能源新材计算平台 2018-10-10
  3. A humble heart2019-11-09
  4. [C++学习笔记]C++常见问题大全(一)
  5. 三分钟带你对 Softmax 划重点
  6. Coursera吴恩达《卷积神经网络》课程笔记(3)-- 目标检测
  7. Python 中 function(#) (X)格式 和 (#)在Python3.*中的注意
  8. VTK修炼之道6_仔细分析一个复杂程序
  9. C 函数传递指针参数注意事项
  10. 问题总结:判断MS SQLSERVER临时表是否存在 drop table #tempcitys