堆积木 vector 清空内存
问题
蒜头君有 n 块积木,编号分别为 1 到 n。一开始,蒜头把第 i 块积木放在位置 i。蒜头君进行 m 次操作,每次操作,蒜头把位置 b 上的积木整体移动到位置 a 上面。比如 1 位置的积木是 1,2 位置的积木是 2,那么把位置 2 的积木移动到位置 1 后,位置 1 上的积木从下到上依次为 1,2。
输入格式
第一行输入 2 个整数 n,m(1≤n≤10000,0≤m≤10000)。
接下来 m 行,每行输入 2 个整数 a,b(1≤a,b≤n),如果a,b 相等则本次不需要移动。
输出格式
输出 n 行,第 i 行输出位置 i 从下到上的积木编号,如果该行没有积木输出一行空行。
样例输入1
2 2
1 2
1 2
样例输出1
1 2
样例输入2
4 4
3 1
4 3
2 4
2 2
样例输出2
2 4 3 1
vector<int>tt;
mu[b].swap(tt);//进行vector的强制内存释放
mu[b].clear();//只是清空vector,并不会清空内存开的内存
#include <iostream>
#include <cstdio>
#include <string>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <vector>
#include <stack>
using namespace std;
const int inf=0x3f3f3f3f;vector<int> mu[10005];
int n,m;int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)mu[i].push_back(i); for(int i=1;i<=m;i++){int a,b;scanf("%d%d",&a,&b);if(a==b||mu[b].empty()) continue;for(int j=0;j<mu[b].size();j++)mu[a].push_back(mu[b][j]);vector<int>tt;mu[b].swap(tt);//进行vector的强制内存释放//mu[b].clear();//只是清空vector,并不会清空内存开的内存}for(int i=1;i<=n;i++){if(!mu[i].empty()) for(int j=0;j<mu[i].size();j++)printf("%d ",mu[i][j]);printf("\n");}return 0;
}
/*
2 2
1 2
1 24 4
3 1
4 3
2 4
2 2
*/
堆积木 vector 清空内存相关推荐
- 堆积木(vector数组)
蒜头君有n块积木,编号分别为1到n.一开始,蒜头君把第i块积木放在位置i.蒜头君进行m次操作.每次操作,蒜头君把位置b上的积木整体移动到位置a上面.比如1位置的积木是1,2位置的积木是2,那么把位置2 ...
- 堆积木(动态数组vector)
1.问题描述: 2.算法分析: 这道题目开始看了好久都没看明白,其实题目大概意思是这样. 就是有一排容器,编号为 1,2,3\cdots n1,2,3⋯n,初始时编号为 i的容器有 编号为i的积木. ...
- (vector)堆积木
题目: n块积木,编号1到n,初始时,第i块放在第i个位置.现在,进行a b操作,每次操作把b位置积木全放到a位置上.输出操作完之后每个位置上的木块. 输入:n,m.n代表有n个积木,m代表有m个操作 ...
- echarts树点击label事件_ECharts 堆积木(砖块)游戏
最近突发奇想,用 3D 的堆叠柱图,做了一个搭积木的小游戏. 主要思路 用一个几乎透明的 series-bar3D 铺满整个 grid3D,作为操作区,监听鼠标点击事件.完成堆积木的操作: 用多层数据 ...
- echarts中树图的label的点击_ECharts 堆积木(砖块)游戏
最近突发奇想,用 3D 的堆叠柱图,做了一个搭积木的小游戏. 主要思路 用一个几乎透明的 series-bar3D 铺满整个 grid3D,作为操作区,监听鼠标点击事件.完成堆积木的操作: 用多层数据 ...
- vector的内存释放
1. vector容器的内存自增长 与其他容器不同,其内存空间只会增长,不会减小.先来看看"C++ Primer"中怎么说:为了支持快速的随机访问,vector容器的元素以连续方式 ...
- STL中Vector的内存分配机制
一些好的公司校园招聘过程中(包括笔试.面试环节),经常会涉及到STL中vector的使用(主要是笔试)及其性能(面试)的分析.今天看了下相关文章,也写了几个小的测试程序跑了跑.算是总结下,希望对需要的 ...
- C++ Vecor 清空内存
通常,vector 的 push 操作会增大底层内存容量,但是 erase 操作过后,size 会改变,但是底层内存容量不会改变,调用 capacity 方法可以查看底层内存空间大小. 为了消除空间浪 ...
- C++__堆,栈与内存管理
C++__堆,栈与内存管理 1.什么是栈,什么是堆 具体可以看这篇:转载[C]堆区和栈区的区别 2.静态变量,全局变量,堆,栈生命周期 3.new与delete的动作 4.动态分配的内存计算 参考:& ...
最新文章
- 第一天开通博客,记录自己在编程道路上的点点滴滴
- android平板安装python_Notepad++配置Python开发环境
- SPOJ - PHRASES Relevant Phrases of Annihilation(后缀数组+二分)
- python——适用于py3的pillow图像处理模块plist组图分割
- django 1.8 官方文档翻译: 2-2-3 查找 API 参考
- java获取列族的列_在cassandra-cli中如何获取表中的所有列名以及如何在java中使用hector获取它?...
- Rating Prediction——评分预测小结
- 判断元素是否为HTMLElement元素
- 拓端tecdat|电商平台数据解锁网红零食销量密码
- MP288MP280清零软件
- 计算机操作基本技能知识,计算机基本操作技能考核知识点
- 填料吸收塔,填料教学实训,填料吸收实验系列QY-HGYL
- 上海大学计算机专业就业薪资,人均月薪过万?985、211、普通大学毕业生薪资水平大起底!和你想的不一样……...
- 如何解决github的code按钮一直转下载不了
- linux 性能测试 跑分,测试10秒钟,分析8小时,性能评估只看跑分可不够
- 网站优化之robots文件详解
- 旺旺号userid转换店铺shopid和评分性别
- 利用Android9.0虚拟机的JVMTI技术实现一些黑科技
- Ubuntu安装xxx依赖错误解决方法
- 绘制图像灰度直方图——将图像的灰度分布可视化方法总结