题解 AcWing.4306 序列处理

AcWing 周赛题目。

介绍一种比较奇怪的写法。

对于每个数,统计它是否出现过,如果没有出现就持续将它 \(+1\),然后统计答案即可。

#include <iostream>
using namespace std;

int a[30010];
bool flag[30010];

int main()
{
    int n;
    cin >> n;
    int cnt = 0;
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i];
        if (flag[a[i]])
        {
            while (true)
            {
                a[i]++;
                if (!flag[a[i]]) break;
                cnt++;
            }
            cnt++;
        }
        flag[a[i]] = true;
    }
    cout << cnt << endl;
    return 0;
}
posted @ 2022-03-19 19:51  wbs200  阅读(44)  评论(0)    收藏  举报