首页 > 编程语言 >2024牛客寒假算法基础集训营1 J 又鸟之亦心 题解

2024牛客寒假算法基础集训营1 J 又鸟之亦心 题解

时间:2024-02-04 22:46:16浏览次数:28  
标签:int 题解 2024 牛客 之亦心 集训营 check

Question

2024牛客寒假算法基础集训营1 J 又鸟之亦心

Solution

挺好的一个题,给了我很多启发

显然,先二分最大值 \(D\) ,关键在于 \(check\) 怎么写

考虑到两个人是相对的,第 \(i\) 次之后肯定有一个人在 \(a_i\),具体是谁不重要,也不需要关注是怎么走过来的,我们需要去维护另外一个人可能在的位置的集合 \(S\)

显然,另外一个人只能在 \([a_i-D,a_i+D]\) 范围内,如果现在的 \(S\) 中一些数不满足这个范围就从集合中删去

然后考虑要不要把 \(a_i\) 放到这个集合中,也就是说,下一个数 \(a_{i+1}\) 是需要这个人走过去,还是另外一个人走过去

如果 \(a_i\) 和 \(a_{i+1}\) 的距离小于 \(D\) 的话,那另外一个人走过去也可以,那就把 \(a_i\) 丢到集合中

如果某个时刻 \(S\) 为空了,那么说明不可能满足 \(check\) 失败

Code

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

int n, x, y;
vector<int> a;

bool check(int d){
    int lst = y;
    set<int> S;
    if(abs(x - y) <= d)
        S.insert(x);
    for(auto x : a){
        if(!S.empty() && abs(x - lst) <= d)
            S.insert(lst);
        while(!S.empty() && *S.begin() < x - d)
            S.erase(S.begin());
        while(!S.empty() && *S.rbegin() > x + d)
            S.erase(*S.rbegin());
        lst = x;
    }
    return !S.empty();
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cin >> n >> x >> y; a.assign(n,0);
    for(int i=0;i<n;i++) cin >> a[i];
    int L = 0, R = 1e9;
    while(L <= R){
        int mid = (L + R) >> 1;
        if(check(mid))
            R = mid - 1;
        else 
            L = mid + 1;
    }
    cout<< L << '\n';
    return 0;
}

标签:int,题解,2024,牛客,之亦心,集训营,check
From: https://www.cnblogs.com/martian148/p/18007139

相关文章

  • .NET周刊【1月第3期 2024-01-24】
    国内文章.NET开源的简单、快速、强大的前后端分离后台权限管理系统https://www.cnblogs.com/Can-daydayup/p/17980851本文介绍了中台Admin,一款基于Vue3和.NET8的开源后台权限管理系统。它具备前后端分离架构,支持多租户、接口和数据权限、动态Api等功能,并集成了多种中间件和服务......
  • 2024.2.4寒假每日总结26
    算法题:292.Nim游戏-力扣(LeetCode)LeetCodeNim游戏292.Nim游戏-力扣(LeetCode)题目描述你和你的朋友,两个人一起玩Nim游戏:桌子上有一堆石头。你们轮流进行自己的回合,你作为先手。每一回合,轮到的人拿掉1-3块石头。拿掉最后一块石头的人就是获胜者。......
  • winter 2024 第二周周报
    内容winterweek2day1这套题复习了最短路,主要是dp,都是比较好推的dp,还是要多写dp吧,感觉写dp用的时间太久了day2这天是ccf的测试赛,测完就练了套河南大学联赛,10题看当时榜可能第八,只能说队友太给力了。写的那道l感觉挺好想的求方案数,刚开始也是在猜结论,没有想着去好好推qwq,后面......
  • 2024牛客寒假算法基础集训营1 K 牛镇公务员考试 题解
    Question2024牛客寒假算法基础集训营1K牛镇公务员考试给出一张试卷有\(n\)道单选题,每道题用一个整数\(a_i\)和一个长度为\(5\)的字符串\(s_i\)表示,其中第\(i\)道题的题面为:第\(a_i\)道题的答案是()A.\(s_1\)B.\(s_2\)C.\(s_3\)D.\(s_4\)E.\(s_5\)问:正......
  • 杂记 2024-02-04 农历腊月25,立春
    1.2024-02-04立春。立春,为二十四节气之首。立,是“开始”之意;春,代表着温暖、生长。时至立春,在我国的北回归线(黄赤交角)及其以南一带,可明显感觉到早春的气息。北回归线是一条重要纬线,其自西向东穿过中国云南、广西、广东、福建(海域)、台湾五省区。《立春》宋·白玉蟾东风吹散梅梢雪......
  • [CF383E] Vowels 题解
    [CF383E]Vowels题解思路要求的这个东西一看就没什么性质,考虑枚举所有元音子集。如果我们能够求出\(f_s\)表示\(s\)集合作为元音时有多少个单词至少包含一个元音。难求,正难则反,考虑\(f_s\)表示\(s\)集合作为元音时有多少个单词全都由非元音字母组成,由于对称性,我们只......
  • SNOI 2024 幽默记
    先贴个我之前写的幽默NOIP游记吧!T1开考看了一眼,随便想了一会就有思路了。用stl搞了一下,大概开考后20min过掉所有大样例。然后就对着剩下三道题沉默了一整场考试。感觉T3是个数据结构,长得比较眉清目秀,就先去看了T3,但是越看越迷惑,没什么思路,就扔了去想T2。理解了一......
  • 2024年生成式AI芯片市场规模将达500亿美元
    1月24日,德勤发布《2024科技、传媒和电信行业预测》中文版报告,2024年是科技、传媒和电信行业关键的一年,不少科技公司正利用生成式AI升级软件和服务,预计今年全球生成式人工智能芯片销售额可能达到500亿美元以上。 2024年将有许多软件公司在产品中嵌入生成式AI,有些企业的产品将......
  • Luogu「Daily OI Round 3」Simple 题解
    #include<iostream>#include<cstdio>#include<queue>#include<algorithm>#include<cstring>#include<string>#include<string.h>#include<vector>#defineintlonglong#definerep(a,b,c)for(autoa=b;a......
  • Hello 2024C. Grouping Increases(贪心)
    我们只需要记录每个数结尾的数是多少(有点最长上升子序列的味道)这种子序列的题目很多都是这样的,因为不需要连续很多时候我们只记录最后一个元素是多少。\(记s为较大子序列结尾当前的数,t为较小子序列结尾的数,下面分类讨论\)\(当a[i]<=t<s时\)我们将a[i]既可以放进t所在的子序列,......