CSP-S 2024 简单题

以下均为考场做法。

T1 决斗 (duel)

考虑贪心,按照攻击力 \(a_i\) 排序,从小到大使用所有怪物进行攻击,每只怪物攻击一个在场且能击杀的怪物中,攻击力最大的一个。这样显然最优,因为每一次攻击都被完美的利用到了。

于是设 \(c_x\) 表示满足 \(a_i = x\) 的 \(i\) 的个数。按照 \(x\) 从小到大扫,维护一个变量 \(cnt\) 表示当前的怪物数量,初始为 \(0\),每次相当于 \(cnt \gets \max(cnt - c_x, 0) + c_x\)。表示先用攻击力为 \(x\) 的怪物击杀其他怪物,再加入这些怪物。

这样也可以证明答案为 \(\max c_x\)。考查 \(c\) 的单调栈即可。时间复杂度 \(O(n)\)。

T2 超速检测 (detect)

首先考虑将物理问题转化为 OI 问题。对于每辆车 \(i\) 求一个 \([l_i, r_i]\),表示 \(i\) 在路过第 \(l_i\) 至 \(r_i\) 个测速仪时超速,然后就比较好做了。

考场推法是这样的:一辆车,初始位置为 \(d\),初速度为 \(v_0\),加速度为 \(a\),则 \(t\) 秒后速度为 \(v_t = v_0 + at\),我们尝试写出一个方程 \(v_0 + at = V\),然后一定是一段前缀或者后缀合法。

先判掉一些 \(\text{Corner Case}\):若 \(v_0 > V\) 且 \(a > 0\),则后面全部超速。若 \(v_0 \le V\) 且 \(a < 0\),则永远不会超速。若 \(a = 0\),则只需考察是否有 \(v_0 > V\),同样可以规约到上面两种情况之一。

否则 \(v_0 +at = V\) 不会失效。解出 \(t = \frac{V - v_0}{a}\)。考虑在 \(0 \sim t\) 秒内的位移为 \(x = v_0t + \frac{1}{2} at^2\)。\(t\) 秒后位置为 \(d + v_0t + \frac{1}{2} at^2\)。代入 \(t\),得到 \(d + v_0(\frac{V - v_0}{a}) + \frac{1}{2}a(\frac{V - v_0}{a})^2 = d + \frac{V^2 - {v_0}^2}{2a}\),在测速仪的数组上二分这个位置即可。

最后考虑最前面讲的抽象问题怎么做。第一问显然是满足 \(l_i \le r_i\) 的 \(i\) 的个数。第二问考虑贪心,将所有区间 \([l_i, r_i]\) 按照右端点排序,每次能拖就拖,不能拖就在 \(r_i\) 处放一个测速仪,这个应该是简单的。

时间复杂度 \(O(n \log n)\)。

T3 染色 (color)

将红色和蓝色的涂色看成划分为两个子序列。容易想到设 \(f_{i, x, y}\) 表示,考虑了前 \(i\) 个位置,第一个序列结尾为 \(x\),第二个序列结尾为 \(y\) 的最大收益。

由于两个序列不区分,且放完 \(i\) 时一定有一个子序列的结尾为 \(a_i\),所以这个状态有一维是多余的,设 \(f_{i, x}\) 表示考虑前 \(i\) 个位置,一个序列结尾为 \(x\),另一个序列结尾为 \(a_i\) 的最大收益即可。

考虑 \(f_{i, x}\) 到 \(f_{i + 1, y}\) 的转移,有两种可能:

  • \(a_{i + 1}\) 和 \(a_i\) 在一个子序列,则这一步的收益为 \([a_{i + 1} = a_i] a_{i + 1}\),这是一个只与 \(i\) 有关的值。
  • \(a_{i + 1}\) 和 \(x\) 在一个子序列,则这一步的收益为 \([a_{i + 1} = x] a_{ i + 1}\)。

对于第一种转移,相当于一个全局加。对于第二种转移,注意到对于任意的 \(x\) 都会转移到 \(f_{i + 1, a_i}\),则我们只关心值最大的那个。分类讨论,\(a_{i + 1} = x\) 的情况只需做单点查。而 \(a_{i + 1} \neq x\) 的情况我们只关心全局 \(\max\)。于是对全局加打 \(tag\),然后维护全局 \(\max\) 即可。

时间复杂度 \(O(n \log n)\),其中 \(\log n\) 仅用于离散化。

CSP-S 2024 简单题的更多相关文章

  1. BZOJ 2683: 简单题

    2683: 简单题 Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 913  Solved: 379[Submit][Status][Discuss] ...

  2. 【BZOJ-1176&2683】Mokia&简单题 CDQ分治

    1176: [Balkan2007]Mokia Time Limit: 30 Sec  Memory Limit: 162 MBSubmit: 1854  Solved: 821[Submit][St ...

  3. Bzoj4066 简单题

    Time Limit: 50 Sec  Memory Limit: 20 MBSubmit: 2185  Solved: 581 Description 你有一个N*N的棋盘,每个格子内有一个整数,初 ...

  4. Bzoj2683 简单题

    Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 1071  Solved: 428 Description 你有一个N*N的棋盘,每个格子内有一个整数, ...

  5. 这样leetcode简单题都更完了

    这样leetcode简单题都更完了,作为水题王的我开始要更新leetcode中等题和难题了,有些挖了很久的坑也将在在这个阶段一一揭晓,接下来的算法性更强,我就要开始分专题更新题目,而不是再以我的A题顺 ...

  6. [BZOJ2683][BZOJ4066]简单题

    [BZOJ2683][BZOJ4066]简单题 试题描述 你有一个N*N的棋盘,每个格子内有一个整数,初始时的时候全部为0,现在需要维护两种操作: 命令 参数限制 内容 1 x y A 1<=x ...

  7. HDU 1753 大明A+B(字符串模拟,简单题)

    简单题,但要考虑一些细节: 前导0不要,后导0不要,小数长度不一样时,有进位时,逆置处理输出 然后处理起来就比较麻烦了. 题目链接 我的代码纯模拟,把小数点前后分开来处理,写的很繁杂,纯当纪念——可怜 ...

  8. 团体程序设计天梯赛-练习集L1-014. 简单题

    L1-014. 简单题 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 这次真的没骗你 —— 这道超级简单的题目没有任何输入. ...

  9. bzoj 4066: 简单题 kd-tree

    4066: 简单题 Time Limit: 50 Sec  Memory Limit: 20 MBSubmit: 234  Solved: 82[Submit][Status][Discuss] De ...

  10. 又一道简单题&&Ladygod(两道思维水题)

    Ladygod Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit S ...

随机推荐

  1. 使用Typora编写后的md文件优雅的上传到博客(插件dotnet-cnblog的使用)

    一.Typora的设置 如下图,设置图片上传位置 之后文章上的图片都会临时存放到文件同级目录下的xxx.Asster文件夹下面. 二.下载插件dotnet-cnblog 1.安装.Net Core S ...

  2. [nRF24L01+] 3. Radio Control 无线电控制

    3. Radio Control 无线电控制 nRF24L01+可以配置为:power down, standby, Rx/Tx mode 3.1. 无线控制状态图 当VDD电压大于1.9V时,进入上 ...

  3. Word格式刷快捷键失效恢复方法

    突然某天写材料的时候发现word格式刷快捷键变成了Ctrl+Alt+C和Ctrl+Alt+V,用着这个别扭,于是探索如何改回Ctrl+Shift+C和Ctrl+Shift+V,下边是步骤记录. 打开w ...

  4. 简单理解.net 依赖注入的三种方式

    前言 :.NET5.0 于2020年11月10日正式发布,它是3.1之后的 .NET Core 的下一个主要版本.微软将这个新版本命名为 .NET 5.0 而不是 .NET Core 4.0,其原因有 ...

  5. LaTeX 书写函数

    \[\text{text 模式} \] \[\mathrm{mathrm 模式} \] \[\textit{textit 模式} \] \[\operatorname{operatorname 模式} ...

  6. Linux 网络设备命名规则

    在 Linux 系统中,网络接口的命名规则已经经历了几次重要变化,特别是从传统的以 eth 和 wlan 开头的名称,转变到更现代.更具描述性的命名方式.以下是这些变化的概述: 1. 传统命名约定 在 ...

  7. WPF 保姆级教程怎么实现一个树形菜单

    先看一下效果吧: 我们直接通过改造一下原版的TreeView来实现上面这个效果 我们先创建一个普通的TreeView 代码很简单: <TreeView> <TreeViewItem ...

  8. python 浅拷贝与深拷贝

    赋值引用 >>> a= {1:[1,2]}>>> b = a>>> b[2]=3>>> b {1: [1, 2], 2: 3} ...

  9. SPIE独立出版。遥感征稿中--2024年遥感与数字地球国际学术会议(RSDE 2024)

    ​ [成都,遥感主题,稳定EI检索]2024年遥感与数字地球国际学术会议(RSDE 2024) 2024 International Conference on Remote Sensing and ...

  10. SQL Server – 树结构 (二叉树, 红黑树, B-树, B+树)

    前言 很久以前有学习过各种树结构, 但后来真的没有在实际项目中运用到. 毕竟我主要负责的都是写业务代码. 太上层了 但是忘光光还是很可惜的. 所以久久可以复习一下. 记得概念也好, 帮助思考. 参考: ...