NYOJ109 数列转换 【守恒法】
数列转换
- 描写叙述
-
有一个数列a1,a2,a3...an,每次能够从中随意选三个相邻的数ai-1 ,ai ,
ai+1 ,进行例如以下操作(此操作称为“对ai进行操作”)(ai-1,ai,ai+1)->(ai-1+ai,-ai,ai+ai+1)
给定初始和目标序列。能否通过以上操作。将初始序列转换成为目标序列?比如。初始序列(1 6 9 4 2 0)目标序列(7 -6 19 2 -6 6)可经过例如以下操作:
(1 6 9 4 2 0)->( 1 6 13 -4 6 0)->(1 6 13 2 -6 6)->(7 -6 19 2 -6 6)
请你推断给定的初始状态和目标状态,输出Yes(可以转换)或No(不能转换)
- 输入
- 第一行是一个正整数N,表示測试数据的组数。(N<=100)
每组測试数据的第一行是一个整数M(3<=M<=1000),表示该组測试数据的起始状态与结束状态都有M个数。
每组測试数据的第二行是M个整数Ai(-1000<=Ai<=1000)。表示起始状态。
每组測试数据的第三行是M个整数Bi(-1000<=Bi<=1000),表示终止状态。 - 输出
- 假设可以转换。输出Yes
假设不能转换。输出No - 例子输入
-
2
3
1 2 3
1 3 2
6
1 6 9 4 2 0
7 -6 19 2 -6 6 - 例子输出
-
No
Yes - 来源
- 《世界大学生程序设计竞赛高级教程·第一冊》
- 上传者
- 张云聪
题解:假设用暴力模拟出全部结果然后再比較的话非常easy超时,并且编程复杂度高。可是在网上看到了一个非常奇妙的守恒法,不是在细节上关注这些变化。而是从总体上看到某些不变的东西,用S[i]表示A[0...i]的和,当对A[i]进行变化的时候。直接结果是S[i]和S[i-1]交换了位置。所以为题就转换成了求S数组,排序。然后比較两个S数组是否相等。
#include <stdio.h>
#include <string.h>
#include <algorithm> #define maxn 1010 int A[maxn], B[maxn]; int main() {
int t, n, i;
scanf("%d", &t);
while(t--) {
scanf("%d", &n);
for(i = 0; i < n; ++i) {
scanf("%d", &A[i]);
if(i) A[i] += A[i-1];
}
for(i = 0; i < n; ++i) {
scanf("%d", &B[i]);
if(i) B[i] += B[i-1];
}
std::sort(A, A + n);
std::sort(B, B + n);
if(std::equal(A, A + n, B))
printf("Yes\n");
else printf("No\n");
}
return 0;
}
NYOJ109 数列转换 【守恒法】的更多相关文章
- NYOJ-109 数列转换 AC 分类: NYOJ 2014-12-01 00:54 84人阅读 评论(0) 收藏
守恒法的问题,表示,刚刚看了一点点 #include <iostream> #include <cstring> #include <cstdio> #includ ...
- 剑指Offer的学习笔记(C#篇)-- 斐波那契数列
题目:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). 一 . 理解概念 斐波那契数列概念:斐波那契数列(Fibonacci sequence), ...
- ACM/IOI 历年国家集训队论文集和论文算法分类整理
国家集训队1999论文集 陈宏:<数据结构的选择与算法效率--从IOI98试题PICTURE谈起> 来煜坤:<把握本质,灵活运用--动态规划的深入探讨> 齐鑫:<搜索方法 ...
- ACM/IOI 国家队集训队论文集锦
转自:https://blog.csdn.net/txl199106/article/details/49227067 国家集训队1999论文集 陈宏:<数据结构的选择与算法效率——从IOI98 ...
- [转] ACM中国国家集训队论文集目录(1999-2009)
国家集训队1999论文集 陈宏:<数据结构的选择与算法效率——从IOI98试题PICTURE谈起>来煜坤:<把握本质,灵活运用——动态规划的深入探讨>齐鑫:<搜索方法中的 ...
- NOI 国家集训队论文集
鉴于大家都在找这些神牛的论文.我就转载了这篇论文合集 国家集训队论文分类 组合数学 计数与统计 2001 - 符文杰:<Pólya原理及其应用> 2003 - 许智磊:<浅谈补集转化 ...
- Round 0: Regionals 2010 :: NEERC Eastern Subregional
Round 0: Regionals 2010 :: NEERC Eastern Subregional 贴吧题解(官方)? 网上的题解 水 A Murphy's Law 题意:Anka拿着一块涂着黄 ...
- Anti-pattern
https://en.wikipedia.org/wiki/Anti-pattern https://zh.wikipedia.org/wiki/反面模式 An anti-pattern is a c ...
- Anti-pattern(反面模式)
转自维基百科 http://zh.wikipedia.org/wiki/%E5%8F%8D%E9%9D%A2%E6%A8%A1%E5%BC%8F 在软件工程中,一个反面模式(anti-pattern或 ...
随机推荐
- brew,gem,rvm 和 bundler软件包的管理工具
brew是OS X上提供软件包的管理.Homebrew将软件包安装到单独的目录,然后符号链接到/usr/local 中,完全基于git和ruby.使用gem来安装你的gems,用brew来搞定他们的依 ...
- poj2761
表面上看是主席树之类的区间k大 实际上,除了主席树,还可以测各种结构 因为题目中说,任意区间不会完全包含 于是,我们把区间按左端点排序,依次添加,用平衡树求当前的k大 每个狗最多被添加一次,删除一次 ...
- vijos1049送给圣诞夜的礼品
这题犯了两个sb错误,写下来,为以后做个警告 一.mul过程中将k作为了循环变量 二.看错了题…… 题目中说是数到k行,而我却以为数k遍…… 做矩阵乘法,只要记住一句话:置换一定可以写成矩阵的形式! ...
- UVA 753 A Plug for UNIX 电器插座(最大基数匹配,网络流)
题意: 给n个插座,m个设备(肯定要插电了),k种转换头可无限次使用(注意是单向的),问有多少设备最终是不能够插上插座的? 分析: 看起来就是设备匹配插座,所以答案不超过m.这个题适合用网络流来解. ...
- JS保留两位小数 [转]
js保留2位小数toFixed(xxxx) var a = 9.39393; alert(a.toFixed()); alert(Number.toFixed(9.39393)); 返回的是9. 对于 ...
- NGINX(三)HASH表
前言 nginx的hash表有几种不同的种类, 不过都是以ngx_hash_t为基础的, ngx_hash_t是最普通的hash表, 冲突采用的是链地址法, 不过这里冲突的元素不是一个链表, 而是一个 ...
- POJ 1236 Network of Schools 有向图强连通分量
参考这篇博客: http://blog.csdn.net/ascii991/article/details/7466278 #include <stdio.h> #include < ...
- HDU 1560 DNA sequence DFS
题意:找到一个最短的串,使得所有给出的串是它的子序列,输出最短的串的长度,然后发现这个串最长是40 分析:从所给串的最长长度开始枚举,然后对于每个长度,暴力深搜,枚举当前位是哪一个字母,注意剪枝 注: ...
- selenium+testNG+Ant
好几天没写了,抽时间写下,也好有个总结: 1.selenium+testNG+Ant (1)ant 是构建工具 他的作用就是运行你配置好的东西 而tentng.xml你可以认为他是管理test的一个配 ...
- 烧写u_boot系统和linux系统
今天下午准备烧写一下u_boot还有linux系统,因为是笔记本电脑,吐槽一下,笔记本电脑的usb转串口不是怎么稳定,dnw下对应的驱动也不怎么好用,导致在笔记本电脑上烧写系统的成功率比较低,本来三点 ...