【bzoj5071】[Lydsy十月月赛]小A的数字 乱搞
题目描述
有一串数字 A1,A2...An
每次可以进行如下操作,选择一个数字 i ,将 (Ai-1 , Ai , Ai+1)
变为 (Ai-1 + Ai , -Ai , Ai+1 + Ai) ,特别地,若 i=N ,则 (An-1 , An) 变为 (An-1 + An , -An) .
问:能否通过若干次操作得到 B1,B2...Bn ?
输入
第一行一个正整数 T 表示数据组数。
每一组数据有三行,其中:
第一行一个正整数 n,表示每一串数字的个数;
第二行 n 个用空格隔开的整数, 表示A1,A2,...An;
第三行 n 个用空格隔开的整数, 表示B1,B2,...,Bn。
输出
对于每一组数据,输出一行”YES”或”NO”(不含双引号),表示能否通过若干次操作得到 B 数列。
样例输入
2
6
1 6 9 4 2 0
7 -6 19 2 -6 6
4
1 2 3 4
4 2 1 3
样例输出
YES
NO
题解
乱搞
(前一天宋爷讲过的类似的题,bz月赛就考了。。)
对序列求前缀和,可以发现每次操作后这三(两)个位置的前缀和变化为: (Si , Si-1 , Si+1),相当于每次操作在前缀和序列中交换了它和它前面的数。
而通过交换相邻的两个数可以得到该序列的全部排列,因此直接比较A和B的前缀和序列是否为相同的序列的排列即可。排序后直接逐个比较即可。
时间复杂度$O(Tn\log n)$
#include <cstdio>
#include <algorithm>
using namespace std;
typedef long long ll;
ll a[100010] , b[100010];
int main()
{
int T;
scanf("%d" , &T);
while(T -- )
{
int n , i;
scanf("%d" , &n);
for(i = 1 ; i <= n ; i ++ ) scanf("%lld" , &a[i]) , a[i] += a[i - 1];
for(i = 1 ; i <= n ; i ++ ) scanf("%lld" , &b[i]) , b[i] += b[i - 1];
sort(a + 1 , a + n + 1) , sort(b + 1 , b + n + 1);
for(i = 1 ; i <= n ; i ++ )
if(a[i] != b[i])
break;
if(i > n) puts("YES");
else puts("NO");
}
return 0;
}
【bzoj5071】[Lydsy十月月赛]小A的数字 乱搞的更多相关文章
- 【BZOJ5071】[Lydsy十月月赛]小A的数字 发现性质
[BZOJ5071][Lydsy十月月赛]小A的数字 题解:一般遇到这种奇奇怪怪的操作,常用的套路是将原序列差分一下,或者求个前缀和什么的.本题就是直接对原序列求前缀和,然后发现一次操作相当于交换两个 ...
- 【BZOJ5074】[Lydsy十月月赛]小B的数字 数学
[BZOJ5074][Lydsy十月月赛]小B的数字 题解:题目是问你ai*bi>=sum,bi>=0这个不等式组有没有解.因为a<=10,容易想到取ai的lcm,然后变成lcm*b ...
- 【BZOJ5072】[Lydsy十月月赛]小A的树 树形DP
[BZOJ5072][Lydsy十月月赛]小A的树 题解:考虑我们从一个联通块中替换掉一个点,导致黑点数量的变化最多为1.所以我们考虑维护对于所有的x,y的最大值和最小值是多少.如果询问的y在最大值和 ...
- 【BZOJ5073】[Lydsy十月月赛]小A的咒语 DP(错解)
[BZOJ5073][Lydsy十月月赛]小A的咒语 题解:沙茶DP,完全不用后缀数组. 用f[i][j]表示用了A的前i个字符,用了j段,最远能匹配到哪.因为显然我们能匹配到的地方越远越好,所以我们 ...
- 【bzoj5072】[Lydsy十月月赛]小A的树 树形背包dp
题解: 比较好想 首先注意到如果最暴力的做法复杂度无法接受 而5000的范围基本是n^2做法了 只使用已经遍历过的点数目和当前子树中的点数目转移我们知道复杂度是n^2的 于是大胆猜测一波同一个节点为根 ...
- [BZOJ 5074][Lydsy1710月赛]小B的数字
传送门 \(\color{green}{solution}\) 设 \[b_{i}=2^{w_{i}},sum= \sum_{i=1}^{n}{w_{i}}\] 则对于任意\(a_{i}\)都有 \[ ...
- [Lydsy1710月赛] 小B的数字
神TM 又又又又是构造题..... 很简单的化简就是,把2^k[i]都换成k[i] ,然后就可以得出 对于任意的i,k[i] * a[i] >= ∑k[]. 最优的构造肯定是使 k[i] = ...
- 「10.14」小P的2048(模拟)·小P的单调数列(性质,DP)·小P的生成树(乱搞)
A. 小P的2048 模拟.....又没啥可说的,以后要认真打打模拟题了... B. 小P的单调数列 考场$n^2log(n)$的SB思路有人听吗 正解当然不是这样, 事实上我们每次选取的只有一段区间 ...
- 【小问题】为啥乱搞就不行,golang没安装在系统目录下,导致go get出现"package bytes: directory "/home/ahfu/go/src/bytes" is not using a known version control system"
想在自己的账号下安装golang开发环境,于是这样配置: wget https://dl.google.com/go/go1.14.2.linux-amd64.tar.gz cd /home/ahfu ...
随机推荐
- TiDB集群手动安装
TIDB的安装 TiDB 是 PingCAP 公司受 Google Spanner / F1 论文启发而设计的开源分布式 HTAP (Hybrid Transactional and Analytic ...
- 高级同步器:同步屏障CyclicBarrier
引自:http://ifeve.com/concurrency-cyclicbarrier/ 简介 CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier).它要做的 ...
- flutter开发之配置环境以及一些问题的处理方案~
今天flutter1.0已经发布了,有没有一点小小的兴奋,为了纪念这个令人激动的日子,我决定发一篇flutter的基本环境搭建的教程送给大家:) 由于这是一篇关于flutter配置环境的教程, ...
- 使用CSS3制作首页登录界面实例
响应式设计 在这个页面中,使用下面3点来完成响应式设计 1.最大宽度 .设定了一个 max-width 的最大宽度,以便在大屏幕时兼容.: 2.margin : 30px auto; 使其保持时刻居中 ...
- webBrowser 应用编程函数总结
/*============================说明部分================================= 实现一下函数需包含头文件 #include <Winine ...
- 【Laravel】查询构造器---使用orWhere的顺序对查询结果产生的不良影响
实现查询:获取模糊匹配中文名 || 英文名等于 “Sara” 并且 个人信息状态为“待审核” 的员工信息. 其中 $filter = ["eName" => "Sa ...
- 码云配置webhooks自动触发拉取代码
webhooks的使用 码云和github的钩子叫webhooks 每次您 push 代码后,都会给远程 HTTP URL 发送一个 POST 请求 码云项目管理页面的webhooks设置: http ...
- 06 python操作MySQL和redis(进阶)
python操作mysql.redis 阶段一.mysql事务 主要用于处理操作量大,复杂度高的数据.比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息, ...
- count_char
import java.util.Scanner; public class count_char { public static void main(String args[]) { int cou ...
- MongoDB从环境搭建到代码编程(Window 环境)
本人开发环境: window Server 2008 , 64位系统 服务端 MongoDB下载地址:http://www.mongodb.org/downloads (本人己下好的在百度网盘 : ...