zoukankan      html  css  js  c++  java
  • CF1110E Magic Stones 差分

    传送门


    将原数组差分一下,设(d_i = c_{i+1} - c_i)

    考虑在(i)位置的一次操作会如何影响差分数组

    (d_{i+1}' = c_{i+1} - (c_{i+1} + c_{i-1} - c_i) = c_i - c_{i-1} = d_i)

    (d_i' = (c_{i+1} + c_{i-1} - c_i) - c_{i-1} = c_{i+1} - c_i = d_{i+1})

    所以本质上一次操作交换了差分数组中的两个元素

    所以只需要判断差分数组中的每一个元素能否对应即可。注意还需要判断(c_1=t_1)

    #include<bits/stdc++.h>
    using namespace std;
    
    
    inline int read(){
        int a = 0;
        char c = getchar();
        bool f = 0;
        while(!isdigit(c)){
            if(c == '-')
                f = 1;
            c = getchar();
        }
        while(isdigit(c)){
            a = (a << 3) + (a << 1) + (c ^ '0');
            c = getchar();
        }
        return f ? -a : a;
    }
    
    const int MAXN = 1e5 + 7;
    int c[MAXN] , t[MAXN] , N; 
    
    int main(){
        N = read();
        for(int i = 1 ; i <= N ; ++i)
            c[i] = read();
        for(int i = 1 ; i <= N ; ++i)
            t[i] = read();
        if(c[1] != t[1]){
            puts("No");
            return 0;
        }
        for(int i = 1 ; i < N ; ++i){
            c[i] = c[i + 1] - c[i];
            t[i] = t[i + 1] - t[i];
        }
        sort(c + 1 , c + N);
        sort(t + 1 , t + N);
        for(int i = 1 ; i < N ; ++i)
            if(c[i] != t[i]){
                puts("No");
                return 0;
            }
        puts("Yes");
        return 0;
    }
    
  • 相关阅读:
    CentOS7的内核优化
    centos7 系统优化脚本
    Centos7之系统优化
    Jenkins安装
    Zabbix安装
    Systemd 入门教程:命令篇
    开源ERP系统Odoo搭建文档
    SSH详解
    使用pm2来保证Spring Boot应用稳定运行
    npm安装与使用
  • 原文地址:https://www.cnblogs.com/Itst/p/10356313.html
Copyright © 2011-2022 走看看