题解CF110E
感謝nofind大佬的推薦☆⌒(*^-゜)v
nofind就是我男神,不接受反駁 大霧
CF110E
Luogu
題意簡述
大佬們自己看洛谷的題目就好了,寫的既清楚又簡短,我就不再贅述了其實就是自己懶
分析
一看到這個式子就知道不可以硬懟,又因為數列的數是題目給的,也不可以打表。所以我們選擇手玩數據和懟式子的方式找規律。手玩沒有玩出來反正我是不行,所以選擇頹推式子
然后推了一會兒沒有思路的我打開了題解
定義:\({\large{d_{i}=a_{i}-a_{i-1}}}\)
我們就可以得到,每次操作完之后:
- \({\large{c'_{i}=c_{i+1}+c_{i-1}-c_{i}}}\)
- \({\large{d'_{i}=c'_{i}-c_{i-1}=c_{i+1}-c_{i-1}-c_{i}-c_{i-1}=d_{i+1}}}\)
- \({\large{d'_{i+1}=c_{i+1}-c'_{i}=c_{i+1}-(c_{i+1}+c_{i-1}-c_{i})=d_{i}}}\)
可知,每次操作之后,兩者之間差值會交換。但是大小不變。
所以上面的左右之間的差值和下面的兩兩之間的差值一致,那么就可以轉化。否則就不可以。
但還是要注意,第一個和最后一個不會變,你要特判
#include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int maxn=1e5+10; int n,m,a[maxn],b[maxn]; int c[maxn],d[maxn]; int main(){scanf("%d",&n);for(register int i=1;i<=n;i++)scanf("%d",&a[i]),c[i]=a[i]-a[i-1];for(register int i=1;i<=n;i++)scanf("%d",&b[i]),d[i]=b[i]-b[i-1];if(a[1]!=b[1]||a[n]!=b[n]) {puts("No");return 0;}sort(d+1,d+1+n),sort(c+1,c+1+n);for(register int i=1;i<=n;i++){if(d[i]!=c[i]) {puts("No");return 0;}}puts("Yes");return 0; }國際慣例,thankyou for your attention
轉載于:https://www.cnblogs.com/fallen-down/p/11599699.html
總結
- 上一篇: centos利用nexus搭建局域网do
- 下一篇: texlive 2020下载与安装