题目链接


听dalao说很nb,做做看(然而不小心知道题解了)。

\(Description\)

给定长为\(n\)的序列\(A_i\)和\(B_i\)。你可以进行任意多次操作,每次操作任选一个\(i\in[2,n-1]\),把\(A_i\)变成\(A_{i-1}+A_{i+1}-A_i\)。

求能否将序列\(A_i\)变成\(B_i\)。

\(n\leq10^5\)。

\(Solution\)

\(A_i\to A_{i-1}+A_{i+1}-A_i\)这个形式很有趣,求出\(A_i\)的差分序列\(d_i\)试试看。

令\(d_{i-1}=A_i-A_{i-1},\ d_i=A_{i+1}-A_i\)。

如果变换\(A_i\),那么\(d_{i-1}\)会变成\(A_{i+1}-A_i=d_i\),\(d_i\)会变成\(A_i-A_{i-1}=d_{i-1}\)。

也就是我们可以任意交换\(A_i\)的差分序列\(d_i\)。

所以再求出\(B_i\)的差分序列\(d_i'\),判断\(d_i\)能否变成\(d_i'\),再判一下\(A_1\)是否等于\(B_1\)即可。


//46ms	900KB
#include <cstdio>
#include <cctype>
#include <algorithm>
#define gc() getchar()
typedef long long LL;
const int N=1e5+5; int d1[N],d2[N]; inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-48,c=gc());
return now;
}
inline bool Check(const int n)
{
for(int i=1; i<n; ++i) if(d1[i]!=d2[i]) return 0;
return 1;
} int main()
{
const int n=read();
int A1=read();
for(int i=1,pre=A1,now; i<n; ++i) d1[i]=(now=read())-pre, pre=now;
int B1=read();
for(int i=1,pre=B1,now; i<n; ++i) d2[i]=(now=read())-pre, pre=now;
std::sort(d1+1,d1+n), std::sort(d2+1,d2+n);
puts(A1==B1&&Check(n)?"Yes":"No"); return 0;
}

Codeforces.1110E.Magic Stones(思路 差分)的更多相关文章

  1. Magic Stones CodeForces - 1110E (思维+差分)

    E. Magic Stones time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  2. 【CF1110E】 Magic Stones - 差分

    题面 Grigory has n n magic stones, conveniently numbered from \(1\) to \(n\). The charge of the \(i\)- ...

  3. CodeForces - 1110E-Magic Stones(差分+思维)

    Grigory has nn magic stones, conveniently numbered from 11 to nn. The charge of the ii-th stone is e ...

  4. E. Magic Stones CF 思维题

    E. Magic Stones time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  5. CF 1110 E. Magic Stones

    E. Magic Stones 链接 题意: 给定两个数组,每次可以对一个数组选一个位置i($2 \leq i \leq n - 1$),让a[i]=a[i-1]+a[i+1]-a[i],或者b[i] ...

  6. 【Codeforces 1110E】Magic Stones

    Codeforces 1110 E 题意:给定两个数组,从第一个数组开始,每次可以挑选一个数,把它变化成左右两数之和减去原来的数,问是否可以将第一个数组转化成第二个. 思路: 结论:两个数组可以互相转 ...

  7. CF1110E Magic Stones 差分

    传送门 将原数组差分一下,设\(d_i = c_{i+1} - c_i\) 考虑在\(i\)位置的一次操作会如何影响差分数组 \(d_{i+1}' = c_{i+1} - (c_{i+1} + c_{ ...

  8. Codeforces 1110E (差分)

    题面 传送门 分析 一开始考虑贪心和DP,发现不行 考虑差分: 设d[i]=c[i+1]-c[i] (i<n) 那么一次操作会如何影响差分数组呢? \(c[i]'=c[i+1]+c[i-1]-c ...

  9. 【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]; [题解] d[ ...

随机推荐

  1. java----作用域

    代码块: public class Demo { public static void main(String[] args){ Test t = new Test(); Test t1 = new ...

  2. 在组件放使用v-model和slot插槽的简单实用

    封装的组件(SelectDefault.vue文件): <template> <div class="select-default"> <label& ...

  3. selenium +python webdriver运行时报错cannot find Chrome binary

    今日在公司电脑运行自动化测试脚本,出现cannot find Chrome binary报错 百思不得其解,排错后发现应该是电脑以前有配置driver文件路径,driver所在文件路径已变更,现pyt ...

  4. C++ GetUserName()

    关于函数“GetUserName()”,参见:https://msdn.microsoft.com/en-us/library/windows/desktop/ms724432(v=vs.85).as ...

  5. jQuery 常用的方法

    <!DOCTYPE html><html lang="en"><head> <meta charset="utf-8" ...

  6. jmeter BeanShell实例-----两个变量之间的断言对比

    jmeter BeanShell实例-----两个变量之间的断言对比 在jmeter的中,断言没法对两个变量的进行对比后判断,只能使用Bean Shell断言来进行,总是有人来问怎么写呢.这里写一个简 ...

  7. 论文阅读笔记三十一:YOLO 9000: Better,Faster,Stronger(CVPR2016)

    论文源址:https://arxiv.org/abs/1612.08242 代码:https://github.com/longcw/yolo2-pytorch 摘要 本文提出YOLO9000可以检测 ...

  8. 论文阅读笔记四:CTPN: Detecting Text in Natural Image with Connectionist Text Proposal Network(ECCV2016)

    前面曾提到过CTPN,这里就学习一下,首先还是老套路,从论文学起吧.这里给出英文原文论文网址供大家阅读:https://arxiv.org/abs/1609.03605. CTPN,以前一直认为缩写一 ...

  9. Python函数之递归函数

    递归函数的定义:在这个函数里再调用这个函数本身 最大递归深度默认是997或者998,python从内存角度做的限制 优点:代码变简单 缺点:占内存 一:推导年龄 问a的值是多少: a 比 b 小2,b ...

  10. C#黎明前的黑暗

    学习编程已经很久了,然而技术还停留在远古时代,丝毫没有什么进步的痕迹,平常也就写一些小软件来处理工作上面遇到的一些很繁杂的问题,天生愚笨或许就是说的我. 黎明前的黑暗期,真的太长了,烂烂的文章就像烂烂 ...