[CF818D] Multicolored Cars - 思维

Posted mollnn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[CF818D] Multicolored Cars - 思维相关的知识,希望对你有一定的参考价值。

Description

现在给出 (n) 个数 (a_{1},a_{2},…,a_{n})(a_{i}) 表示时刻 (i) 出现的数。定义 (cnt_{x}(i)) 表示到 (i) 时刻 (x) 出现过的个数。Alice 选择了一个数 (m),请帮助 Bob 选择一个数 (k e m),使得对任意时刻 (i),都有 (cnt_{k}(i) ge cnt_{m}(i))。若不存在这样的 (k) 请输出 (-1)

Solution

维护计数器,统计到当前时刻每个数字 (x) 出现了多少次

记录当前时刻 (m) 的个数为 (now),如果某个 (x) 出现在 (m) 后面,且 (cnt[x]<now)(x) 不合法,满足这种情况我们就不继续加了

最后扫一遍计数器即可

#include <bits/stdc++.h>
using namespace std;

const int N = 1000005;

int n,a[N],cnt[N],m,k=-1;

signed main() {
    ios::sync_with_stdio(false);
    cin>>n>>m;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++) {
        if(a[i]==m || cnt[a[i]]>=cnt[m]) {
            ++cnt[a[i]];
        }
    }
    for(int i=1;i<=n;i++) {
        if(a[i]!=m && cnt[a[i]]>=cnt[m]) k=a[i];
    }
    cout<<k;
}

以上是关于[CF818D] Multicolored Cars - 思维的主要内容,如果未能解决你的问题,请参考以下文章

CF809C Find a car

Music in Car CF 746F

[CF1137E] Train Car Selection

CF1137E Train Car Selection(单调栈维护凸函数)

非原创codeforces 1029F Multicolored Markers 贪心+构造

沙发数据库 - URI 地址