2023NOIP A层联测32
文章目录
- 2023NOIP A层联测32
- A flandre
- B.meirin
- C.sakuya
- D. 红楼 ~ Eastern Dream
- 总结
A flandre
有 nnn 种烟花,每种烟花有两个参数 a , ba , ba,b,你要构造一种燃放顺序,使得 bbb 的和最大, bbb 会改变,具体来说:设 iii 在 jjj 前燃放,那么。
- a i< a ja_i < a_j ai<aj ,则 b j+k→ b jb_j +k \to b_j bj+k→bj
- a i= a ja_i = a_j ai=aj 则 b jb_j bj 不变
- a i> a ja_i >a_j ai>aj 则 b j−k→ b jb_j – k \to b_j bj−k→bj
1 ≤ n ≤ 1 06 1\le n \le 10^61≤n≤106
这个题考场就想到了正解。思考一下,最优方案满足一个性质,将 aaa 从小到大排序,依次燃放。暴力求答案,然后选出最优的方案就好了,可惜有一个变量没有给初始值挂了 707070 分,关键是大样例还过了。
B.meirin
给定两个序列 a , ba , ba,b
qqq 次操作,每次把 bbb 的 [ l , r ][l , r][l,r] 的每个值加上 kkk ,每次操作后查询:
∑ l=1n ∑ r=ln( ∑ i=lr a i)×( ∑ i=lr b i) m o d (1 0 9+7)\sum _{l = 1} ^n \sum_{r = l}^n(\sum_{i= l}^r a_i) \times (\sum_{i= l}^r b_i) \mod (10^9 + 7) l=1∑nr=l∑n(i=l∑rai)×(i=l∑rbi)mod(109+7)
n , q ≤ 5 × 1 05 n , q \le 5 \times 10^5n,q≤5×105
因为修改的是 bbb 的值,我们就可以考虑把 [ l , r ][l , r][l,r] 里面的值对答案的影响算出来。
设 s u m 1i sum1_isum1i 是 i × ai i \times a_ii×ai 的前缀和, s u m 2i sum2_isum2i 就是 ( n − i + 1 ) × ai (n – i + 1) \times a_i(n−i+1)×ai 的前缀和。
每个 bi b_ibi 的贡献就是 s u m 1 i − 1× ( n − i + 1 ) + s u m 2 i + 1× i + ai× i × ( n − i + 1 )sum1_{i – 1}\times (n – i + 1) +sum2_{i + 1} \times i +a_i \times i \times(n – i + 1)sum1i−1×(n−i+1)+sum2i+1×i+ai×i×(n−i+1)
用一个前缀和维护一下这个值就可以做到 O ( 1 )O(1)O(1) 修改。
考场最后 30 m i n30 min30min 才想到正解,但是码了 15 m i n15min15min 发现只能过小样例过不了大样例,考后才发现是快写打错了。
C.sakuya
有 nnn 个房间构成了一棵树,边有边权。树上有 mmm 个特殊的房间,求走完这些房间的期望。
每次修改会使得连接 xxx 的所有边加上 kkk
n , m , q ≤ 5 × 1 05 n , m , q \le 5 \times 10^5n,m,q≤5×105
考虑修改一条边的影响,就是这条边两端的特殊房间的数量的乘积。
先把答案求出来,每次修改的时候就是把答案加上这个影响乘上 kkk 就好了。
D. 红楼 ~ Eastern Dream
给出一个长度为 nnn 的序列 aaa ,有 mmm 次操作,格式如下:
- 1,x,y,k1, x , y , k 1,x,y,k 对于所有满足 (i−1) m o d x≤y(i – 1) \mod x \le y (i−1)modx≤y 的 ii i ,将 a ia_i ai 加上 kk k
- 2,l,r2, l , r 2,l,r 求 ∑ i=1r a i\sum_{i= 1}^r a_i ∑i=1rai
n , m ≤ 2 ≤ 1 05 n , m \le 2 \le 10^5n,m≤2≤105
根号分治。维护两个数组 v i , j, v si v_{i , j} , vs_ivi,j,vsi ,表示对于所有 ( x − 1 ) mod i = j(x – 1) \mod i = j(x−1)modi=j 的 xxx , ax a_xax 要加上的值, $vs_{i , j} $ 是 v i , j v _{i , j}vi,j 的前缀和,即对于所有 ( x − 1 ) mod i ≤ j(x – 1) \mod i \le j(x−1)modi≤j 的 xxx , ax a_xax 要加上的值。
x ≤ n x\le \sqrt nx≤n 可以直接修改。
x ≥ n x\ge \sqrt nx≥n 需要用分块维护差分
总结
期望得分: 100 + 100 + 0 + 25 = 225100 +100 + 0 +25 = 225100+100+0+25=225
实际得分: 70 + 30 + 0 + 25 = 11570 + 30 + 0 + 25 = 11570+30+0+25=115
这次本来是一个信心场,但还是失误了。两个题想到正解都挂了,一个是忘记设初值,一个是快写打错,就是自己的代码实现能力不足了。而且码完一个题可以考虑先检查一小会。 T 3T3T3 还没有拿到暴力分,遇到这种自己不熟练的题目,可以打打暴力,而不是直接就跳了。