zoukankan      html  css  js  c++  java
  • 【Codeforces Global Round 1 E】Magic Stones

    【链接】 我是链接,点我呀:)
    【题意】

    你可以把c[i]改成c[i+1]+c[i-1]-c[i] (2<=i<=n-1) 问你能不能把每一个c[i]都换成对应的t[i];

    【题解】

    ```cpp d[i] = c[i+1]-c[i]; (1<=i<=n-1)
    		change c[i]
    		
    		c[i]' = c[i+1]+c[i-1]-c[i];
    		
    		d[i-1] = c[i]'-c[i-1];
    		       = c[i+1]+c[i-1]-c[i]-c[i-1] == c[i+1]-c[i] = d[i];
    		
    		d[i] = c[i+1]-c[i]'
    			 = c[i+1]-c[i+1]-c[i-1]+c[i]
    			 = c[i] - c[i-1];
    			 = d[i-1];
    也就是说对2..n-1进行操作的话
    就是把相邻的d的值交换一下
        显然这样的交换能让d变成任意顺序
    因此,只要c[1]==d[1]并且c[n]==d[n]
    然后排序后的c和排序后的d相同的话,就ok.
    

    这里必须要用Integer的equals方法比较才不会超时。。
    直接用int的a[i]!=b[i]会超时>_<

    </font>
    
    
    <font color = black size = 6> 【代码】</font>
    ```cpp
    import java.io.*;
    import java.util.*;
    
    //code start from here
    /*
    	d[i] = c[i+1]-c[i]; (1<=i<=n-1)
    	
    	change c[i]
    	
    	c[i]' = c[i+1]+c[i-1]-c[i];
    	
    	d[i-1] = c[i]'-c[i-1];
    	       = c[i+1]+c[i-1]-c[i]-c[i-1] == c[i+1]-c[i] = d[i];
    	
    	d[i] = c[i+1]-c[i]'
    		 = c[i+1]-c[i+1]-c[i-1]+c[i]
    		 = c[i] - c[i-1];
    		 = d[i-1];
     */
    
    public class Main {
    	
    	final static int N = (int)1e5;
    	static InputReader in;
    	static PrintWriter out;
    	static int n;
    	static Integer c[],t[],d1[],d2[];
    		
    	public static void main(String[] args) throws IOException{
    		in = new InputReader();
    		//out = new PrintWriter(System.out);
    		c = new Integer[N+10];t = new Integer[N+10];
    		d1 = new Integer[N+10]; d2 = new Integer[N+10];
    		
    
    		n = in.nextInt();
    		for (int i = 1;i <= n;i++) c[i] = in.nextInt();
    		for (int i = 1;i <= n;i++) t[i] = in.nextInt();
    		if (!c[1].equals(t[1]) || !c[n].equals(t[n])){
    			System.out.println("No");
    			return;
    		}
    		for (int i = 1;i <= n-1;i++) d1[i] = c[i+1]-c[i];
    		for (int i = 1;i <= n-1;i++) d2[i] = t[i+1]-t[i];
    		Arrays.sort(d1, 1,n);
    		Arrays.sort(d2, 1,n);
    		for (int i = 1;i <= n-1;i++)
    			if (!d1[i].equals(d2[i])) {
    				System.out.println("No");
    				return;
    			}
    		System.out.println("Yes");
    	}
    
    	static class InputReader{
    		public BufferedReader br;
    		public StringTokenizer tokenizer;
    		
    		public InputReader() {
    			br = new BufferedReader(new InputStreamReader(System.in),32768);
    			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());
    		}
    	}
    }
    
  • 相关阅读:
    文件名中含有空格读取时产生的异常
    R 常用清洗函数汇总
    Fluid 0.4 新版本正式发布:支持数据预热,优化小文件场景
    阿里云 Serverless 再升级,从体验上拉开差距
    Dubbo-go 源码笔记(二)客户端调用过程
    高质量的缺陷分析:让自己少写 bug
    微服务框架 Go-Micro 集成 Nacos 实战之服务注册与发现
    OpenYurt 深度解读:如何构建 Kubernetes 原生云边高效协同网络?
    在大规模 Kubernetes 集群上实现高 SLO 的方法
    双十一购物节,Nacos 1.4.0 + Go SDK 1.0.1发布
  • 原文地址:https://www.cnblogs.com/AWCXV/p/10357682.html
Copyright © 2011-2022 走看看