c语言连续非递减子序列,最长非递减子序列的应用
Description
我们有一个数列A1,A2...An,你现在要求修改数量最少的元素,使得这个数列严格递增。其中无论是修改前还是修改后,每个元素都必须是整数。
请输出最少需要修改多少个元素。
Input
第一行输入一个$T (1 \leq T \leq 10)$,表示有多少组数据
每一组数据:
第一行输入一个$N (1 \leq N \leq 10^5)$,表示数列的长度
第二行输入N个数$A_1, A_2, ..., A_n$。
每一个数列中的元素都是正整数而且不超过$10^6$。
Output
对于每组数据,先输出一行
Case #i:
然后输出最少需要修改多少个元素。
Sample Input
2
2
1 10
3
2 5 4
Sample Output
Case #1:
0
Case #2:
1
给一个序列a , 最少改变多少元素使得其变为单调递增序列
对于这个序列,更换的最少就是找一个最长的不需要更换的子序列
所以就是求a[i] - i的最长非递减序列
for example:
1 4 8 2 3 4 5 9 10
如果求这个序列的最长递增子序列长度之后在n-len,明显是错误的,会是2
但是答案应该是3
#include
#include
#include
#include
#include
#include
#include
#define inf 0x3f3f3f3f
#define ll long long
using namespace std;
int ans[100010];
int find(int l,int r,int k)
{
while(r>=l)
{
int mid=(l+r)/2;
if(ans[mid]<=k)
l=mid+1;
else
r=mid-1;
}
return l;
}
int main()
{
int T;
cin>>T;
int tx=1;
while(T--)
{
int n;
cin>>n;
int len=1;
memset(ans,0,sizeof(ans));
for(int i=1;i<=n;i++)
{
int x;
scanf("%d",&x);
if(i==1)
{
ans[1]=x-i;
continue;
}
int minx=find(1,len,x-i);
ans[minx]=x-i;
if(minx>len)
len++;
}
cout<
cout<
}
return 0;
} 子序列
c语言连续非递减子序列,最长非递减子序列的应用相关推荐
- 字符串ababaaab的nextval数组值序列为_子序列解题模板:最长回文子序列
预计阅读时间:6 分钟 子序列问题是常见的算法问题,而且并不好解决. 首先,子序列问题本身就相对子串.子数组更困难一些,因为前者是不连续的序列,而后两者是连续的,就算穷举都不容易,更别说求解相关的算法 ...
- java最长回文子序列_算法--字符串:最长回文子序列
转自:labuladong公众号 子序列问题是常见的算法问题,而且并不好解决. 首先,子序列问题本身就相对子串.子数组更困难一些,因为前者是不连续的序列,而后两者是连续的,就算穷举都不容易,更别说求解 ...
- 平地起高楼之漫谈长非编码RNA
平地起高楼之漫谈长非编码RNA 关于长非编码,我还记得当时在生物化学课上,刘老师专门拿出了半节课向我们介绍长非编码RNA.正好当时也做了笔记,于是结合笔记和网上查阅的资料,简要的写写长非编码RNA. ...
- 动态规划(3):最长非递减子序列
题目 在一个数字序列中,找到一个最长的子序列(可以不连续),使得这个子序列是不下降(非 递减)的. 样例 输入 8 1 2 3 -9 3 9 0 11 输出 6 题解 最优子结构(举例):以3结尾的最 ...
- 动态规划 dp02 最长非降子序列问题 c代码
先看下题目: 给定一个由n个正整数组成的序列,从该序列中删除若干个整数,使剩下的整数组成非降子序列,求 最长的非降子序列. 例如,由12个正整数组成的序列为:48,16,45,47,52,46,36, ...
- DeepLncLoc:一种基于子序列嵌入的长非编码RNA亚细胞定位预测的深度学习框架
目录 摘要 结果: 可用性: 1.介绍 2.方法 2.1数据集 2.2仅使用 k-mer 特征编码 rna 序列的局限性 2.3. 随后嵌入 2.4. 网络架构 2.5评估指标 2.6实施细节 3.结 ...
- 面试题:求最长非重复子序列
题目:求字符串的最长非重复子序列.比如字符串"dabaccdeff",它的最长非重复子序列为"dabcef" 这道题目与 面试题35:第一个只出现一次的字符 非 ...
- 最长非降子序列(动态规划dp dynamic programming)
首先要理解一下什么叫做非降子序列 非降子序列,简单来说就是指给出一个数字序列,在不改变整体顺序的情况下摘出几个来组成一个子序列,这个序列满足从小到大的排序顺序. 所以,最长非降子序列,不难理解就是从这 ...
- 最长非下降子序列(O(nlogn))(offer收割)
题目 如题 思路 核心思想是,维护一个数组ends,它记录了长度为k的子序列的末尾元素的最小值.听起来很抽象,我们不妨手动演示一遍整个过程. 假设数组a={2,9,4,27,29,15,7 ...
最新文章
- Amazon Corretto技术细节探秘
- 基于matlab的信号去噪,基于matlab的信号去噪研究.doc
- Windows 技巧篇-电脑蓝光过滤,颜色校准调节蓝光,电脑源头过滤蓝光,保护眼睛,护眼软件原理
- jquery中的事件和动画
- CTF(pwn)堆利用 之 off by one
- fatjar打包mysql_一个简单的解压ZIP Excl文件---gt;按时间读取Excle文件,通过Fat jar打成jar相对应的添加到mysql数据库中。 - 明月 - ITeye博客...
- mysql blob 内容查看_这些被你忽视的MySQL细节,可能会让你丢饭碗!
- php解析html数组,HTML中如何处理PHP传递的三维数组
- leetcode 第五题 Longest Palindromic Substring (java)
- mysql 权限 备份还原,MYSQL学习笔记09:备份还原,用户权限,外键
- HIVE 命令行操作和参数指引
- Shiro安全框架面试题
- DSP eQEP正交编码
- 微信小程序:2022虎年全新头像框制作
- 2020年开始,中国程序员前景一片灰暗,是这样吗?
- 如何获取大数据行业高薪岗位offer?
- python如何进行md5解密_python写一个md5解密器
- bzoj1627 / P2873 [USACO07DEC]泥水坑Mud Puddles
- linux选was清除缓存,Linux清除缓存操作
- 关于LM3886TF
热门文章
- 学习笔记--asp.net页生命周期(转自msdn,仅为自己学习存储和有意读者使用)
- 并发测试工具_性能测试工具基本工作原理及基本操作流程
- OC 获取view相对位置_【全职业P4阶段世界BUFFS和药剂】BUFFS获取方法药剂自己查询出处...
- 组件是全局怎么修改样式_用一个落地项目,帮你掌握Sketch组件的制作思路
- Java 蓝桥杯 字母图形
- 华为GT3第一集-安装HAP
- 推荐系统学习(二)基于用户/物品的协同过滤算法(User-CF / Item-CF)
- 呆萌的图模型学习——基本概念(一)
- linux安装.AppImage后缀安装包
- 解决 ifconfig: command not found