cf1523C. Compression and Expansion

Posted Jozky86

tags:

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

cf1523C. Compression and Expansion

题意:

让你模拟出一个书的目录,对于每一行给你一个数字,表示这个目录的最后一个数,

题解:

我们用vector存当前的目录情况,读到下一行,在尽量少删上一行的基础上,加入当前数字。而遇到1就以为这我们要单开一页(相当于目录层数增加)。然后直接模拟过程即可

代码:

#include <bits/stdc++.h>
#define rep(i, n) for (int i= 1; i <= (n); ++i)
using namespace std;
typedef long long ll;
int main()
{
    int t;
    cin >> t;
    while (t--) {
        vector<int> v;

        int n;
        scanf("%d", &n);
        rep(i, n)
        {
            int x;
            scanf("%d", &x);
            if (x > 1) {
                while (!v.empty() && v.back() + 1 != x)
                    v.pop_back();

                v.pop_back();
            }
            v.push_back(x);

            rep(i, v.size())
            {
                if (i > 1)
                    putchar('.');
                printf("%d", v[i - 1]);
            }
            puts("");
        }
    }
    return 0;
}

以上是关于cf1523C. Compression and Expansion的主要内容,如果未能解决你的问题,请参考以下文章

DeltixRound,Div. 1+2-C.Compression and Expansion-构造小模拟

CF650C Table Compression

CF1523H Hopping Around the Array

cf1523B. Lord of the Values

[CF1523F] Favorite Game

CF1228C. Primes and Multiplication(数学)