CF1110E Magic Stones(构造题)
这场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(构造题)相关推荐
- CF1110E Magic Stones
CF1110E Magic Stones 题目链接:(http://codeforces.com/problemset/problem/1110/E?csrf_token=c50ced6ad87d78 ...
- 【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 ...
- CodeForces 459C(构造题)
http://codeforces.com/problemset/problem/459/C /** 题意:有n个同学,k辆车,d天(每天n个同学去一个地方)问经过d天后,任意的多个同学不能总在一起d ...
- CDMA(牛客第八场构造题)
链接:https://ac.nowcoder.com/acm/contest/888/C 来源:牛客网 Gromah and LZR have entered the third level. The ...
- Codeforces 482 - Diverse Permutation 构造题
这是一道蛮基础的构造题. - k +(k - 1) -(k - 2) 1 + k , 1 , k , 2, ....... ...
- hdu 5710 Digit-Sum (构造题)
题目链接:hdu 5710 Digit-Sum 题意: 定义S(n)=n的数位和,给你一个a,b让你找一个n使得a*S(n)=b*S(2n). 题解: 传送门 构造题很少做啊!! 太弱了 1 #inc ...
- 字符串——BZOJ 3097: Hash Killer I【构造题,思维题】
BZOJ 3097: Hash Killer I[构造题,思维题] 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3097 题意:让你出一组 ...
- 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 ...
- CSUSTOJ-小樱的库洛牌(恶心的构造题)
题目连接:http://acm.csust.edu.cn/problem/4020 博客园食用链接:https://www.cnblogs.com/lonely-wind-/p/13941902.ht ...
最新文章
- HashSet、TreeSet和LinkedHashSet
- 判断一个where条件的对错php,sql – IN子查询的WHERE条件影响主查询 – 这是一个功能还是一个错误?...
- 为什么下一个十年的主战场在 Serverless?
- SpringMVC-HelloWorld
- 如何快速实现 Wordpress 博客域名更换?
- 你所不知道的SQL Server数据库启动过程(用户数据库加载过程的疑难杂症)
- JavaScript(JS)常用的正则表达式
- Java中的Swing键盘绑定案例
- python生成个性二维码学习笔记
- iOS开发项目篇—02添加子控制器以及项目分层
- 【智能路由器】轻量级web服务器lighttpd架设——打造家庭影院
- element-ui 固定弹窗底部的按钮
- pr 导出视频 黑屏 或者 没有画面
- python国外文献_python的英文文献
- 宁畅g40系列服务器发布,酷冷至尊MWE Gold V2 1050 让你的神机干劲十足
- 算法总结(六)Isomap(Isometric mapping等度量映射)和LLE(Locally Linear Embedding)的理解
- 【基础知识】BSS段,数据段,代码段,堆栈段
- 3D点云处理:点云聚类--FEC: Fast Euclidean Clustering for Point Cloud Segmentation
- ISO14443-3
- 移动互联网——2011年最值得关注的100个应用程序(目录)