堆积木----vector防止内存超限

摘要:
大蒜先生有n个区块,编号从11到nn。Suantoujun执行mm操作。每次,Suantou都会将bb位置的积木整体移动到aa位置。接下来,在mm行中,在每行中输入22个整数a、ba、b。如果aa和bb相等,那么这次不需要移动。输出格式输出nn行,第二行从位置ii的底部到顶部输出块编号。如果此行中没有块,则输出一个空行。样本输入1221212样本输出112样本输入24431432422样本输出22431这个问题很容易用vector=a[i].size()-1)cout˂˂“”;}来计算客户˂˂endl;}return0;}使用注释中的空方法释放内存。这避免了内存溢出。

蒜头君有 nn 块积木,编号分别为 11 到 nn。一开始,蒜头把第 ii 块积木放在位置 ii。蒜头君进行 mm 次操作,每次操作,蒜头把位置 bb 上的积木整体移动到位置 aa 上面。比如 11 位置的积木是 11,22 位置的积木是 22,那么把位置 22 的积木移动到位置 11 后,位置 11 上的积木从下到上依次为 1,21,2。

输入格式

第一行输入 22 个整数 n,m(1 le n le 10000, 0 le m le 10000)n,m(1n10000,0m10000)。

接下来 mm 行,每行输入 22 个整数 a, b(1 le a, b le n)a,b(1a,bn),如果aa,bb 相等则本次不需要移动。

输出格式

输出 nn 行,第 ii 行输出位置 ii 从下到上的积木编号,如果该行没有积木输出一行空行。

样例输入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计算很简单。但是会存在内存超限的问题。
#include<bits/stdc++.h>
using namespace std;
vector<int> a[10005];
void mov(int to,int from)
{
    for(int i=0;i<a[from].size();i++)
    {
        a[to].push_back(a[from][i]);
    }
    /*vector<int> x;
    a[from].swap(x);*/
    a[from].clear();  
}
int main()
{


    int n,m;
    cin>>n>>m;

    for(int i=1;i<=n;i++)
        a[i].push_back(i);
    for(int i=0;i<m;i++)
    {
        int from,to;
        cin>>to>>from;
        if(from!=to)
            mov(to,from);
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=0;j<a[i].size();j++)
        {
            cout<<a[i][j];
            if(j!=a[i].size()-1) cout<<" ";
        }
        cout<<endl;
    }
    return 0;
}

使用注释中的的清空方法,可以释放掉内存。从而避免内存超限。

免责声明:文章转载自《堆积木----vector防止内存超限》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux kill -9 和 kill -15 的区别Flink--将表转换为DataStream或DataSet下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

提高Vector容器的删除效率

vector容器是类似与一个线性数组,索引效率高,插入,删除的效率很低,需要遍历数据列表,一般情况下vector的删除操作由一下函数完成: iterator erase(iterator position) //删除一个位置 iterator erase(iterator first, iterator last)...

Java 容器详解

一.Java 容器都有哪些? Java 容器分为 Collection 和 Map 两大类,其下又有很多子类,如下所示: Collection List ArrayList LinkedList Vector Stack Set HashSet LinkedHashSet TreeSet Map HashMap LinkedHashMap TreeMap...

访问vector元素方法的效率比较(转)

LInux下: gcc 4.47,red hat6 1 #include<iostream> 2 #include<vector> 3 #include<time.h> 4 using namespace std; 5 6 7 8 int main() { 9 //建立4个...

OpenCASCADE 参数曲面面积

OpenCASCADE 参数曲面面积 eryar@163.com Abstract. 本文介绍了参数曲面的第一基本公式,并应用曲面的第一基本公式,结合OpenCASCADE中计算多重积分的类,对任意参数曲面的面积进行计算。 Key Words. Parametric Curve, Parametric Surface, Gauss Integration,...

c++优先队列(priority_queue)用法详解

介绍:   普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。 在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。 首先要包含头文件#include<queue>, 他和queue不同的就在于我们可以自定义其中数据的优...

CSP201403-3:命令行选项

引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试,针对计算机软件开发、软件测试、信息管理等领域的专业人士进行能力认证。认证对象是从事或将要从事IT领域专业技术与技术管理人员,以及高校招考研究生的复试对象。   问题描述   请...