码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces 1110E

时间:2019-02-09 19:14:50      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:sort   max   scan   def   位置   exit   mes   style   列操作   

给定一个长为$n$的序列$a$,定义一次操作为将$a_i(1<i<n)$变为$a_{i-1}+a_{i+1}-a_i$。再给一个长为$n$的序列$b$,问$a$能否通过一系列操作变为$b$。

$$n\le10^5,a_i,b_i\le2\times10^9$$

考虑差分,则每次操作相当于交换了差分数组的两个相邻位置,因此只需要判一下差分数组是否一致以及$a_1$是否等于$b_1$即可。

 1 const int MAXN = 100000 + 5;
 2 
 3 int a[MAXN], b[MAXN];
 4 
 5 int main() {
 6   int n;
 7   scanf("%d", &n);
 8   For(i, 1, n) {
 9     scanf("%d", &a[i]);
10   }
11   For(i, 1, n) {
12     scanf("%d", &b[i]);
13   }
14   if (a[1] != b[1] || a[n] != b[n]) {
15     puts("No");
16     exit(0);
17   }
18   FOR(i, 1, n) {
19     a[i] = a[i + 1] - a[i];
20     b[i] = b[i + 1] - b[i];
21   }
22   std::sort(a + 1, a + n);
23   std::sort(b + 1, b + n);
24   FOR(i, 1, n) {
25     if (a[i] != b[i]) {
26       puts("No");
27       exit(0);
28     }
29   }
30   puts("Yes");
31   return 0;
32 }

 

Codeforces 1110E

标签:sort   max   scan   def   位置   exit   mes   style   列操作   

原文地址:https://www.cnblogs.com/sjkmost/p/10357728.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!