这场CF怎么这么多构造题……

题目链接:CF原网 洛谷

题目大意:给定两个长度为 $n$ 的序列 $c$ 和 $t$。每次我们可以对 $c_i(2\le i<n)$ 进行一次操作,也就是把 $c_i$ 变成 $c_i'=c_{i-1}+c_{i+1}-c_i$。问 $c$ 能否在若干次操作后变成 $t$。

$1\le n\le 10^5,1\le c_i,t_i\le 2\times 10^9$。


很容易考虑差分。我们设 $d_i=c_i-c_{i-1},s_i=t_i-t_{i-1}(2\le i\le n)$。

那么对 $c_i$ 进行一次操作后,

$d_i$ 会变成 $d_i'=c_i'-c_{i-1}=c_{i-1}+c_{i+1}-c_i-c_{i+1}=c_{i+1}-c_i=d_{i+1}$,

$d_{i+1}$ 会变成 $d_{i+1}'=c_{i+1}-c_i'=c_{i+1}-(c_{i-1}+c_{i+1}-c_i)=c_i-c_{i-1}=d_i$。

实际上就是把 $d_i$ 和 $d_{i+1}$ 换了个位置。

很明显,仅仅通过交换相邻元素,就可以把原序列变成任意一种原元素的排列。

而两个序列完全相同,当且仅当它们的第一个元素相同且差分序列完全相同。

所以只需判断 $c_1=t_1$ 且 $d$ 和 $s$ 能通过重排变得完全一样即可。

后半部分如何判断?排个序后看看是否完全一样即可。

时间复杂度 $O(n\log n)$。

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=100010;
#define FOR(i,a,b) for(int i=(a);i<=(b);i++)
#define ROF(i,a,b) for(int i=(a);i>=(b);i--)
#define MEM(x,v) memset(x,v,sizeof(x))
inline int read(){char ch=getchar();int x=0,f=0;while(ch<'0' || ch>'9') f|=ch=='-',ch=getchar();while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();return f?-x:x;
}
int n,c[maxn],t[maxn],d1[maxn],d2[maxn];
int main(){n=read();FOR(i,1,n) c[i]=read();FOR(i,1,n) t[i]=read();if(c[1]!=t[1]) return puts("No"),0;    //先判首项相等bool flag=true;FOR(i,2,n) d1[i]=c[i]-c[i-1],d2[i]=t[i]-t[i-1];    //两个差分序列sort(d1+2,d1+n+1);sort(d2+2,d2+n+1);    //排序FOR(i,2,n) if(d1[i]!=d2[i]){flag=false;break;}    //比较puts(flag?"Yes":"No");
}

View Code

转载于:https://www.cnblogs.com/1000Suns/p/10356814.html

CF1110E Magic Stones(构造题)相关推荐

  1. CF1110E Magic Stones

    CF1110E Magic Stones 题目链接:(http://codeforces.com/problemset/problem/1110/E?csrf_token=c50ced6ad87d78 ...

  2. 【CF1110E】Magic Stones

    题目 题意翻译 题意: 一次操作选择1<i<n1<i<n,使c_ic i ​ 变为c_i'c i ′ ​ ,c_i'=c_{i+1}+c_{i-1}-c_ic i ′ ​ =c ...

  3. CodeForces 459C(构造题)

    http://codeforces.com/problemset/problem/459/C /** 题意:有n个同学,k辆车,d天(每天n个同学去一个地方)问经过d天后,任意的多个同学不能总在一起d ...

  4. CDMA(牛客第八场构造题)

    链接:https://ac.nowcoder.com/acm/contest/888/C 来源:牛客网 Gromah and LZR have entered the third level. The ...

  5. Codeforces 482 - Diverse Permutation 构造题

    这是一道蛮基础的构造题. - k         +(k - 1)      -(k - 2) 1 + k ,    1 ,         k ,             2,    ....... ...

  6. hdu 5710 Digit-Sum (构造题)

    题目链接:hdu 5710 Digit-Sum 题意: 定义S(n)=n的数位和,给你一个a,b让你找一个n使得a*S(n)=b*S(2n). 题解: 传送门 构造题很少做啊!! 太弱了 1 #inc ...

  7. 字符串——BZOJ 3097: Hash Killer I【构造题,思维题】

    BZOJ 3097: Hash Killer I[构造题,思维题] 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3097 题意:让你出一组 ...

  8. Codeforces Contest 1110 problem E Magic Stones —— 更改算式

    Grigory has n magic stones, conveniently numbered from 1 to n. The charge of the i-th stone is equal ...

  9. CSUSTOJ-小樱的库洛牌(恶心的构造题)

    题目连接:http://acm.csust.edu.cn/problem/4020 博客园食用链接:https://www.cnblogs.com/lonely-wind-/p/13941902.ht ...

最新文章

  1. HashSet、TreeSet和LinkedHashSet
  2. 判断一个where条件的对错php,sql – IN子查询的WHERE条件影响主查询 – 这是一个功能还是一个错误?...
  3. 为什么下一个十年的主战场在 Serverless?
  4. SpringMVC-HelloWorld
  5. 如何快速实现 Wordpress 博客域名更换?
  6. 你所不知道的SQL Server数据库启动过程(用户数据库加载过程的疑难杂症)
  7. JavaScript(JS)常用的正则表达式
  8. Java中的Swing键盘绑定案例
  9. python生成个性二维码学习笔记
  10. iOS开发项目篇—02添加子控制器以及项目分层
  11. 【智能路由器】轻量级web服务器lighttpd架设——打造家庭影院
  12. element-ui 固定弹窗底部的按钮
  13. pr 导出视频 黑屏 或者 没有画面
  14. python国外文献_python的英文文献
  15. 宁畅g40系列服务器发布,酷冷至尊MWE Gold V2 1050 让你的神机干劲十足
  16. 算法总结(六)Isomap(Isometric mapping等度量映射)和LLE(Locally Linear Embedding)的理解
  17. 【基础知识】BSS段,数据段,代码段,堆栈段
  18. 3D点云处理:点云聚类--FEC: Fast Euclidean Clustering for Point Cloud Segmentation
  19. ISO14443-3
  20. 移动互联网——2011年最值得关注的100个应用程序(目录)

热门文章

  1. ASIHTTPRequest类库简介
  2. [转]加密技术在企业数据安全中的应用
  3. 【Python笔记】字典
  4. struts框架搭建及validator示例
  5. 删库跑路如何预防?—— Oracle创建只读账号详细教程
  6. [转]服务器监控 UptimeRobot 简明使用手册
  7. Flask+Gunicorn(协程)高并发的解决方法探究
  8. 深度解析艾瑞咨询《2017年度中国商业智能行业研究报告》
  9. 深入了解帆软报表系统的启动过程一
  10. centos安装最新的visual studio code并设置中文