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

题意:给一个序列,移除一个数然后排序后使得序列成为等差数列,求移除的下标。

解法:

先排序,把所有差值扔到map里,显然,移除一个数最多去掉两个差值,所以map.size-2不能大于1.

然后遍历数组,修改map检查,或遍历map的差值,检查数组均可,这里选择遍历map检查数组更好写。

但有一个坑点,如果数组排序后本身是等差数列,则移除首项,注意!!这里的首项是排序后的,应该输出排序前的id,不能直接输出1.

#include<bits/stdc++.h>
#define sz(v) (int)v.size() using namespace std; typedef long long ll;
const int maxn=1000100;
const int INF=(1<<29); int n;
struct Node{
ll x;
int id;
friend bool operator<(Node A,Node B){
return A.x<B.x;
}
};Node p[maxn];
map<ll,int> mp; int check(ll d){
// 1
int cnt=0;
ll t=p[1].x;
vector<int> v;
for(int i=1;i<=n;i++){
if(p[i].x!=t) cnt++,v.push_back(p[i].id);
else t+=d;
}
if(cnt==0) return p[1].id;
if(cnt==1) return v[0]; // n
cnt=0;t=p[n].x;v.clear();
for(int i=n;i>=1;i--){
if(p[i].x!=t) cnt++,v.push_back(p[i].id);
else t-=d;
}
if(cnt==0) return p[1].id;
if(cnt==1) return v[0]; return -1;
} void solve(){
mp.clear();
for(int i=1;i<=n;i++) cin>>p[i].x,p[i].id=i;
sort(p+1,p+n+1);
for(int i=2;i<=n;i++) mp[p[i].x-p[i-1].x]++;
if(n<=3){
puts("1");return;
}
if(sz(mp)-2>1){
puts("-1");return;
}
for(map<ll,int>::iterator it=mp.begin();it!=mp.end();++it){
int index=check(it->first);
if(index!=-1){
cout<<index<<endl;return;
}
}
puts("-1");
} int main(){
// freopen("in.txt","r",stdin);
while(cin>>n) solve();
return 0;
}

百题计划-2 codeforces1185D Extra Element 暴力的更多相关文章

  1. 【第一期百题计划进行中,快来打卡学习】吃透java、细化到知识点的练习题及笔试题,助你轻松搞定java

    [快来免费打卡学习]参与方式 本期百题计划开始时间:2022-02-09,今日打卡题已在文中标红. 0.本文文末评论区打卡,需要登录才可以打卡以及查看其他人的打卡记录 1.以下练习题,请用对应的知识点 ...

  2. Python百题计划

    一.基础篇 想要像类似执行shell脚本一样执行Python脚本,需要在py文件开头加上什么?KEY:#!/usr/bin/env python Python解释器在加载 .py 文件中的代码时,会对 ...

  3. python 百题计划

    一.基础篇 想要像类似执行shell脚本一样执行Python脚本,需要在py文件开头加上什么?KEY:#!/usr/bin/env python Python解释器在加载 .py 文件中的代码时,会对 ...

  4. bzoj3208: 花神的秒题计划Ⅰ

    3208: 花神的秒题计划Ⅰ Time Limit: 16 Sec  Memory Limit: 128 MBSubmit: 323  Solved: 211[Submit][Status] Desc ...

  5. BZOJ第一页刷题计划

    BZOJ第一页刷题计划 已完成:67 / 90 [BZOJ1000]A+B Problem:A+B: [BZOJ1001][BeiJing2006]狼抓兔子:最小割: [BZOJ1002][FJOI2 ...

  6. bzoj 3208 花神的秒题计划I

    bzoj 3208 花神的秒题计划I Description 背景[backboard]: Memphis等一群蒟蒻出题中,花神凑过来秒题-- 描述[discribe]: 花花山峰峦起伏,峰顶常年被雪 ...

  7. Running to the End(Codeforces & AtCoder 百套计划)

    ...Reserved for the future... 仿照xxy dalao的CF&CC百套计划,做了一个Codeforces & AtCoder 百套计划,按这个速度刷下去,每 ...

  8. DP百题练(一)

    目录 DP百题练(一) 线性 DP 简述 Arithmetic Progressions [ZJOI2006]物流运输 LG1095 守望者的逃离 LG1103 书本整理 CH5102 移动服务 LG ...

  9. 【NOIP2015模拟11.4】JZOJ8月6日提高组T1 刷题计划

    [NOIP2015模拟11.4]JZOJ8月6日提高组T1 刷题计划 题目 题解 题意 有\(n\)道题,编号为1~\(n\) 给出\(m\)次操作 每次操作有3种类型 1 \(x\) 表示交了\(A ...

  10. 【百题留念】hdoj 1524 A Chess Game(dfs + SG函数应用)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1524 #include<stdio.h> #include<cstring> ...

随机推荐

  1. MyBatis 查询的条目与预期的不一致

    预期查询的数据条目是 4 条: 但是 MyBatis 查询出来的结果只有 2 条数据: resultMap 开启了 autoMapping 功能,就不需要多余地添加 result.下面是错误的映射操作 ...

  2. 02#Vue3 Transition 过渡:切换路由组件

    复习作用域插槽 组件可以被插入些许节点作为其子节点,插槽<slot>就是一个接口(或桥梁)引导这些节点进入组件.这些节点应该被渲染到组件里的具体哪个位置,就是具名插槽的作用. 就像是给手机 ...

  3. 在Django中显示MySQL语句

    在setting中添加以下内容 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console' ...

  4. Vue进度条组件

    1.进度条颜色是渐变的 <template> <div id="progress_bar" ref="myChart"></div ...

  5. C++语言程序设计实验一 类与对象

    Complex.hpp文件源码: #include <iostream> using namespace std; class Complex { public: Complex(floa ...

  6. [Unity]利用Mesh绘制简单的可被遮挡,可以探测的攻击指示器

    最近做一个小游戏的Demo,最终的效果是这样的 主要是利用Mesh绘制三角形作为显示,然后使用后处理来制作探灯,注意,性能一般,仅仅适合小游戏 分为3步 1:利用mesh绘制三角形,原理很简单,利用三 ...

  7. linux中用户和用户组的概念

    大家好,我们继续来上linux课程,这节课我们从以下几点来进行讲解: Linux权限的概念: UID相关概念 用户和用户组的关系 用户和账户的区别 Linux是一个多用户多任务的的操作系统,很多时候, ...

  8. go语言 cmd执行命令,遇到空格或者双引号无法执行成功的解决方案

    大部分go执行cmd命令都是,我也是这样写的 package main import ( "fmt" "os/exec" ) func main() { cmd ...

  9. Java面向对象之static关键字详解

    static关键字详解 package OOP.Demo10; public class Person { //2:赋初值 { System.out.println("匿名代码块" ...

  10. 深度学习PyTorch入门(1):3060 Pytorch+pycharm环境搭建

    WIN10, NVIDIA GeForce RTX 3060 python 3.7, CUDAv11.1.1, PyTorch 1.9, PyCharm 1.安装anacodah和PyCharm:   ...