修改数组
给出一个整数数组A,你可以将任何一个数修改为任意一个正整数,最终使得整个数组是严格递增的且均为正整数。问最少需要修改几个数?
Input
第1行:一个数N表示序列的长度(1 <= N <= 100000)。
第2 - N + 1行:每行1个数,对应数组元素。(0 <= A[i] <= 10^9)
Output
输出最少需要修改几个数使得整个数组是严格递增的。
Input示例
5
1
2
2
3
4
Output示例
3

分析:a[i]-i<=a[j]-j(i<j),并且a[i]-i>=0,在此基础上对他求最长不降子序列即可;代码:
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <climits>
#include <cstring>
#include <string>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <vector>
#include <list>
#define rep(i,m,n) for(i=m;i<=n;i++)
#define rsp(it,s) for(set<int>::iterator it=s.begin();it!=s.end();it++)
#define mod 1000000007
#define inf 0x3f3f3f3f
#define vi vector<int>
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define ll long long
#define pi acos(-1.0)
#define pii pair<int,int>
#define Lson L, mid, rt<<1
#define Rson mid+1, R, rt<<1|1
const int maxn=1e5+10;
using namespace std;
ll gcd(ll p,ll q){return q==0?p:gcd(q,p%q);}
ll qpow(ll p,ll q){ll f=1;while(q){if(q&1)f=f*p;p=p*p;q>>=1;}return f;}
int n,m,k,t;
multiset<int>p;
multiset<int>::iterator it;
void add(int x)
{if(x<0)return;it=p.upper_bound(x);if(it!=p.end())p.erase(it);p.insert(x);
}
int main()
{int i,j;scanf("%d",&n);rep(i,1,n)scanf("%d",&j),add(j-i);printf("%d\n",n-p.size());//system("Pause");return 0;
}

转载于:https://www.cnblogs.com/dyzll/p/5880419.html

51nod 修改数组相关推荐

  1. 51Nod 1294 修改数组 —— LIS

    题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1294 1294 修改数组  题目来源: HackerRank ...

  2. C++ 笔记(08)— 数组(数组的声明、初始化、访问及修改数组元素)

    数组具有如下特点: 数组是一系列元素: 数组中所有元素的类型都相同: 所有的数组都是由连续的内存位置组成.最低的地址对应第一个元素,最高的地址对应最后一个元素. 1. 一维数组 1.1 声明数组 要声 ...

  3. 修改数组的值和多维数组排序

    foreach($ret as $key => $value) { //将数组元素中为空地补0,且添加sum元素的计算,注意修改数组的值,需要$key定位到是数组的哪一个地方需要修改,而不能简单 ...

  4. 51nod 1270 数组的最大代价

    1270 数组的最大代价 题目来源: HackerRank 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 数组A包含N个元素A1, A2......AN.数组B包 ...

  5. php foreach 修改数组,php如何使用foreach修改数组

    php foreach修改数组的方法:首先创建一个PHP示例文件:然后通过foreach语句"foreach($array as $k => $v){$v = 1;}"修改指 ...

  6. B10_NumPy数组操作、修改数组形状、翻转数组、修改数组维度、连接数组、分割数组、数组元素的添加与删除

    NumPy数组操作 Numpy 中包含了一些函数用于处理数组,大概可分为以下几类: 修改数组形状 翻转数组 修改数组维度 连接数组 分割数组 数组元素的添加与删除 修改数组形状 函数 描述 resha ...

  7. B09_NumPy迭代数组(控制遍历顺序,修改数组中元素的值,使用外部循环,广播迭代)

    NumPy迭代数组 NumPy 迭代器对象 numpy.nditer 提供了一种灵活访问一个或者多个数组元素的方式. 迭代器最基本的任务的可以完成对数组元素的访问. 接下来我们使用arange()函数 ...

  8. jQuery修改数组$.map

    $.map() :用于修改数组 第一个参数是哪个对象 第二个参数是修改函数(会自己遍历所有的) $(function () { var arr = [ "a", "b&q ...

  9. PostgreSQL 多重含义数组检索与条件过滤 (标签1:属性, 标签n:属性) - 包括UPSERT操作如何修改数组、追加数组元素

    摘要: 标签 PostgreSQL , 多重函数数组 , UDF索引 , 过滤 , 文本处理 背景 PG的数组类型,被广泛应用于 画像系统 , 标签系统. 在一些业务重建中,对数组内容的定义往往包含了 ...

最新文章

  1. 《课程的反思与重建--我们需要什么样的课程观》 心得体会
  2. 成功解决pandas读取文件中不读取第一索引列
  3. 2013\Province_Java_B\1.世纪末的星期
  4. 视频传输面临的挑战和解决之道
  5. export LD_LIBRARY_PATH 的使用
  6. 【C语言】数组名作函数参数完成数据的升序排列
  7. intellij Find Usage 查找符号使用快捷键alt + f7在ubuntu下无法使用的解决方法
  8. [转载]JS语法字典
  9. 运行vue遇到的坑(续更
  10. 简单工厂模式(静态工厂方法模式)
  11. mysql 怎么加读锁_MYSQL—加写锁,加读锁,解锁
  12. html表格边框线变为1条线,HTML表格边框设为单实线
  13. 【安全知识分享】重磅|雨季安全生产教育.pptx(附下载)
  14. ITK入门教程(12)点集之得到存储的点
  15. 【java_设计模式】建造者模式
  16. SG3525频率和占空比参数的选取
  17. openharmony容器组件之Refresh
  18. python 怎么将数字转大写_Python将数字转化为中文大写的实例代码
  19. 17种数据可视化图表,有哪些适用场景?
  20. 安卓开发环境搭建和手动打包总结

热门文章

  1. 奠定了整个计算机科学的基础是什么,冯 诺依曼对计算机科学发展所作的贡献是什么...
  2. GCC中的分支预测(likely和unlikey)
  3. 【深度学习入门到精通系列】目标检测评估之P-R曲线深入理解
  4. 【编译原理】关于NFA和DFA-集合定义的探索
  5. python【蓝桥杯vip练习题库】ALGO-50 数组查找及替换
  6. 怎么升级浏览器_下载的chrome无法访问此网站怎么解决
  7. 如何做好网络推广浅析新手对网站SEO内链该如何优化?
  8. 专业网络推广浅析单页面网站如何高效做SEO优化?
  9. 网站排名在首位后,为什么还要继续做SEO?
  10. 网络推广外包——网络推广外包指出新站上线前一定要做好自我检测