NOIP20240731
NOIP20240731
T1 数据库
- 题意:给定一个字符串
S
作为用户名,检查它是否已存在于数据库(集合)中。如果S
不存在,则返回OK
并将S
加入数据库。如果S
已存在,则在S
后面添加最小的正整数,然后加入数据库,并返回该新用户名。 - 题解:简单的
map
练习题。 - 代码
T2 社会服务
- 题意:有两边各
个潘奕帆要过马路并返回原地,搀扶一个潘奕帆过马路和你单独穿越马路的时间为 ,潘奕帆休息的时间为 。你一次只能扶一个潘奕帆,问所有潘奕帆过马路并返回的最短时间。 - 题解:首先扶潘奕帆过第一波马路的时间是
,接下来考虑你留在哪边扶第二波马路。留在这边的开始时间是 ,去那边的开始时间是 ,考虑最小的第二波时间即可,第二波时间开始之后可以连续扶过马路。 - 代码
T3 完美匹配
- 题意:自己看
- 题解:
为奇数答案为 。
把两个点绑一块,共有 种方法。
绑一块的点能组成的树,有 种。
点与点之间相互连接,有 种。
将方案乘起来即可。 - 代码
T4 合并石子
-
题意:给定一个由正整数组成的序列
,你可以进行若干次操作,每次操作你可以选择一个位置 ( ),如果满足 ,则可以删除 。删除后,后面的数字依次前移,序列长度减少 。问经过若干次操作后,序列的最小长度是多少? -
题解:差分之后,变成每次选择两个相邻的相同的值
,把他们合并成 。
注意到 不同的数一定不能合并,按这个东西分段,分段之后考虑怎样合并。
对于每一个点 ,设 表示以 为右端点合并到 为 的左端点需要是多少,这个可以倍增预处理出来。
剩下的对于每一段做dp
,设 为最小长度,则对于每一个 都有 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步