zoukankan      html  css  js  c++  java
  • codeforce978C-Almost Arithmetic Progression+暴力,枚举前两个数字的情况

    传送门:http://codeforces.com/contest/978/problem/D

    题意:求变为等差数列,最小要改动的数字个数;

    思路:暴力,这道题只用枚举前面两个数字的情况就ok,反思自己在看到这道题的时候各种找规律。

    复杂的是3*3*n,我看到群里说的复杂度,内心才恍然大悟。

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <string>
    #include <vector>
    #include <map>
    #include <set>
    #include <queue>
    #include <list>
    #include <iterator>
    #include <cmath>
    using namespace std;
    
    #define lson (l , mid , rt << 1)
    #define rson (mid + 1 , r , rt << 1 | 1)
    #define debug(x) cerr << #x << " = " << x << "
    ";
    #define pb push_back
    
    typedef long long ll;
    
    /*-----------------show time----------------*/
    
    const int maxn = 1e5+9;
    int n;
    ll a[maxn];
    ll abb(ll x)
    {
        return x>0?x:-x;
    }
    int main(){
        scanf("%d",&n);
        for(int i=1; i<=n; ++i)
        {
            scanf("%lld", &a[i]);
        }
        int ans = n+1;
        for(int u = -1; u<=1; u++)
        {
            for(int v=-1; v<=1; v++)
            {
                ll tmp = a[2]+v - (a[1] + u);
                int flag = 1,cnt = 0;
                if(u!=0)cnt++;
                if(v!=0)cnt++;
                for(int i=3; i<=n; i++)
                {
                    if(abb(a[i] - (a[1]+u + (i-1)*tmp))>1)
                    {
                        flag = 0;
                        break;
                    }
                    else if(a[i] - (a[1]+u + (i-1)*tmp)!=0){
                        cnt++;
                    }
                }
                if(flag)ans = min(ans,cnt);
            }
        }
        if(ans==n+1)puts("-1");
        else printf("%d
    ",ans);
        return 0;
    }
  • 相关阅读:
    剑指offer 面试26题
    剑指offer 面试25题
    剑指offer 面试24题
    剑指offer 面试23题
    剑指offer 面试22题
    剑指offer 面试19题
    剑指offer 面试20题
    剑指offer 面试21题
    剑指offer 面试18题
    剑指offer 面试17题
  • 原文地址:https://www.cnblogs.com/ckxkexing/p/9033832.html
Copyright © 2011-2022 走看看