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
- 2
- 例子输出
-
- No
- Yes
- No
- 来源
- 《世界大学生程序设计竞赛高级教程·第一冊》
- 上传者
- 张云聪
题解:假设用暴力模拟出全部结果然后再比較的话非常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或 ...
随机推荐
- Spring事务Transaction配置的五种注入方式详解
Spring事务Transaction配置的五种注入方式详解 前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学 ...
- mac tree命令
mac下默认是没有 tree命令的,不过我们可以使用find命令模拟出tree命令的效果,如显示当前目录的 tree 的命令: $ find . -print | sed -e 's;[^/]*/;| ...
- oh my zsh命令
打开某个文件夹地址,输入 cdf 命令,会自动进入这个文件夹命令行 open ./ 打开当前命令行所在目录的文件夹
- Unity3d插件推荐
2D_Toolkit_1.51 动画开发插件包 FingerGestures 触摸插件 ORK_Okashi_RPG_Kit Unity3D角色扮演游戏开发工具包 uScript-Visual-Scr ...
- 让Windows Server 2008 + IIS 7+ ASP.NET 支持10万个同时请求
具体设置如下: 1. 调整IIS 7应用程序池队列长度 由原来的默认1000改为65535. IIS Manager > ApplicationPools > Advanced Setti ...
- POJ 2112 Optimal Milking (Floyd+二分+最大流)
[题意]有K台挤奶机,C头奶牛,在奶牛和机器间有一组长度不同的路,每台机器每天最多能为M头奶牛挤奶.现在要寻找一个方案,安排每头奶牛到某台机器挤奶,使得C头奶牛中走过的路径长度的和的最大值最小. 挺好 ...
- 在ubuntu14.04上编译android4.2.2系统
原创作品,转载请注明出处,严禁非法转载 copyright:weishusheng 2015.8.1 时下android系统非常流行,下面就来说一下,下载编译一个andro ...
- UVA 1637 Double Patience
题意:36张扑克,平分成9摞,两张数字一样的可以拿走,每次随机拿两张,问能拿光的概率. 解法:记忆化搜索,状态压缩.一开始我想在还没拿的时候概率是1,然后往全拿光推···样例过不去···后来觉得推反了 ...
- Spring @Resource、@Autowired、@Qualifier的注解注入及区别
spring2.5提供了基于注解(Annotation-based)的配置,我们可以通过注解的方式来完成注入依赖.在Java代码中可以使用 @Resource或者@Autowired注解方式来经行注入 ...
- 10、Android数据存储
课程目标: 掌握Android中数据存储的几种方式 熟练使用PreferenceActivity&PreferenceScreen做专业的Setting功能 熟练使用SQLite3来存储数据 ...