博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Codeforces 946G]Almost Increasing Array
阅读量:4590 次
发布时间:2019-06-09

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

Description

给你一个长度为 \(n\) 的序列 \(A\) 。现在准许你删除任意一个数,删除之后需要修改最小的次数使序列单调递增。问最小次数。

\(1\leq n\leq 200000\)

Solution

注意到如果不要删除一个数的话,显然这就是一个模型问题了。只需要求出序列中每个数减去其位权,求出最长单调不下降子序列长度 \(len\) 。答案就是 \(n-len\)

但要删除一个数的话就不好直接做了,考虑问题出在了哪里。

因为删除一个数后,这个数之后的所有位权都 \(-1\) 。即实际上是对于删除的这个数,相当于断点,断点前每个数减去位权,断点后每个数减去(位权 \(-1\) )。再用相同的方法处理。

\(f_{i,1/0}\) 表示第 \(i\) 位及以前是否进行过“删数”操作,得到的最长不降序列长度。依旧可以用二分优化。

Code

//It is made by Awson on 2018.3.12#include 
#define LL long long#define dob complex
#define Abs(a) ((a) < 0 ? (-(a)) : (a))#define Max(a, b) ((a) > (b) ? (a) : (b))#define Min(a, b) ((a) < (b) ? (a) : (b))#define Swap(a, b) ((a) ^= (b), (b) ^= (a), (a) ^= (b))#define writeln(x) (write(x), putchar('\n'))#define lowbit(x) ((x)&(-(x)))using namespace std;const int N = 200000, INF = ~0u>>1;void read(int &x) { char ch; bool flag = 0; for (ch = getchar(); !isdigit(ch) && ((flag |= (ch == '-')) || 1); ch = getchar()); for (x = 0; isdigit(ch); x = (x<<1)+(x<<3)+ch-48, ch = getchar()); x *= 1-2*flag;}void print(int x) {if (x > 9) print(x/10); putchar(x%10+48); }void write(int x) {if (x < 0) putchar('-'); print(Abs(x)); }int n, f[N+5], g[N+5], ans, t, a[N+5];void work() { read(n); for (int i = 1; i <= n; i++) read(a[i]), f[i] = g[i] = INF; f[0] = g[0] = -INF; for (int i = 2; i <= n; i++) { t = upper_bound(f+1, f+n+1, a[i]-i+1)-f; ans = Max(ans, t); f[t] = a[i]-i+1; t = upper_bound(g+1, g+n+1, a[i-1]-i+1)-g; ans = Max(ans, t); g[t] = a[i-1]-i+1, f[t] = Min(f[t], g[t]); } writeln(n-1-ans);}int main() { work(); return 0;}

转载于:https://www.cnblogs.com/NaVi-Awson/p/8554364.html

你可能感兴趣的文章
HBase的安装与配置
查看>>
HBase实际应用中的性能优化方法
查看>>
HBase常用Shell命令
查看>>
HBase OpenTSDB
查看>>
NoSQL的四大类型
查看>>
Solr+HBase
查看>>
NoSQL 列族数据库
查看>>
NoSQL与关系数据库的比较
查看>>
NoSQL 图形数据库
查看>>
NoSQL 文档数据库
查看>>
nosql BASE
查看>>
从NoSQL到NewSQL数据库
查看>>
使用 MongoDB shell访问MongoDB
查看>>
MongoDB简介
查看>>
MongoDB 创建数据库
查看>>
MongoDB概念解析
查看>>
MongoDB Java
查看>>
MongoDB 插入文档
查看>>
UMP系统架构
查看>>
键值数据库
查看>>