11.3模拟赛总结
Posted 卿吟酒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了11.3模拟赛总结相关的知识,希望对你有一定的参考价值。
打的蛮开心的
主要是打到最后灵光一现还是很爽的)
但不得不说,今早真的好困啊,起码有一个小时都不精神)
最后飞速写T1的时候还一直打嗝,自闭死了
隔空和岳老师比个心(´∀`)♡
时间安排
7.50-8.15 看题
8.15-8.30 推T1(数据结构方向),没啥想法之后跑了,准备回头打暴力
8.30-9.15 推+写T2
9.15-10.08 推T3(推了很多结论但然并卯)
10.08-10.30 决策了一下还没写的T1,T4 觉得继续吊死在T3上也没什么结果,打了T3的暴力,跑了
10.30-10.50 T1暴力
10.50-11.20 推T4,试图暴力发现复杂度不对
11.20-11.30+ 造数据验了一下T2
11.40-12.00 觉得摆烂不好,于是盯着T1试图重新挣扎一下,抛弃所有想法之后重新构思,飞速得了个结论,于是尝试写了写,发现和暴力拍是对的,搞成分段
12.00-12.10 再测了测数据 检查了一下,交题
题目分析
T1
显然,可以考虑每个块的出现次数,再考虑它对答案的影响
每个块会出现 2 n − 1 2^{n-1} 2n−1次,题目给出一个很好的性质,保证了 l , r l,r l,r不重合
所以考虑 ,什么时候多个块会成为连通块?
其实当且仅当 A A A块的左端点大于 B B B块的左端点,且 A A A块的右端点小于 B B B块的左端点
因此我们考虑,对于多个块合并成的一个块,如何统计答案
事实上,我们可以考虑把这些块的贡献都放在第一个块上去考虑
所以,把所有块按左端点排序,这样可以保证左端点小于 B l B_l Bl 的限制,开个树状数组,每个块用完之后,把它的右端点加入树状数组,来查询右端点大于 B l B_l Bl 的限制。
考虑第
i
i
i 个块算答案时,贡献就是
2
n
−
1
−
(
i
−
1
−
c
x
(
l
)
)
2^{n-1-(i-1-cx(l))}
2n−1−(i−1−cx(l))
(cx(l),查询出前i-1块有多少个右端点小于
l
l
l,相减就是有多少个大于
l
l
l)
T2
dp还挺显然的
直接考虑到前缀和维护某个连续段改成某个字符的代价是多少
f [ i ] min t = 1 m s [ t ] [ i ] + min j = p i − p ( f [ j ] − s [ m ] [ j ] ) f[i]\\min\\limits^{m}_{t=1}s[t][i]+\\min\\limits_{j=p}^{i-p}(f[j]-s[m][j]) f[i]t=1minms[t][i]+j=pmini−p(f[j]−s[m][j])
因为刚做了蜜蜂搬家,第一想法是“线段树上这不随便维护”
改了改式子 发现“单调队列不随便做”
又定睛一看“ j j j 根本不动,这直接取min就行吧…”
感觉这题应该放T1
T3
可以看出是一道好题
想到,可以用线段树维护,当在 x x x的子树内最小值为 y y y时,最多可以选取的点数
结果发现,我不会合并和转移这玩意…(最怕空气突然安静)
赛后
看题解,好像用来暴力那个程序改成用线段树合并做就是对的,赛时没考虑好,其实好像,线段树合并就是把原本暴力的东西复杂度变成log
T4
就差突脸上给你说是三进制状压了…
思考的时候被“如何解决 a a a打不到 b b b,但是 b b b能打到 a a a的情况”
赛后总结
-
考场不要摆烂,你永远不知道考试结束和灵光一现哪个先来
-
不要看着方案统计之类的就感觉是dp/数据结构乱搞,其实有时候把这些东西放掉再思考问题,可能会有新的想法
赛后得分分析
1.更进一步思考的话,可以考虑到,T3的线段树合并过程,其实就是用线段树在维护dp,如果考场代码能敲完(大概率是敲不完,没怎么写过线段树合并上的延迟下传),可以多拿60
2.这场没犯错
3.合理安排时间同1,少搞点就算可以看出来是状压也整不出来的4,多看看3,可能就能想到合理的线段树写法
以上是关于11.3模拟赛总结的主要内容,如果未能解决你的问题,请参考以下文章
今天更新到 macOS Big Sur 11.3 后,Android 模拟器无法启动
XCode 11.3 崩溃,iOS 13.2.2 模拟器 iPhone X 和 watchOS 4.2 Apple Watch 42mm