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. 使用vscode编辑markdown

    目录 markdown在vscode中的使用 标题 一级标题 二级标题 三级标题 四级标题 五级标题 六级标题 列表 图片 表格 网址 代码 文本样式 引用 目录 vscode中使用的插件推荐 截图工 ...

  2. docker .net core3.1 Dockerfile

    安装步骤和core 2.x 一样 看之前的随笔:Docker配置dotnet core项目 直接看Dockerfile FROM mcr.microsoft.com/dotnet/core/aspne ...

  3. 开发者进阶必备的9个Tips & Tricks!

    优秀的开发人员市场前景是十分广阔的,但想找到一份理想的工作,仅有代码知识是不够的.优秀的工程师应该是一个终身学习者.问题的创造性解决者,着迷于整个软件世界.要成为一名优秀的开发者,应该具备哪些品质并做 ...

  4. 4. Lighting 窗口

    Lighting 实现烘焙或者实时渲染都在这里设置,其他灯光或者反射探头的作用相当于允许 Lighting (窗口)烘焙或者实时渲染. 0bject: Lightmap Static: 把烘焙的对象设 ...

  5. echarts来显示世界地图和全国地图,并且可以下钻层级

    echarts来显示世界地图和全国地图,并且可以下钻层级 使用echarts来显示世界地图和全国地图,并且可以下钻层级 使用的技术 现有的功能 遇到的问题解决 总结 参考内容 直接来源码,地球资源包我 ...

  6. idea 中 maven 项目构建 webapp 无 src 目录以及提示无程序包的解决办法

    提示无程序包的解决方法 问题有可能出现在 IDE 版本上,问题版本是 2020.1,升级为 2020.3 后,tomcat 运行就不再提示无程序包的错误 之前尝试的解决办法 maven clean/i ...

  7. CF生化全模式全装备单机版安装教程(基于CSOL)

    喜欢玩CF单机版的朋友平时应该接触过一些基于CS1.6的单机版,但是这种版本有些特性就是:改了分辨率就容易进不去游戏:变为幽灵时被枪射击时会出现视角乱晃的情况:游戏过程中场景宏大变数多时容易突然退出回 ...

  8. allure标题样式错乱处理

    今天使用allure生成测试报告,感觉标题很不美观,查阅资料使用以下方法解决 不美观的报告标题: 解决方法: 找到这个py文件,小改源码 就是把这个方法直接返回空列表即可 修改后展示: 结束!下班!

  9. 安全测试-WEB安全渗透测试基础知识(三)

    1.3. 域名系统 1.3.1. 域名系统工作原理 DNS解析过程是递归查询的,具体过程如下: 用户要访问域名www.example.com时,先查看本机hosts是否有记录或者本机是否有DNS缓存, ...

  10. 【Frida】启动手机上的Frida插件

    运行以下命令可以保证Frida一直在手机上运行,不关机,Frida就不关 adb shell su -c "./data/local/frida-server-15.2.2-android- ...