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 ...
随机推荐
- Java基础之时间类
- 最近公共祖先模板(LCA)
include <bits/stdc++.h> using namespace std; struct LCA { int n; vector<int> dep; vector ...
- 从0实现基于Linux socket聊天室-实现聊天室的登录、注册功能-3
上一篇我们已经讲了如何搭建一个多线程的服务器模型,可以支持多个客户端同时连接服务器,本篇我们来实现多个客户端,如何实现向服务器注册信息,并实现登录的功能. 数据结构 接着上一篇的实例代码继续增加功能. ...
- 一文讲清楚static关键字
static能修饰的地方 静态变量 静态变量: 又称为类变量,也就是说这个变量属于类的,类所有的实例都共享静态变量,可以直接通过类名来访问它:静态变量在内存中只存在一份. 实例变量: 每创建一个实例就 ...
- C++ was not declared in this scope
大概一搜百度,没搜到想要的结果,后面自己发现问题,由于是第二次犯这个错误(第一次很快发现,这一次找了比较久),所以记录一下 当调用一个数据结构或者一个函数的时候,出现这个语句,首先看相关的头文件有没有 ...
- 实用接地气的 .NET 微服务框架
前言 微服务架构已经成为搭建高效.可扩展系统的关键技术之一,然而,现有许多微服务框架往往过于复杂,使得我们普通开发者难以快速上手并体验到微服务带了的便利.为了解决这一问题,于是作者精心打造了一款最接地 ...
- Java并发之原子变量及CAS算法-上篇
Java并发之原子变量及CAS算法-上篇 概述 本文主要讲在Java并发编程的时候,如果保证变量的原子性,在JDK提供的类中式怎么保证变量原子性的呢?.对应Java中的包是:java.util.c ...
- springboot 静态文件夹
正常这个很久了,不需要写,但是好几年没有写这个相关的,都忘了,好记性不如烂笔头 spring: resources: static-locations: file:D:\\test #对应服务器内映射 ...
- Spring框架之IOC介绍
Spring之IOC 简介 首先,官网中有这样一句话:Spring Framework implementation of the Inversion of Control (IoC) princip ...
- 前端使用xlsx模板导出表格
前言 前端导出表格有很多种方案,但是表格样式一旦复杂了,那么就得用代码写excel的样式,还是比较麻烦的.每次样式不一样,就得重新写,这时使用表格模板的优势就体现出来了,想导出不同样式的表格直接修改表 ...