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

Magic Stones(公式变换好题)

时间:2020-07-26 23:03:30      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:nes   net   http   tail   sort   lag   span   bool   相等   

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 ‘\n‘
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\n");
41     else if( c[1]!=t[1] ) printf("NO\n");
42     else printf("YES\n");
43     return 0;
44 }

 

Magic Stones(公式变换好题)

标签:nes   net   http   tail   sort   lag   span   bool   相等   

原文地址:https://www.cnblogs.com/wsy107316/p/13381858.html

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