CCF学生排队

Posted legendcong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CCF学生排队相关的知识,希望对你有一定的参考价值。

这题如果考虑考虑用数组折腾会非常麻烦,如果想到用vector的insert函数和erase函数就会非常舒服的模拟出来。vt.erase(it)之后it就变成了野指针,所以要用it=erase(it),这样it就会自动指向下一个元素。

#include<cstdio>
#include<iostream>
#include<vector>
#include<algorithm>
#include<string.h>
using namespace std;
int main()
{
    int n, k;
    cin >> n;
    getchar();
    cin >> k;
    vector<int>vt;
    int i;
    for (i = 0; i < n; i++)
    {
        vt.push_back(i+1);
    }
    int s, p;
    vector<int>::iterator it = vt.begin();
    while (k--)
    {
        cin >> s >> p;
        for (it=vt.begin(); it != vt.end(); it++)
        {
            if(*it==s)
            {
                it = vt.erase(it);
                vt.insert(it + p, s);
                break;
            }
        }
    }
    for (it = vt.begin(); it != vt.end(); it++)
    {
        cout << *it <<  ;
    }
    cout << endl;
}

 

以上是关于CCF学生排队的主要内容,如果未能解决你的问题,请参考以下文章

ccf 201703-2 学生排队

CCF——学生排队(2017-3)

CCF2017.3.2学生排队

CCF 20170302 学生排队

CCF学生排队

[CCF 201703-2 学生排队] VS2019使用erase时的问题