1.问题描述:





2.算法分析:


这道题目开始看了好久都没看明白,其实题目大概意思是这样。
就是有一排容器,编号为 1,2,3\cdots n1,2,3⋯n,初始时编号为 i的容器有 编号为i的积木。
然后有m次操作,每次操作会把容器 aa 的积木都移动到 容器 bb。
比如,你输入2 2,说明初始时有两个容器,每个容器中有两个元素。
理解样例输入:
样例1:
第一次12,把第二堆的积木放在第一堆下面,第二次12,也是一样,但是第二堆已经没积木了。此时第二堆积木为空了。
样例2:
有四堆积木,下面有四次操作。第一次操作,把第一堆放到第三堆下面,那就变成了 {空,2,31,4}。第二次操作后,变成{空,2,空,431}。第三次操作变为{空,2431,空,空},第四次操作不变
大概就是这么个意思,每次搬动积木,都要将原来积木所在的一行清空。


3.源代码:

#include <iostream>
#include <vector>using namespace std;int main()
{int n, m;cin >> n >> m;vector<int> s[n];for (int i = 0; i < n; i++)   //给积木编号 s[i].push_back(i+1);for (int i = 0; i < m; i++){int a, b;cin >> a >> b;if (a == b)continue;if (!s[b-1].size())continue;for (unsigned int j = 0; j < s[b-1].size(); j++)s[a-1].push_back(s[b-1][j]);   //相当于将编号b的积木搭到a上 vector<int> x;     s[b-1].swap(x);                        //清理内存,将编号b所在的那一行清空,因为b搬走了,那一行是空的 }for (int i = 0; i < n; i++){if (!s[i].size()){cout << endl;continue;}unsigned int j;for (j = 0; j < s[i].size()-1; j++)cout << s[i][j] << " ";cout << s[i][j] << endl;}return 0;
}

堆积木(动态数组vector)相关推荐

  1. HDU ACM 1181 变形课 (广搜BFS + 动态数组vector)-------第一次使用动态数组vector

    http://acm.hdu.edu.cn/showproblem.php?pid=1181 题意:给我若干个单词,若单词A的结尾与单词B的开头相同,则表示A能变成B,判断能不能从b开头变成m结尾. ...

  2. 动态数组vector的使用_简单代码示例

    简单代码示例 //动态数组vector的使用 #include <iostream> #include <vector> //用 <vector>头文件 using ...

  3. 蓝桥杯 笔记整理【JavaB组省赛真题、约数、全排列模板、排列组合、等差等比求和公式、eclipse快捷键、集合、快速求a^n、进制转换(Integer、BigInteger)、动态数组Vector】

    蓝桥杯 Java B组 省赛决赛 真题详解及小结汇总[2013年(第4届)~2020年(第11届)] 第11届 蓝桥杯-第1.2次模拟(软件类)真题-(2020年3月.4月)-官方讲解视频 说明:大部 ...

  4. C++动态数组vector实现

    最近在做将MATLAB代码转化为C/C++的工作,在实际应用时,发现动态数组非常重要,我在学习的时候也踩了许多坑,这篇就当做一篇踩坑笔记,希望读者能够绕开我踩过的坑,顺利应用动态数组. 1.静态数组. ...

  5. 动态数组vector

    实现的机制 第一次pushback一个int型数据时,开一个int型数据的空间.第二次pushback时,直接开辟两个int型数据大小的空间,第一次pushback的数据存到第二次的空间中,然后释放掉 ...

  6. 越努力越幸运--动态数组vector

    最近回忆山哥写的stl,觉得很好用,也写了一份. 感谢群里的大佬帮忙review,还是很多的问题的. code:https://github.com/HellsingAshen/vector_c.gi ...

  7. (vector)堆积木

    题目: n块积木,编号1到n,初始时,第i块放在第i个位置.现在,进行a b操作,每次操作把b位置积木全放到a位置上.输出操作完之后每个位置上的木块. 输入:n,m.n代表有n个积木,m代表有m个操作 ...

  8. vector,数组,动态数组效率测试

    对vector.数组.new创建的动态数组.预先reverse的vector测试代码如下: #include <iostream> #include <vector> #inc ...

  9. C++向量 vector动态数组

    需要包含头文件, #include  <vector>    using namespace std; vector 容器与数组相比其优点在于它能够根据需要随时自动调整自身的大小以便容下所 ...

最新文章

  1. AI技术在图像水印处理中的应用
  2. linux7.3系统u盘制作,制作centos7U盘启动盘
  3. linux git gui使用教程,跨平台最好用的Git GUI工具gitkraken
  4. 软件测试职业发展之路的反思(转)
  5. Golang slice高级应用
  6. LeetCode每日一题——串联字符串的最大长度
  7. LiveData源码解析
  8. mfc背景图片覆盖控件问题
  9. 小米路由linux系统,Linux下玩转小米路由器文件访问.docx
  10. C++数据库编程简介
  11. vmware使用桥接模式无法ping通本地和外网的解决方法
  12. 论文笔记--用于人体姿势估计的深度双连续网络(Deep Dual Consecutive Network for Human Pose Estimation)
  13. 轩小陌的Python笔记-Pandas 高级数据处理
  14. 注意啦!使用“流量卡”别图便宜,小心被监控!
  15. 男生追女生的方法有哪些?
  16. 计算机丢失iggy,我似乎已经丢失了什么
  17. Excel无法完全显示超过11位数的数字?超简单方法1秒教给你!
  18. 复盘罗辑思维卖月饼:微信电商的五大G点 (转)
  19. 三星4418核心板 世界上最小的A9核心模块 性能强大
  20. iOS13系统升级 ------ windows下如何更新iOS的beta版本?

热门文章

  1. 升级K8S证书有效期为100年操作说明
  2. 维基解密创始人被捕,从“天才黑客”到“阶下之囚”
  3. 教你如何显示隐藏文件
  4. Echarts关于中国地图的china.js文件下载
  5. アプリケーションコンポーネント(大分類)
  6. 论文翻译:Conv-TasNet: Surpassing Ideal Time–Frequency Magnitude Masking for Speech Separation
  7. 研发效能怎么分析?方法论、模型、误区都在这里了
  8. LoadRunner 12.02 进行录制脚本时提示无Internet访问
  9. android 四方向摇杆源码,手游摇杆(一)最简单的四方向摇杆
  10. 新松机器人袁_山东新松工业软件研究院创新发展战略务虚会“实力”召开!