Magic Stones(公式变换好题)

Posted wsy107316

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Magic Stones(公式变换好题)相关的知识,希望对你有一定的参考价值。

Magic Stones

技术图片

 

 技术图片

 

 题解:here

技术图片

 

 每一次变换都会导致差分数组的两个相邻元素位置交换,但是大小是不变的;

要保证两个数组相等,所有的差分数组都是要一样的,包括第一个,也就是第一个数要相等

这里第一个数和最后一个数是不变的,所以题目正解为:比较这两个差分数组是否相同,如果相同,再看c数组和t数组第一个数是不是相同,是的话说明c数组可以变换到t数组

AC_Code:

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<cmath>
 4 #include<set>
 5 #include<algorithm>
 6 #include<iostream>
 7 using namespace std;
 8 typedef long long ll;
 9 #define endl ‘
‘
10 const int maxn = 2e5+10;
11 const int inf = 0x3f3f3f3f;
12 
13 int n;
14 int c[maxn],t[maxn],cfc[maxn],cft[maxn];
15 
16 bool judge(){
17     for(int i=1;i<=n;i++){
18         if( cfc[i]!=cft[i] ) return false;
19     }
20     return true;
21 }
22 
23 int main()
24 {
25     scanf("%d",&n);
26     for(int i=1;i<=n;i++){
27         scanf("%d",&c[i]);
28         if( i==1 ) cfc[i]=c[i];
29         else cfc[i]=c[i]-c[i-1];
30     }
31     for(int i=1;i<=n;i++){
32         scanf("%d",&t[i]);
33         if( i==1 ) cft[i]=t[i];
34         else cft[i]=t[i]-t[i-1];
35     }
36     sort(cfc+1,cfc+1+n);
37     sort(cft+1,cft+1+n);
38 
39     bool flag=judge();
40     if( !flag ) printf("NO
");
41     else if( c[1]!=t[1] ) printf("NO
");
42     else printf("YES
");
43     return 0;
44 }

 

以上是关于Magic Stones(公式变换好题)的主要内容,如果未能解决你的问题,请参考以下文章

[CF1110E]Magic Stones

CF1110E Magic Stones

CF1110E Magic Stones - 差分

Magic Stones(思维题)

E. Magic Stones CF 思维题

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