题目链接:https://vjudge.net/problem/HDU-5256

题意:给一个数列,每一个数都不相同且为整数,现求,最少需要修改多少次才能使该数列为严格上升的。

思路:首先,对于一个严格上升的整数数列a,一定有a[i]>=a[i-1]+1,所以,a[i]-i>=a[i-1]-(i-1),以此为线索,我们生成一个新数列b[i]=a[i]-i,则b[i]>=b[i-1],换句话说,a数列严格递增,等价于b数列不下降,因此,n-b的最长上升子序列长度即为最小修改次数。

代码如下:

 #include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
using namespace std;
const int max_v=;
const int INF=;
int dp[max_v],n,a[max_v]; int solve(){
memset(dp,0x3f,sizeof(dp));
for(int i=;i<n;i++)
*upper_bound(dp,dp+n,a[i])=a[i];
return (lower_bound(dp,dp+n,0x3f3f3f)-dp);
}
int main(){
int t;
scanf("%d",&t);
for(int i=;i<=t;i++){
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&a[i-]);
a[i-]=a[i-]-i+;
}
printf("Case #%d:\n%d\n",i,n-solve());
}
return ;
}

最新文章

  1. centos中yum安装mysql路径
  2. JAVA 1.4 算术运算
  3. Socket通信代码(原理)
  4. eclipse插件 代码提示和着色
  5. input autocomplete 下拉提示+支持中文
  6. Installshield脚本拷贝文件常见问题汇总
  7. Visual Studio Live Share不完全指北
  8. sqlserver 发送http请求
  9. 在保存Bitmap的时候出现“GDI出现一般性错误”
  10. Windows核心编程:第7章 线程调度、优先级和关联性
  11. 开发认为不是bug,你该如何处理?
  12. 将数组划分成连续子序列 Split Array into Consecutive Subsequences
  13. WebClient类
  14. JS 操作 file标签只上传照片
  15. Promise/Deferred
  16. Android实现仿qq侧边栏效果
  17. GO1.6语言学习笔记2-安装配置及代码组织
  18. Linux修改Oracle用戶
  19. BZOJ4584 &amp; 洛谷3643 &amp; UOJ204:[APIO2016]划艇——题解
  20. 【Java】qatools.properties

热门文章

  1. CF1188B Count Pairs
  2. tab切换里面做轮播图
  3. Webpack 核心模块 tapable 解析(转)
  4. OpenFOAM中的基本变量快速认知【转载】
  5. GO make&amp;new区别
  6. thymeleaf 与shiro 整合错误
  7. C# ASP.NET 控制windows服务的 开启和关闭 以及重启
  8. qt 添加程序插件目录
  9. 网络中的tarpit/tar pit
  10. 【Java】LinkedHashMap