博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Luogu 3902]Increasing
阅读量:4486 次
发布时间:2019-06-08

本文共 1031 字,大约阅读时间需要 3 分钟。

Description

Input

Output

Sample Input

31 3 2

Sample Output

1

HINT

题解

由于题目要求我们求严格递增的数列,即:

$$A[i]>A[i-1],1<i<=N$$

我们不妨令B[i]=A[i]-i,那么我们容易得到

$$B[i]>=B[i-1],1<i<=N$$

两式是等价的。

那么我们可以将原数列处理一下,我们只需要求出$B[i]$的最长不下降子序列,把不在序列中的那些数$B[i]$都改成符合条件的数(比如说和左边最近一个在最长不下降子序列中的$B[j]$相等)就能满足题意了。

当然,我们并不需要求出具体的修改方案,我们只需要求出最长不下降的长度$K$,输出$N-K$即可。

注意:

由于数据为$10^5$显然我们要用二分优化求最长不下降子序列长度。同时由于减去了$i$,我们需要将数组初始化为极小值。

1 #include 2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 #include
13 #include
14 #define LL long long15 #define RE register16 #define IL inline17 using namespace std;18 const int N=1e5;19 20 int n,x;21 int f[N+5],maxn;22 23 IL int Dev(int x)24 {25 int l=0,r=maxn,mid,ans;26 while(l<=r)27 {28 mid=(l+r)>>1;29 if (f[mid]<=x) ans=mid,l=mid+1;30 else r=mid-1;31 }32 return ans;33 }34 IL int Min(int a,int b) { return a

 

转载于:https://www.cnblogs.com/NaVi-Awson/p/7351616.html

你可能感兴趣的文章
uvalive 3938 "Ray, Pass me the dishes!" 线段树 区间合并
查看>>
html中事件调用JavaScript函数时有return与没有return的区别
查看>>
[转帖]ASP.NET4中不要相信Request.Browser.Cookies,Form验证要用UseCookies
查看>>
Windows7中安装内存与可用内存不一致的解决办法
查看>>
HDU3065 AC自动机
查看>>
BUAA_OO_第一次作业总结
查看>>
数据结构-第10周作业(二叉树的创建和遍历算法)
查看>>
Java日志框架(二)
查看>>
[转载]SQL Server 2008 R2安装时选择的是windows身份验证,未选择混合身份验证的解决办法...
查看>>
[转]橘子版V880问题汇总及解决办法
查看>>
JS内置对象练习(慕课网题目)
查看>>
jQuery学习-事件之绑定事件(五)
查看>>
5个提高效率的编程工作环境
查看>>
使用SQL语句操作数据
查看>>
如何在Vue项目中使用vw实现移动端适配
查看>>
阻止默认行为-event.preventDefault();
查看>>
[FZYZOJ 1889] 厨房救济
查看>>
写代码:实现用户输入用户名和密码,当用户名为seven且密码为123时,显示登录成功,否则失败,失败时允许重复输入三次。...
查看>>
浏览器,图片格式及特点
查看>>
【脚本语言】一个简易的语言的设计与实现
查看>>