CSP-S 2024 简单题
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 简单题的更多相关文章
- BZOJ 2683: 简单题
2683: 简单题 Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 913 Solved: 379[Submit][Status][Discuss] ...
- 【BZOJ-1176&2683】Mokia&简单题 CDQ分治
1176: [Balkan2007]Mokia Time Limit: 30 Sec Memory Limit: 162 MBSubmit: 1854 Solved: 821[Submit][St ...
- Bzoj4066 简单题
Time Limit: 50 Sec Memory Limit: 20 MBSubmit: 2185 Solved: 581 Description 你有一个N*N的棋盘,每个格子内有一个整数,初 ...
- Bzoj2683 简单题
Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 1071 Solved: 428 Description 你有一个N*N的棋盘,每个格子内有一个整数, ...
- 这样leetcode简单题都更完了
这样leetcode简单题都更完了,作为水题王的我开始要更新leetcode中等题和难题了,有些挖了很久的坑也将在在这个阶段一一揭晓,接下来的算法性更强,我就要开始分专题更新题目,而不是再以我的A题顺 ...
- [BZOJ2683][BZOJ4066]简单题
[BZOJ2683][BZOJ4066]简单题 试题描述 你有一个N*N的棋盘,每个格子内有一个整数,初始时的时候全部为0,现在需要维护两种操作: 命令 参数限制 内容 1 x y A 1<=x ...
- HDU 1753 大明A+B(字符串模拟,简单题)
简单题,但要考虑一些细节: 前导0不要,后导0不要,小数长度不一样时,有进位时,逆置处理输出 然后处理起来就比较麻烦了. 题目链接 我的代码纯模拟,把小数点前后分开来处理,写的很繁杂,纯当纪念——可怜 ...
- 团体程序设计天梯赛-练习集L1-014. 简单题
L1-014. 简单题 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 这次真的没骗你 —— 这道超级简单的题目没有任何输入. ...
- bzoj 4066: 简单题 kd-tree
4066: 简单题 Time Limit: 50 Sec Memory Limit: 20 MBSubmit: 234 Solved: 82[Submit][Status][Discuss] De ...
- 又一道简单题&&Ladygod(两道思维水题)
Ladygod Time Limit: 3000/1000MS (Java/Others) Memory Limit: 65535/65535KB (Java/Others) Submit S ...
随机推荐
- AtCoder Beginner Contest 310
freee Programming Contest 2023(AtCoder Beginner Contest 310) - AtCoder A - Order Something Else (atc ...
- 线性dp:最长公共子序列
最长公共子序列 本文讲解的题与leetcode1143.最长公共子序列这题一样,阅读完可以挑战一下. 力扣题目链接 题目叙述: 给定两个字符串,输出其最长公共子序列,并输出它的长度 输入: ADABE ...
- 全网最适合入门的面向对象编程教程:38 Python常用复合数据类型-使用列表实现堆栈、队列和双端队列
全网最适合入门的面向对象编程教程:38 Python 常用复合数据类型-使用列表实现堆栈.队列和双端队列 摘要: 在 Python 中,列表(list)是一种非常灵活的数据结构,可以用来实现堆栈(st ...
- linux 操作系统下安装可视化界面
一.安装背景 1.小白一只,英文不熟.还很菜,面了几个实施,打击的体无完肤!so,人丑多读书吧. 2.安装环境: VMware + centos7 3.本着不懂就问的原则 开始了--- 二.安装前准备 ...
- Cannot find loader com.jme3.scene.plugins.ogre.MeshLoader
五月 20, 2022 2:46:07 下午 com.jme3.asset.AssetConfig loadText 警告: Cannot find loader com.jme3.scene.plu ...
- CSS MASK
首先看如下效果: 这种效果看起来很赞,可以做出很酷炫的交互,比如图上这种,还有一种就是引导页 经过我阅读作者的文章,原文地址. 发现其实只要使用两个核心CSS样式就能实现这个效果 分别为: 1. ba ...
- RxJS 系列 – Custom Operator
前言 虽然 RxJS 提供了非常多的 Operators. 但依然会有不够用的时候. 这时就可以自定义 Operator 了. Operator Is Just a Function Observab ...
- JavaScript – ES Module
前言 关于 JavaScript Modular 的多种版本和历史看这篇. 参考: 阮一峰 – Module 的语法 阮一峰 – Module 的加载实现 Export 语法 逐个 export 在想 ...
- CSS – Sass & SCSS
前言 CSS 代码多了就不好管理了, 这是它语法先天的不足. Sass 就是加强它语法的, Sass 为 CSS 引入了一些 JS 语言的特性, 比如 variable, function, para ...
- mongo查看服务状态
转载请注明出处: 查看数据库列表 show dbs 查看当前数据库 db 查看集合列表 show collections 查看数据库的状态 db.stats() 查看集合的状态 db.collecti ...