序列变换

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(1≤T≤10),表示有多少组数据
每一组数据:
第一行输入一个N(1≤N≤105),表示数列的长度
第二行输入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
2015年百度之星程序设计大赛 - 初赛(2)

题解:

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

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

代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;
const int MAXN = 1e5 + 100;
int num[MAXN];
int dp[MAXN];
vector<int>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;
}

序列变换(Lis变形)相关推荐

  1. hdu 5256 序列变换 (LIS变形)

    序列变换 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  2. 1715: 序列变换(LIS变形)

    1715: 序列变换 时间限制: 1 Sec 内存限制: 128 MB [提交][状态][讨论版] 题目描述 我们有一个数列A1,A2-An,你现在要求修改数量最少的元素,使得这个数列严格递增.其中无 ...

  3. 杭电5256 序列变换(LIS)

    序列变换 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  4. 百度之星1005 序列变换(lis)

    序列变换 Time Limit: 20 Sec  Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contests/contest_show ...

  5. UVA 1471 Defense Lines (LIS变形)

    题意:删除原序列中的一段连续子序列,使得剩下的序列中存在一段最长连续子序列. 题解:LIS变形 我们用l[i]l[i]l[i]和r[i]r[i]r[i]记录往右以iii结尾和往左以iii开头的最长连续 ...

  6. 二分搜索 2015百度之星初赛1 HDOJ 5248 序列变换

    题目传送门 1 /* 2 二分搜索:在0-1e6的范围找到最小的max (ai - bi),也就是使得p + 1 <= a[i] + c or a[i] - c 3 比赛时以为是贪心,榨干智商也 ...

  7. 豪斯荷尔德变换及变形QR算法对矩阵进行奇异值分解VB算法

    '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ...

  8. hdu5256序列变换(非递减子序列)

    题意(中文直接粘吧) 序列变换 Problem Description     我们有一个数列A1,A2...An,你现在要求修改数量最少的元素,使得这个数列严格递增.其中无论是修改前还是修改后,每个 ...

  9. hdu5248序列变换(二分+贪心)基础题

    题意(中文的直接粘题意吧)                                                                                        ...

最新文章

  1. Facebook参与AI芯片设计大混战!
  2. JavaScript执行环境及作用域(一)——执行环境栈和作用域链机制
  3. 上海交大发布「人类行为理解引擎」:深度学习+符号推理,AI逐帧理解大片中每个动作...
  4. oracle 强制恢复,oracle数据库恢复
  5. java 数组中某个数出现的概率_剑指Offer解题报告(Java版)——排序数组中某个数的个数 38...
  6. Haproxy实现负载均衡
  7. SQL STUFF用法很有趣的语法
  8. 部署Zipkin分布式性能追踪日志系统的操作记录
  9. 谁有《线性系统理论习题与解答》郑大钟
  10. VsCode开发Flutter 连接夜神模拟器
  11. macbook M1 brew install失败
  12. 西北工业大学软件学院大数据技术实验(二)
  13. Python-波斯日历转换(日期转换)
  14. 前端高效开发必备——常用js框架和第三方插件
  15. pygame设计舒尔特方格游戏python舒尔特方格小程序
  16. 必应壁纸爬取 def
  17. BWA mem序列比对时出现:paired reads have different names 问题解决
  18. Docker-设置redis容器主从模式哨兵模式
  19. 电脑解压文件丢失怎么找回来?四种恢复方法
  20. 深度学习基础--SOFTMAX回归(单层神经网络)

热门文章

  1. Spring MVC RedirectAttributes的用法解决办法
  2. 对团队建设与管理的几点看法
  3. 全局组、域本地组、通用组到底有什么区别?它们之间的关系如何?
  4. 团队组建阶段,项目经理要做些什么?
  5. 折腾 | pytoch、cuda版本问题
  6. bee 字符串转int_Beego在views中格式化显示时间(int64转string)
  7. linux 8051 编译,[编译] 3、在Linux下搭建51单片机的开发烧写环境(makefile版)
  8. java swftools linux_swftools linux下安装
  9. springboot基本属性注入
  10. Redis删除副本节点