首页 > 其他分享 >Educational Codeforces Round 170 (Rated for Div. 2) C. New Games

Educational Codeforces Round 170 (Rated for Div. 2) C. New Games

时间:2024-10-15 11:23:08浏览次数:8  
标签:Educational Rated cnt 相邻 int Codeforces -- num ans

题意转化

找一些相邻的数(其中相邻定义为递增序下任意相邻两数差 \(\leq 1\))
求相邻数中, 不同数字有 \(k\) 种, 取到数字个数的最大值

算法

容易想到按顺序排列
观察到有点像滑动窗口, 考虑用队列维护一个出现不同数字次数为 \(k\) 的区间, 再计算

代码

来自 转载地址

void solve()
{
    int n,k;
    cin>>n>>k;
    vector<int> a(n+1);
    for(int i=1;i<=n;i++) cin>>a[i];
    sort(a.begin()+1,a.end());
    queue<int> q;
    map<int,int> num;
    int ans=0,cnt=0;
    for(int i=1;i<=n;i++)
    {
        if(q.empty())
        {
            q.push(a[i]);
            num[a[i]]++;
            cnt++;
            ans=max(ans,(int)q.size());
        }
        else
        {
            if(q.back()==a[i])
            {
                q.push(a[i]);
                num[a[i]]++;
                ans=max(ans,(int)q.size());
            }
            else
            {
                if(a[i]==q.back()+1)
                {
                    q.push(a[i]);
                    num[a[i]]++;
                    cnt++;
                    while(q.size() && cnt>k)
                    {
                        int x=q.front();q.pop();
                        num[x]--;
                        if(!num[x]) cnt--;
                    }
                    ans=max(ans,(int)q.size());
                }
                else
                {
                    while(q.size())
                    {
                        int x=q.front();q.pop();
                        num[x]--;
                        if(num[x]==0) cnt--;
                    }
                    q.push(a[i]);
                }
            }
        }
    }
    cout<<ans<<endl;
}

总结

对区间有约束, 类似于滑动窗口 dp, 可以使用队列维护
一类套路题, 可惜之前没见过

标签:Educational,Rated,cnt,相邻,int,Codeforces,--,num,ans
From: https://www.cnblogs.com/YzaCsp/p/18467035

相关文章

  • Codeforces Educational Codeforces Round 170 (Rated for Div. 2)
    A-TwoScreens大意:    给两个字符串,每次在两个空子符串进行两种操作     1、字符串末尾加一个任意字母    2、一个字符串全部复制给另一个字符串    求得到给定的两个字符串的最小操作数思路:    看最前面有多少相等即可 ......
  • Educational Codeforces Round 170 (Rated for Div. 2)
    目录写在前面A签到B结论C双指针D模拟,差分,DP,结论E计数,DP,F写在最后写在前面比赛地址:https://codeforces.com/contest/2025。妈的不想上学省赛回来昏了一天了。A签到发现最优的操作是先在一个屏幕操作得到最长公共前缀,然后复制到另一方上,再分别操作两方。特判若无公共前......
  • Codeforces Round 978 (Div. 2) A-D1 题解
    我的同学还在VP,排名马上放声明:不要觉得有subtask的题目只做Easyversion没有意义,从这里也能捞很多分,况且有的时候并不是简单和难的区别,而是考不同的算法A.BustoPénjamo题意有一辆车上面有$r$排座位,每排有$2$个座位,现在共$n$个家庭出行坐公交车,每个家庭$a_i$......
  • codeforces round 977 (div.2) C2(访问set的第一个元素,观察数据规律-出现次序,用set记
    解题历程:我首先想到的是等效法,每一次操作可以等效为每次将第一个人抽出放入一组,后面的人往前移,而该组的人就是可以任意放置的人,当b中后面再出现与前一个相同的人时,就不进行操作,当b中出现不同的人时,就看看这组中有没有这个人,有的话就下一个循环,没有的话就看看这个新的人是否按a中......
  • Codeforces Round 899 (Div. 2)题解记录
    题目链接:https://codeforces.com/contest/1882A.IncreasingSequence从1开始慢慢和\(a[i]\)的所有值比较,注意最后一个位置特判下#include<iostream>#include<string.h>#include<map>#include<vector>#include<set>#include<unordered_set>#include<......
  • Splatt3R: Zero-shot Gaussian Splatting from Uncalibrated Image Pairs 论文解读
    目录一、概述二、相关工作1、近期工作2、DUSt3R3、MASt3R三、Splatt3R1、MASt3R的Backbone 2、高斯预测头3、点云与3D高斯参数结合4、3D高斯渲染5、损失函数四、实验 1、对比实验2、消融实验一、概述    该论文首次提出了一种无需任何相机参数和深......
  • FreqFed: A Frequency Analysis-Based Approach for Mitigating Poisoning Attacks in
    FreqFed:AFrequencyAnalysis-BasedApproachforMitigatingPoisoningAttacksinFederatedLearning--FreqFed:一种基于频率分析的联邦学习中缓解中毒攻击的方法来源摘要威胁模型设计目标所用方法FreqFed总结思考来源NetworkandDistributedSystemSecurity......
  • Codeforces Round 946 (Div. 3)
    E.MoneyBuysHappiness题意:给你\(m\)个月,每个月可以赚\(x\)元,每个月你都有一次机会花费\(c_i\)元,获得\(h_i\)的幸福。(当然你目前得有足够的钱)。求出能够获得的最大幸福值。思路:我们可以求出获得\(i\)幸福值所需的最小花费,然后判断能否有足够的钱即可。考虑如何求解,把......
  • [The 3rd Ucup. Stage 10 West Lake] Generated String
    题意维护一个字符串集合,支持动态插入,动态删除,查询同时具有前缀\(s_1\)与后缀\(s_2\)的串的个数,所有字符串用如下方式给出:先给定一个全局模板串\(S\),每一个字符串都是\(S\)的若干个下标区间对应的字符串拼接而成的。即给出若干个区间\([l_1,r_1],[l_2,r_2],\dots,[l_k,r_k......
  • Solution - Codeforces 622E Ants in Leaves
    首先因为\(1\)点是可以一次性到多个点的,因此不需要考虑\(1\)点的情况,而是转而分析\(1\)的每个子树的情况,最后取\(\max\)。那么对于每个子树,就有每个节点每个时刻至多存在\(1\)个点的性质了。考虑如何去求解。首先一个贪心的想法是肯定是每个蚂蚁越早到一个点越好。于......