NOIP20240808
NOIP20240809
T1 冲浪
- 题意:给你一个序列 \(a_1,a_2,a_3\dots a_n\),你可以向左或右移动位置,或删除当前位置左或右所有的数字。当前位置为 \(a_{pos}\),询问至少几次操作,使得序列只剩下 \(a_l\dots a_r\)。
- 题解:多种情况讨论,请讨论完整。
- 代码
T2 三角
- 题意:
给定一个包含 \(n\) 个整数的序列 \(a\),想知道有多少个长度为 \(3\) 的子序列 \((a_x, a_y, a_z)\) 满足:
- \(x < y < z\)
- \(a_x \times k = a_y\)
- \(a_y \times k = a_z\)
其中 \(k\) 是某个固定的常数。
求出满足上述条件的所有可能的三元子序列的数量。
- 题解:开个
map
DP,枚举中间的数,左右乘即可。 - 代码
T3 序列
- 题意:让你构造一个每个数为 \(1 \sim n\) 的正整数无限长的序列,满足:
-
第 \(n\) 项及之后的所有项都相等
-
对于每一个 \(a_i\),满足 \(a_{i+1} \sim a_{i+a_i}\) 个数都相同。
问你有多少种方案 \(\bmod 10^9+7\)。
T4 文章
- 题意:给定一个长为 \(n\) 的数列 \(a\)。\(m\) 次询问,每次给出 \(a_0\) 的值,求至少删去多少个数使任意位置的前缀和不为负数。(队测时加强了数据,数据为 \(1\le n\le 2\times 10^5,1\le m\le 2\times 10^5\))
- 题解:洛谷可以
dp
,队测只能贪心,只给出dp
的题解 - 代码
T5 命运记录 不会
T6 现充
-
题意:有 \(n\) 个潘奕帆,每个潘奕帆有一个整数三观值。你需要实现一个数据结构,支持两种操作:
-
1 pos val
:将第 \(pos\) 个潘奕帆的三观值更新为 \(val\)。 -
2 l r
:在区间 \([l \oplus cnt, r \oplus cnt]\) 内,判断是否存在两个潘奕帆的三观值之和等于一个固定的数 \(w\)。其中,\(\oplus\) 表示异或运算,\(cnt\) 是在此操作前,查询操作得到的Yes
答案的个数。
\(m\) 次操作,对于每个查询操作,判断是否存在这样的两个潘奕帆。
- 题解:暴力写好一点可以过,正解是线段树。
- 代码