NOI 2026
035966_L3
·
·
生活·游记
Day -69
Part 1
哇,T1 好像是签到!让我写一写……好吧并不签到,原来那是连乘不是连加。
Part 2
但 T2 的 Subtask 1 总该是签到了……那么有了 7 分。
Part 3
但 T2 的 Subtask 2 总该是签到了……那么有了 15 分。
Part 4
但 T2 的 Subtask 3 总该是……先等一等。考虑把 2^i 塞进去,然后逐个询问某个前缀与接下来的一项,特判答案 \le 2 和加上 1 成为 2 的次幂的情况,接下来按位确定二进制下最高位后面的部分,那么有了 45 分。
Part 5
可以直接把 Subtask 3 交到 Subtask 4,那么有了 56 分!
Part 6
继续考虑,3^7 = 2187 导致需要三进制,那么……分成三段后除去中间的那一段和使用其他项配出的定值作比较,可以找到答案在哪一段,那么有了 89 分。
Part 7
接下来是更为精细的调整……
Part 8
好的!那么作为签到的 T2 就这么结束了,还剩大约两个小时。接下来是 T3 的 12 分暴力……
Part 9
暴力什么时候是 12 分了,不是 28 分吗?
Part 10
那么再来看 T1!先拿走 10 分暴力……
Part 11
暴力什么时候是 10 分了,不是 20 分吗?
Part 12
注意到 T1 的模数不是质数,会不会需要一点高精度呢?先写一写……
Part 13
写完了,接下来……好吧没什么进展,
Part 14
T3 的暴力什么时候是 28 分了,不是 40 分吗?
Part 15
T3 的暴力什么时候是 40 分了,不是 48 分吗……好吧这不太好写,大概写不完了。
Part 16
还剩 20 分钟,来看一看组委会发的零食吧!
Part 17
交卷!最终的得分是 20 + 100 + 40 = 160。
Day 2
呃……以上不是前情提要,只是这实在没什么好写的。
真的吗?
import requests
count = 0
while True:
requests.get("http://172.61.0.1:8080")
count += 1
if count % 100 == 0:
print(count)
哇,那个刚刚只有 4.2k 的访问量飙升起来了!
...
49000
49100
49200
ConnectionError: Connection aborted by ...
好吧,似乎酿成大祸了,我下次再也不这么做了。
Day 3
Part 1
这场额外给了 5 分钟的看题时间!打开 T1,结论显而易见,DP……好吧我不会。
Part 2
怎么一个小时还不会?
Part 3
怎么一个半小时还不会?那得动手了:设 f_{r, r', k} 表示总右端点为 r,上一条相交线段右端点为 r',选择了 k 条线段的答案。
Part 4
写完是 O(nm^2k^2) 的,怎么只有 20 分?
Part 5
### Part 6
那么去看看 T2 吧!大胆猜测,以一个距离为分界,较近的直接走到终点,较远的随机传送。
### Part 7
怎么只有 $20$ 分,结论不对吗……啊,是忘记约分了。
### Part 8
那么有 $40$ 分了……但暴力什么时候是 $40$ 分了,不是 $45$ 分吗?
### Part 9
那么有 $45$ 分了……但暴力什么时候是 $45$ 分了,不是 $50$ 分吗?
### Part 10
那么有 $50$ 分了!来到 T3,直接做一轮 $\{1, 2, \ldots, m\}$ 的询问,那么有了 $14$ 分。
### Part 11
但 T1 不能只有 $28$ 分啊!特殊性质 A,线段互不包含……那么不用考虑内层线段了,时间复杂度是 $O(nmk)$,那么有了 $36$ 分。
### Part 12
但 T1 不能只有 $36$ 分啊!特殊性质 B,线段互不部分相交……那么整个 $r'$ 就没用了,时间复杂度是 $O(nmk)$……
### Part 13
怎么还被卡空间了呢?还需要精细处理一下,那么有了 $56$ 分。
### Part 14
但 T1 不能只有 $56$ 分啊……啊,那么把 $r'$ 改成内层线段的端点,时间复杂度就变成了 $O(n^2 k)$。
### Part 15
可是调不完了啊!还剩 $5$ 分钟,必须决断了,直接提交……
### Part 16
哇,特殊性质 C 通过了,其他的 TLE 了,那么有了 $80$ 分。
### Part 17
交卷!最终的分数是 $80 + 50 + 14 = 144$。
# Day 4
但这个分数的结局可想而知啊,后一场不能这样了。
# Day 5
### Part 1
拿到 T1,先二分答案让序列只剩两种值,好像做完了!
### Part 2
等一下,它要求两次中位数吗,那又不会做了……
### Part 3
但绝不能像上一场那样卡在 T1 了!试试直接输出前 $k$ 大值的中位数……好吧只得了 $5$ 分。
### Part 4
那么 $O(nk)$ 是好做的,能有 $70$ 分……但这次不是来混到 $70$ 分就走的,那么再想想。
### Part 5
那么取序列中的 $t$ 个大元素指挥分成最多 $2t + 1$ 段,对于偶数的 $k$,排除其中一个,就合法了。那么排除……
### Part 6
啊,可以排除两端的 $4$ 个元素或者相距不超过 $3$ 的元素。但写完过不去样例 $2$ 下 $k = 2$ 的数据……
### Part 7
看来 $k = 2$ 需要特判了!特判一下,交上去顺利地得到了对应的 $15$ 分。
### Part 8
那么 $k$ 为奇数也要这样操作了,只不过需要排除两个段……还是两端的 $4$ 个元素或者相距不超过 $3$ 的元素,以及……
### Part 9
以及进一步考虑到两端的 $8$ 个元素!特判一下 $k = 3$,直接提交……怎么只有 $40$ 分?
### Part 10
但是 $k \ge 6$ 的特殊性质通过了!那么我们拿 $O(nk)$ 直接写 $k \le 5$……
### Part 11
好的,T1 结束了,不会再像上一场那样倒在 T1 了……还剩三个小时。
### Part 12
啊,[我竟然上个月才第一次了解到一点关于 T2 的内容](https://scg3.piaoztsdy.cn/p/277)……那么相信 NOI 的评测机,$20$ 分的 $O(nq \log n)$ 暴力是好写的。
### Part 13
那么先去看 T3 吧!对于两棵子树,合并时可能会将两棵子树的某个颜色同化,此时对应的两个祖先限制就变成一个了,并且合并时使用的根结点可以用于满足一部分限制。
### Part 14
那么开始吧!设 $f_{x, s, c}$ 表示 $x$ 的子树中出现 $s$ 种颜色且最少剩下 $c$ 个待满足的祖先限制的缤纷度序列对应的答案之和,直接做树上背包大概是 $O(n^6)$ 的。
### Part 15
那么合并子树时,初始颜色数子树颜色数之和加上 $1$,最少不能同化到少于最缤纷的子树的颜色,此时每同化一个颜色就有机会解决掉一个限制,每个子树最多解决一个限制……
### Part 16
怎么只有 $8$ 分?啊,并不是每个子树最多解决一个限制,而是剩余限制数比原先单个子树的最多限制数至多少 $1$,那么纠正后有了 $16$ 分。
### Part 17
也许 $O(n^6)$ 能过 $n = 50$?那么有了 $28$ 分。
### Part 18
我为什么在对特殊性质 A 做 $O(n^6)$?一条链下每轮只有一个子树,可以做 $O(n^4)$……那么有了 $32$ 分。
### Part 19
回到 T2,三个数据随机的测试点是不是全部回答 `No` 可以通过呢……好吧并不能。
### Part 20
那如果我对小区间做 $O(k \log k)$ 暴力……哇,得到了 $4$ 分,希望 System Test 也有这个。
### Part 21
接下来是 $a_i \le 9$ 的特殊性质!此时只需要考察这 $10$ 个结点被删掉的时刻,其他结点一定是按编号顺序被删掉的。
### Part 22
可是交上去 WA 了,这该怎么办,不存在这样的大样例……吗?原来样例 $2$ 在暴力数据范围下满足这个特殊性质。
### Part 23
原来是出现了 $x_i = y_i$ 吗?好吧……那么有了 $32$ 分。
### Part 24
为什么 $x_i, y_i \le 9$ 需要单独想做法?那么有了 $40$ 分。
### Part 25
于是 $25$ 次自测用完啦!并且也没什么时间了。
### Part 26
交卷!最终的分数是 $100 + 40 + 32 = 172$。
# Day 6
最终的分数是 $100 + 144 + 172 = 416$,那么大家再见啦!