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

本文共 1536 字,大约阅读时间需要 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;}

 

转载地址:http://pgzwo.baihongyu.com/

你可能感兴趣的文章
【CJOJ】Contest4 - A+B Series
查看>>
Python中四种交换两个变量的值的方法
查看>>
ora-01033:oracle initialization or shutdown in progress 解决方法
查看>>
移动自动化相关名词解释
查看>>
微信开发者工具 快捷键
查看>>
monkey测试===修改adb的默认端口
查看>>
AsyncTask和Handler处理异步消息
查看>>
Scheme 中的 pair 和 list 简述
查看>>
iOS AVAssetExportSession 视频剪切、合并、压缩
查看>>
我收藏的技术知识图(每张都是大图)
查看>>
Spring Boot制作启动图案
查看>>
《Linux内核设计与实现》读书笔记(十一)- 定时器和时间管理
查看>>
hdu Oil Deposits
查看>>
彻底理解javascript中的this指针
查看>>
SAS去空格
查看>>
Spring Cloud构建微服务架构(二)服务消费者
查看>>
这些老外的开源技术养活了一票国产软件
查看>>
Maven实战(六)--- dependencies与dependencyManagement的区别
查看>>
创业者应该有的5个正常心态(转)
查看>>
php模式设计之 注册树模式
查看>>