博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
序列变换(Lis变形)
阅读量:4647 次
发布时间:2019-06-09

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

序列变换

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1200    Accepted Submission(s): 448

Problem Description
我们有一个数列A1,A2...An,你现在要求修改数量最少的元素,使得这个数列严格递增。其中无论是修改前还是修改后,每个元素都必须是整数。 请输出最少需要修改多少个元素。
 

 

Input
第一行输入一个
T(1T10),表示有多少组数据
每一组数据:
第一行输入一个N(1N105),表示数列的长度
第二行输入N个数A1,A2,...,An
每一个数列中的元素都是正整数而且不超过106
 

 

Output
对于每组数据,先输出一行
Case #i:
然后输出最少需要修改多少个元素。
 

 

Sample Input
2 2 1 10 3 2 5 4
 

 

Sample Output
Case #1: 0 Case #2: 1
 

 

Source

题解:

改变系列使成为单调递增子序列;那么只需要dp[i]-dp[j]>=i-j就好了;再加上单调递增子序列的求法;

dp[i]-dp[j]>=i-j即为dp[i]-i>=dp[j]-j;

代码:

#include
#include
#include
#include
#include
#include
using namespace std;const int MAXN = 1e5 + 100;int num[MAXN];int dp[MAXN];vector
vec;/*int main(){ int T, N, kase = 0; scanf("%d", &T); while(T--){ vec.clear(); scanf("%d", &N); for(int i = 0; i < N; i++){ scanf("%d", num + i); num[i] -= i; if(upper_bound(vec.begin(), vec.end(), num[i]) == vec.end()){ vec.push_back(num[i]); } else{ int p = upper_bound(vec.begin(), vec.end(), num[i]) - vec.begin(); vec[p] = num[i]; } } printf("Case #%d:\n%d\n", ++kase, N - vec.size()); } return 0;}*/int main(){ int T, N, kase = 0; scanf("%d", &T); while(T--){ scanf("%d", &N); memset(dp, 0, sizeof(dp)); int ans = 0; for(int i = 0; i < N; i++){ scanf("%d", num + i); for(int j = 0; j < i; j++){ if(num[i] - num[j] >= i - j){ dp[i] = dp[j] + 1; ans = max(ans, dp[i]); } } } printf("Case #%d:\n%d\n", ++kase, N - ans - 1); } return 0;}

 

转载于:https://www.cnblogs.com/handsomecui/p/5373794.html

你可能感兴趣的文章
Dapper基础用法
查看>>
一步步学习SPD2010--第九章节--使用可重用工作流和工作流表单(1)--创建和使用可重用工作流...
查看>>
客户端存储
查看>>
实验五 burpsuite重放攻击实验
查看>>
POJ 3624 Charm Bracelet 0-1背包
查看>>
React 使用browserHistory项目访问404问题
查看>>
div动态消失的动画效果
查看>>
Fragment:关于Avoid non-default constructors in fragments的错误
查看>>
[Contest]2017 ACM/ICPC Asia Regional Shenyang Online(01 03 07 09 10 11待补)
查看>>
CentOS 6.5系统安装配置图解教程
查看>>
Atitit 基于dom的游戏引擎
查看>>
Atitit 硬件 软件 的开源工作 差异对比
查看>>
requestAnimationFrame
查看>>
HATEOAS
查看>>
APUE 12.7 取消选项
查看>>
思杰20140522
查看>>
02、MySQL—数据库基本操作
查看>>
团队项目评测
查看>>
心脏与阴影,求阴影部分
查看>>
范式的数据库具体解释
查看>>