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

    题意:

    一次操作选择1<i<n,使 ( c_{i'} = c_{i-1} +c_{i+1}-c_{i} )

    是否能做若干次操作,使每个 ( c_{i}=t_{i} )

    n<=1e5

    题解

    化简原式,

    (c_{i'}-c_{i-1}=c_{i+1}-c_{i} )

    (c_{i+1}-c_{i'}=c_{i}-c_{i-1} )

    即这三者之间的差分的数值不变,只是交换位置。

    那就判断所有的差分是否一样即可。

    代码如下:

     

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+5;
    int n,c[N],t[N],cx[N],tx[N];
    inline int read()
    {
        char c=getchar();
        int x=0,f=1;
        while(!isdigit(c)) {if(c=='-') f=-1;c=getchar();}
        while(isdigit(c)) {x=(x<<3)+(x<<1)+c-'0';c=getchar();}
        return x*f;
    }
    int main()
    {
        n=read();
        for(int i=1;i<=n;i++) c[i]=read(),cx[i]=c[i]-c[i-1];
        for(int i=1;i<=n;i++) t[i]=read(),tx[i]=t[i]-t[i-1];
        if(c[1]!=t[1]||c[n]!=t[n])
        {
            cout<<"No";
            return 0;
        }
        sort(cx+1,cx+n+1);
        sort(tx+1,tx+n+1);
        for(int i=1;i<=n;i++)
            if(cx[i]!=tx[i])
            {
                cout<<"No";
                return 0;
            }
        cout<<"Yes";
    }
    View Code

     

  • 相关阅读:
    整数反转问题--正确率极低
    May LeetCoding Challenge9 之 求方差
    May LeetCoding Challenge8 之 交叉相乘
    EXCEL上传DEMO
    三层BOM
    OO alv 获取选择列
    PS 项目创建
    读取EXCEL到内表
    SAP XML 到 内表
    BOM 复制功能
  • 原文地址:https://www.cnblogs.com/betablewaloot/p/12369499.html
Copyright © 2011-2022 走看看