zoukankan      html  css  js  c++  java
  • Codeforces Round #568 (Div. 2) D. Extra Element

    链接:

    https://codeforces.com/contest/1185/problem/D

    题意:

    A sequence a1,a2,…,ak is called an arithmetic progression if for each i from 1 to k elements satisfy the condition ai=a1+c⋅(i−1) for some fixed c.

    For example, these five sequences are arithmetic progressions: [5,7,9,11], [101], [101,100,99], [13,97] and [5,5,5,5,5]. And these four sequences aren't arithmetic progressions: [3,1,2], [1,2,4,8], [1,−1,1,−1] and [1,2,3,3,3].

    You are given a sequence of integers b1,b2,…,bn. Find any index j (1≤j≤n), such that if you delete bj from the sequence, you can reorder the remaining n−1 elements, so that you will get an arithmetic progression. If there is no such index, output the number -1.

    思路:

    排序后,先检测一开头,或者以结尾开始检测,不满足等差数列跳过,判断跳过了几个,大于1则不能。

    代码:

    #include <bits/stdc++.h>
    using namespace std;
     
    typedef long long LL;
    const int MAXN = 2e5+10;
    int a[MAXN];
    map<int, int> Mp;
    int n;
     
    int Check(int fir, int sub)
    {
        int cnt = 0;
        int res = Mp[a[1]];
        for (int i = 1;i <= n;i++)
        {
            if (a[i] != fir)
            {
                cnt++;
                res = Mp[a[i]];
            }
            else
                fir += sub;
        }
        if (cnt > 1)
            return -1;
        else
            return res;
    }
     
    int main()
    {
        cin >> n;
        for (int i = 1;i <= n;i++)
            cin >> a[i], Mp[a[i]] = i;
        sort(a+1, a+1+n);
        if (n <= 3)
        {
            cout << 1 << endl;
            return 0;
        }
        int res1 = Check(a[1], a[2]-a[1]);
     
        int res2 = Check(a[n]-(n-2)*(a[n]-a[n-1]), a[n]-a[n-1]);
        if (res1 != -1)
            cout << res1 << endl;
        else if (res2 != -1)
            cout << res2 << endl;
        else
            cout << -1 << endl;
     
        return 0;
    }
    
  • 相关阅读:
    机器学习
    机器学习
    JavaWeb之tomcat安装、配置与使用(一)
    Tomcat安装、配置和部署笔记
    Java配置----JDK开发环境搭建及环境变量配置
    安装SQL2012
    SQLServer 数据库变成单个用户后无法访问问题的解决方法
    临时记录
    SQL Server 动态生成数据库所有表Insert语句
    SQL2000查看表的大小
  • 原文地址:https://www.cnblogs.com/YDDDD/p/11155421.html
Copyright © 2011-2022 走看看