链接:https://ac.nowcoder.com/acm/contest/7780/B 来源:牛客网
又是一年 CSP,机房的oier都在刷题,alan却在发呆想着小y,正巧忽然听到隔壁机房某神zlk熟悉的声音:“找规律就可以了吧,这个序列感觉很熟悉啊,就是1,2,4,6,11这其实就是一个a[i+1]-a[i]=i的序列哦,突然隔壁的声音大了起来,zlk,你好像有个数写错了(大雾)~ 课后,alan在纸上写下了这个题目,让szm做:给一个长度为n的序列a,你希望改最少的数,使得这个序列满足a[i+1]-a[i]=i吗?1<=i<n。
示例1
复制6 3 4 6 8 13 18
6 3 4 6 8 13 18复制1
1代码:
#include<bits/stdc++.h> using namespace std; #define ll long long const ll maxn=1e5+7; ll a[maxn],n,s; map<ll,ll>m; int main() { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } ll min1=0; for(int i=1;i<=n;i++) { s=0; ll u=a[i]-(i-1)*i/2; m[u]++; min1=max(min1,m[u]); } cout<<n-min1<<endl; return 0; }