首页 > 其他分享 >[CSP-S 2024] 超速检测

[CSP-S 2024] 超速检测

时间:2024-11-01 19:30:32浏览次数:1  
标签:Right return Car 2024 超速 double Now CSP Left

前言

寄!

算法

计算超速区间

容易发现可以计算出每一辆车的超速区间
分讨策略大致如下
pADW0C6.png

void Calc(int Now)
{
    if (Car[Now].v > V)
    {
        if (Car[Now].a >= 0)
        {
            Car[Now].Left = Car[Now].d, Car[Now].Right = L;
            return;
        }
        else
        {
            Car[Now].Left = Car[Now].d;
            Car[Now].Right = (int)(std::min(double(L), double(Car[Now].d) + (double)((V * V) - (Car[Now].v * Car[Now].v)) / (2 * Car[Now].a)));
            if (((V * V) - (Car[Now].v * Car[Now].v)) % (2 * Car[Now].a) == 0)
            {
                Car[Now].Right--;
            }
            return;
        }
    }
    else
    {
        if (Car[Now].a > 0)
        {
            Car[Now].Left = ((int)(double(Car[Now].d) + (double)((V * V) - (Car[Now].v * Car[Now].v)) / (2 * Car[Now].a)) > L) ? 0 : (int)(double(Car[Now].d) + (double)((V * V) - (Car[Now].v * Car[Now].v)) / (2 * Car[Now].a));
            if (((V * V) - (Car[Now].v * Car[Now].v)) % (2 * Car[Now].a) == 0 && Car[Now].Left != 0)
            {
                Car[Now].Left++;
            }
            Car[Now].Right = (Car[Now].Left == 0) ? 0 : L;
            return;
        }
        else
        {
            Car[Now].Left = 0, Car[Now].Right = 0;
            return;
        }
    }
}

求解第一问

被测速仪判断到的条件是

\[\exists i \in [1, m], v_0 ^ 2 + 2a(s - p_i) > V ^ 2 \]

考虑二分求每个车辆能否被记录到, 并记录

求解第二问

现在有一些区间, 有一些点, 要选择一些点, 使得所有区间都分别至少包括一个点, 满足上述要求时, 需要最小化选点数量

考虑贪心 (以下考虑的区间都在第一问中被标记为会被记录)
将左端点排序, 从大往小扫, 记录当前选上的最小位置测速仪 \(P\)

若 \(P\) 没法检测到这个区间
再选上最小的大于等于区间左端点的测速仪, 更新 \(P\)

最后输出 \(M - \text{NUM}_{\text{must choose}}\) 即可

代码

后补

总结

这次没见过这种贪心, 分讨的严谨性还是很好的

标签:Right,return,Car,2024,超速,double,Now,CSP,Left
From: https://www.cnblogs.com/YzaCsp/p/18521099

相关文章

  • 2024.11.1 test
    B维护长度为二的次幂的数组,支持单点修改,区间和,全局执行以下三种操作之一:for(inti=0;i<n;i++)b[i]=0;for(inti=0;i<n;i++)b[i()x]+=a[i];for(inti=0;i<n;i++)a[i]=b[i];()里为或,且,异或中的一种。\(n\le2^{19}\)。考虑线段树维护。注意到如果为或/且,那么相当于对......
  • 2024-11-1-leetcode每日一题-3259. 超级饮料的最大强化能量
    题目描述来自未来的体育科学家给你两个整数数组 energyDrinkA 和 energyDrinkB,数组长度都等于 n。这两个数组分别代表A、B两种不同能量饮料每小时所能提供的强化能量。你需要每小时饮用一种能量饮料来 最大化 你的总强化能量。然而,如果从一种能量饮料切换到另一种,你......
  • X (Twitter)养号指南:2024最新攻略
    X (Twitter)作为活跃用户数以亿计的社交媒体平台,用户数依然在不断增长,其中巨大的流量吸引着个人用户与品牌和卖家。Twitter养号是有必要的,有大量案例表明养好号,可以大幅度降低账号被冻结的几率,并提升账号的稳定性和影响力,同时,通过合理的养号策略,可以提高内容的曝光率和用户互......
  • CSP-S 2024 游寄
    我不曾忘记很好听的草神歌,打算推完经过就推这个。我的破木箱装满枯萎的花放不下光与壤和新鲜的愿望如果能飞翔去高高的地方撒一张梦的网收集爱的回响你也在听吗落单的孩子啊别害怕别害怕黑夜不会太长悬崖上的花让我为你摘下数一瓣落一瓣就少一朵忧伤......
  • 2024.11.1总结
    本文于github博客同步更新。OI相关:A:分为两种情况处理:\(u\)到\(lca\)和\(lca\)到\(v\)。我的做法是先树剖,将每条链单独拿出来拉出来,根据\(a_i\)和\(b_i\)连边,正反各建一棵树,维护一下\(k\)级祖先。然后从\(u\)到\(v\)的时候每次根据从dfs序由小到大还是由......
  • 《上海市计算机学会竞赛平台2024年8月月赛丙组题目T1 统计得分 T2 等差数列的素性 T3
    T1统计得分内存限制: 256 Mb时间限制: 1000 ms题目描述在一场知识竞赛中,选手答对一题得 11 分,答错不得分且要倒扣 11 分,但扣分不能让分数小于 00。给定一个由 Y 及 N 构成的字符序列,答对记为 Y,答错记为 N。选手一开始从 00 分开始,请输出选手最后的得分......
  • 『模拟赛』多校A层冲刺NOIP2024模拟赛17
    Rank一般A.网络签不上的签到题。首先考虑枚举路径的做法,如果先枚举再计算的话复杂度会是\(\mathcal{O(\binom{n+m-2}{n-1}(n+m))}\)的,稍微优化一点的过程中可以去掉后面的\((n+m)\)。考虑此时我们要记什么,首先遇到加号其前面的值\(z\)就确定了,若上个符号为乘号那么......
  • 浏览器指纹修改指南2024 - 分析Geolocation API实现(十)
    在geolocation.h文件中,可以找到一个私有成员Member<GeoNotifierSet>one_shots_;Member<GeolocationWatchers>watchers_;//GeoNotifiersthatareinthemiddleofinvocation.////|HandleError(error)|and|MakeSuccessCallbacks|needtoclear|one_sho......
  • NOIP2024 模拟赛 #12
    学长出的模拟赛,风格挺好。赛时8:00T1会了一个\(O(n^2\logn)\)的做法,先写一下,看看能不能过样例。8:20过了小样例,大样例跑得慢但是是对的。8:40发现一个好的做法,可以枚举\(c_i\)最小的那一天选了哪个,再枚举\(k\)天,这样纯枚举复杂度是\(O(k)\)的。但是有些细节不太......
  • 2024年大湾区杯数学建模竞赛 A 题 证券市场投资风险控制模型设计 思路和代码(持续更新)
    目录任务一:风险计量指标计算与分析1.1平均收益率计算1.2市场流动性(换手率)1.3市场情绪指标(波动率)指标的经济意义和分析任务二:系统性风险预测模型构建2.1多因子模型示例2.2使用GARCH模型预测波动性任务三:事前风控体系构建任务四:合理收益预期设定任务一:风险计量......