概述
题目描述
现有数列A_1,A_2,cdots,A_NA1,A2,⋯,AN,修改最少的数字,使得数列严格单调递增。
输入输出格式
输入格式:
第1 行,1 个整数N
第2 行,N 个整数A_1,A_2,cdots,A_NA1,A2,⋯,AN
输出格式:
1 个整数,表示最少修改的数字
输入输出样例
输入样例#1: 复制
3
1 3 2
输出样例#1: 复制
1
说明
• 对于50% 的数据,N le 10^3N≤103
• 对于100% 的数据,1 le N le 10^5 , 1 le A_i le 10^91≤N≤105,1≤Ai≤109
题解:最长上升子序列的改造,求出最长子序列,用总长度减去其长度就是最后的结果,但是直接动态规划需要O(n2)的时间复杂度,所以时间会超限,这里使用二分法来记录最长子序列的长度。
import java.util.*;
/*
*递增
*/
public class Main{
static int[] s;
static int ns=0;
public static int bf(int x) {
int l=1,r=ns;
while(l<r) {
int mid=(l+r)/2;
if(s[mid]>=x) {
r=mid;
}else
l=mid+1;
}
return l;
}
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
s=new int[n+1];
s[++ns]=in.nextInt();
int res=0;
for(int i=2;i<=n;i++) {
int a=in.nextInt();
if(s[ns]>a) {
s[bf(a)]=a;
res++;
}else {
s[++ns]=a;
}
}
System.out.println(res);
}
}
最后
以上就是结实云朵为你收集整理的洛谷-【动态规划】- 递增的全部内容,希望文章能够帮你解决洛谷-【动态规划】- 递增所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复