博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Codeforces 382C】Arithmetic Progression
阅读量:4325 次
发布时间:2019-06-06

本文共 4255 字,大约阅读时间需要 14 分钟。

【链接】

【题意】

让你在n个数字中再加入一个数字
使得这n+1个数字排序之后
相邻两个数字的差都相同

【题解】

注意相邻为0的情况 这种情况 只有全都相同才行 只有一种情况
然后就是样例里的a[i]-a[i-1]只有两种数字
然后较小的a[i]-a[i-1]有n-2个,较大的a[i]-a[i-1]有1个,然后较大的是较小的两倍
注意这些细节就好了

【代码】

import java.io.*;import java.util.*;public class Main {            static InputReader in;    static PrintWriter out;            public static void main(String[] args) throws IOException{        //InputStream ins = new FileInputStream("E:\\rush.txt");        InputStream ins = System.in;        in = new InputReader(ins);        out = new PrintWriter(System.out);        //code start from here        new Task().solve(in, out);        out.close();    }        static int N = (int)1e5;    static class Task{                int n;        int a[] = new int[N+10];        HashMap
dic = new HashMap<>(); public void solve(InputReader in,PrintWriter out) { n = in.nextInt(); for (int i = 1;i <= n;i++) a[i] = in.nextInt(); Arrays.sort(a, 1,n+1); if (n==1) { out.println(-1); }else if (n==2) { if (a[1]==a[2]) { out.println(1); out.println(a[1]); }else { if ( (a[1]+a[2])%2==0) { int temp = a[2]-a[1]; out.println(3); out.print((a[1]-temp)+" "+((a[1]+a[2])/2)+" "+(a[2]+temp) ); }else { int temp = a[2]-a[1]; out.println(2); out.println((a[1]-temp)+" "+(a[2]+temp)); } } }else { int temp = a[2]-a[1]; boolean ok = true; for (int i = 3;i <= n;i++) { if (a[i]-a[i-1]!=temp) { ok = false; } } if (ok) { if (temp==0) { out.println(1); out.println(a[1]); }else { out.println(2); out.println((a[1]-temp)+" "+(a[n]+temp)); } }else { for (int i = 2;i <= n;i++) { if (dic.containsKey(a[i]-a[i-1])) { int x = dic.get(a[i]-a[i-1]); dic.put(a[i]-a[i-1],x+1); }else { dic.put(a[i]-a[i-1], 1); } } if (dic.size()>2) { out.println(0); }else { Iterator it = dic.keySet().iterator(); int temp1 = (int)it.next(); int temp2 = (int)it.next(); if (temp1>temp2) { int xx = temp1;temp1 = temp2;temp2 = xx; } if ( (temp2 == temp1*2) && ( (int)dic.get(temp2) )==1 ) { out.println(1); for (int i = 2;i <= n;i++) { if (a[i]-a[i-1]==temp2) { out.println(a[i-1]+temp1); } } }else { out.println(0); } } } } } } static class InputReader{ public BufferedReader br; public StringTokenizer tokenizer; public InputReader(InputStream ins) { br = new BufferedReader(new InputStreamReader(ins)); tokenizer = null; } public String next(){ while (tokenizer==null || !tokenizer.hasMoreTokens()) { try { tokenizer = new StringTokenizer(br.readLine()); }catch(IOException e) { throw new RuntimeException(e); } } return tokenizer.nextToken(); } public int nextInt() { return Integer.parseInt(next()); } }}

转载于:https://www.cnblogs.com/AWCXV/p/10532561.html

你可能感兴趣的文章
小D课堂 - 零基础入门SpringBoot2.X到实战_第10节 SpringBoot整合定时任务和异步任务处理_43、SpringBoot2.x异步任务实战(核心知识)...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第11节 Logback日志框架介绍和SpringBoot整合实战_45、SpringBoot2.x日志讲解和Logback配置实战...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_1_02技术选型
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_汇总
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_2_01传统架构演进到分布式架构
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_2_02 微服务核心基础讲解
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_2_03常见的微服务框架
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_2_04微服务下电商项目基础模块设计...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-01 什么是微服务的注册中心
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-02CAP理论知识
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-03CAP原理、常见面试题
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-04 SpringCloud微服务核心组件Eureka介绍和闭源后影响...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-05 服务注册和发现Eureka Server搭建实战...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-06 服务注册和发现之Eureka Client搭建商品服务实战...
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_3-07 Eureka服务注册中心配置控制台问题处理...
查看>>
小马哥-Java 微服务实践 - Spring Boot 系列-01Java 微服务实践 - Spring Boot 系列(一)初体验...
查看>>
小马哥_汇总
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_4-01 常用的服务间调用方式讲解
查看>>
小D课堂 - 新版本微服务springcloud+Docker教程_4-02 微服务调用方式之ribbon实战 订单调用商品服务...
查看>>