网站给出的时间不是文章的发布时间,更不是文章的最后修改时间。
或许更好的阅读体验,可以参见我的 Hexo 博客(自带 BGM 警告)
未完结,gugugu……
下面的时间将 2019 年 11 月 16 日(比赛第一天)作为 Day1;将 2019 年 11 月 15 日(比赛前一天)作为 Day -1。(你也没见过公元 0 年对吧)
考场居然没有给每个考号分配座位(毕竟真正参加的人不多),到了考场现场在每个考室内部把人按照准考证号大小排序。(一开始选了一个基准值还以为要快排,结果马上就开始插入排序了)
看到题目发现全是选择判断;后面的阅读程序题不按套路出牌啊……
按顺序颓颓颓,阅读程序强行手摸小样例。
补全程序 T2 我根本没看懂,强行脑补一个样例挨个代进去,感觉没问题了,实际上错了一个。
对了一下网上答案,感觉 90 以上没问题啊……
八十几(大雾)
颓颓颓
请提醒破壁人五号考前不要听太 exciting 的音乐(然而突然脑内循环我也停不下来)
颓颓颓
酒店电梯有 0 层好评(雾)(那我是不是应该考虑一下要不要加上 Day0?)
晚饭的锅巴虾仁好吃(没吃到虾仁,但锅巴真的好吃)。
吃完早饭就走,到考场排队等着。矿泉水和小 main 包都没了。
进去敲了敲键盘,还是不习惯 Backspace 等键的位置。
扫雷。
发题,密码是认真思考。
看题,第一反应:
10 min 敲完 T1,unsigned long long
才能过差评。
颓颓颓 T2,想到了一个维护两个栈的做法,但是出栈写不出来,先写链。
第三个大样例好臭啊。
感觉链剖可以处理树,顺着重链一路向下,遇到轻边备份一份状态,待会再看吧。
然后看 T3 的链(极其错误的决定),写了半天把节点编号、数字还有它在链上面的位置弄成一团,调完之后顺手把自己 Hack 了,感觉很慌.jpg
回头写 T2,感觉时间复杂度很玄学,但还是硬着头皮写完了……(写游记时突然发现一条链上每一个点再挂一个儿子好像就能卡)。
看看时间感觉很慌,飞速敲完 T3 O ( n ! ) O(n!) O(n!) 暴力之后用虚拟机编译一下,除了 T3 效率之外都感觉还行,然后就是扫雷。
考试结束就溜了。
按位模拟,判断每一位该是 0 还是 1,注意 ull
。
链上可以维护两个栈,分别是没能配对的 (
的位置和每个极长的合法子串的位置和其包含的极大括号对的数量。时间复杂度 O ( n ) O(n) O(n)
树上就剖分一波,分叉处复制一份当前的栈,时间复杂度 O ( n 2 ) O(n^2) O(n2)。
O ( n ! n ) O(n!n) O(n!n) 预计跑不过去自闭了。
吃饭时突然反应过来 T2 每次对栈的修改是 O ( 1 ) O(1) O(1) 的,这样重新出栈就可做了……(╯‵□′)╯︵┻━┻
考室门口领了一瓶水。敲读优,玩扫雷。
抓紧时间
开题:
推 T1 式子,显然可以先忽略 Yazid 的要求(不超过一半那个),再减去不符合要求的,这样做的好处在于超过一半的原料至多只会有一个。推推推推推半天推不出来,决定写个计数 DP 拿了 84 分走人。
写完 1h 过去了。看了一下 T3 O ( n 2 ) O(n^2) O(n2) 挺好写的,赶紧写一个,然后决定肝 T2。
T2 推了半天,得出了几个没啥用的结论:
10 10 1 11
)写了 24 分的 O ( n ∑ a i ) O(n\sum a_i) O(n∑ai) 跑回去看 T3。
T3 的链似乎挺好写,写写写出来了。顺着这个思路把满二叉树也写出来了。
准备全身心投入 T2,发现只剩半小时了,感觉没啥思路,决定开虚拟机跑一下。
扫雷。
枚举 k k k, f [ i ] [ j ] [ l ] f[i][j][l] f[i][j][l] 表示前 i i i 种烹饪方法,用了 j j j 种,其中 l l l 种用了食材 k k k 的方案数。从忽略 Yazid 的要求的方案数(每行之和加一相乘再减一)种减去 l ≥ ⌊ j / 2 ⌋ l\geq\lfloor j/2\rfloor l≥⌊j/2⌋ 的所有 f [ i ] [ j ] [ l ] f[i][j][l] f[i][j][l](显然不会重复计数)。
f [ i ] [ j ] f[i][j] f[i][j] 表示前 i i i 个数,最后一段是 j j j 的最小花费。然后乱 DP 一波。
O ( n ) O(n) O(n) 枚举断边,每次 O ( n ) O(n) O(n) 找重心,总复杂度 O ( n 2 ) O(n^2) O(n2)。
对于链,考虑每个节点 ii 的贡献,分别检查 2 i − 2 , 2 i − 1 , 2 i ; 2 n − i − 1 , 2 n − i , 2 n − i + 1 2i-2,2i-1,2i;2n-i-1,2n-i,2n-i+1 2i−2,2i−1,2i;2n−i−1,2n−i,2n−i+1 是否在 [ 1 , n ) [1,n) [1,n) 或 ( 1 , n ] (1,n] (1,n] 中,是就多一个 i i i。
对于满二叉树(注意到 262143 = 2 15 − 1 262143=2^{15}−1 262143=215−1,所以这是满二叉树,实际上所有样例也都是),考虑每个节点 i i i 的贡献,每次删去一个边(假设它在左边),左半边的重心一定是这条边的靠深处的端点,右半边的重心一定有一个是根的右儿子,如果这条边连接着叶子,那么根也是重心。所以根节点及其两个儿子有 ⌊ n + 1 2 ⌋ \lfloor \dfrac{n+1}{2}\rfloor ⌊2n+1⌋ 次贡献,其余节点有 1 次贡献。
据说 1ull<<64
是 UB,那我不是凉了啊 QAQ
拿自己代码测了几份数据,结果十分玄学。