zoukankan      html  css  js  c++  java
  • 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;
    }
  • 相关阅读:
    对拍
    浅谈trie树
    蒟蒻的二分模板
    浅谈线性素数筛
    浅谈树状数组
    HDU 2181 哈密顿绕行世界问题
    HDU 3567 Eight II
    HDU 1043 Eight
    POJ 3076 Sudoku
    hihoCoder 1087 Hamiltonian Cycle
  • 原文地址:https://www.cnblogs.com/legendcong/p/12390085.html
Copyright © 2011-2022 走看看