CSP2019 游记

网站给出的时间不是文章的发布时间,更不是文章的最后修改时间。

或许更好的阅读体验,可以参见我的 Hexo 博客(自带 BGM 警告)

未完结,gugugu……

下面的时间将 2019 年 11 月 16 日(比赛第一天)作为 Day1;将 2019 年 11 月 15 日(比赛前一天)作为 Day -1。(你也没见过公元 0 年对吧)

Day -28(初赛)

考场居然没有给每个考号分配座位(毕竟真正参加的人不多),到了考场现场在每个考室内部把人按照准考证号大小排序。(一开始选了一个基准值还以为要快排,结果马上就开始插入排序了)

看到题目发现全是选择判断;后面的阅读程序题不按套路出牌啊……

按顺序颓颓颓,阅读程序强行手摸小样例。

补全程序 T2 我根本没看懂,强行脑补一个样例挨个代进去,感觉没问题了,实际上错了一个。

对了一下网上答案,感觉 90 以上没问题啊……

Day -?(初赛出成绩)

八十几(大雾)

Day -2

颓颓颓

请提醒破壁人五号考前不要听太 exciting 的音乐(然而突然脑内循环我也停不下来)

Day -1

颓颓颓

酒店电梯有 0 层好评(雾)(那我是不是应该考虑一下要不要加上 Day0?)

晚饭的锅巴虾仁好吃(没吃到虾仁,但锅巴真的好吃)。

Day 1

吃完早饭就走,到考场排队等着。矿泉水和小 main 包都没了。

进去敲了敲键盘,还是不习惯 Backspace 等键的位置。

扫雷。

发题,密码是认真思考。

看题,第一反应:

  • T1 一位一位模拟就行了;
  • T2 数数题,DP 或者栈;
  • T3 玄学最优化,大概要贪心。

10 min 敲完 T1,unsigned long long 才能过差评。

颓颓颓 T2,想到了一个维护两个栈的做法,但是出栈写不出来,先写链。

第三个大样例好臭啊。

感觉链剖可以处理树,顺着重链一路向下,遇到轻边备份一份状态,待会再看吧。

然后看 T3 的链(极其错误的决定),写了半天把节点编号、数字还有它在链上面的位置弄成一团,调完之后顺手把自己 Hack 了,感觉很慌.jpg

回头写 T2,感觉时间复杂度很玄学,但还是硬着头皮写完了……(写游记时突然发现一条链上每一个点再挂一个儿子好像就能卡)。

看看时间感觉很慌,飞速敲完 T3 O ( n ! ) O(n!) O(n!) 暴力之后用虚拟机编译一下,除了 T3 效率之外都感觉还行,然后就是扫雷。

考试结束就溜了。

总计

T1

按位模拟,判断每一位该是 0 还是 1,注意 ull

  • 期望得分:100
  • 洛谷得分:95(可能是因为 UB)
  • csp.ac:95
  • 牛客得分:95
  • 实际得分:?

T2

链上可以维护两个栈,分别是没能配对的 ( 的位置和每个极长的合法子串的位置和其包含的极大括号对的数量。时间复杂度 O ( n ) O(n) O(n)

树上就剖分一波,分叉处复制一份当前的栈,时间复杂度 O ( n 2 ) O(n^2) O(n2)

  • 期望得分: 80 ± 15 80\pm 15 80±15
  • 洛谷得分:95
  • csp.ac:70
  • 牛客得分:100(数据过水?)
  • 实际得分:?

T3

O ( n ! n ) O(n!n) O(n!n) 预计跑不过去自闭了。

  • 期望得分: 5 ± 5 5\pm 5 5±5
  • 洛谷得分:30(?)
  • csp.ac:10
  • 牛客得分:10
  • 实际得分:?

DAY1 总计

  • 期望得分: 185 ± 20 185\pm 20 185±20
  • 洛谷得分:220
  • csp.ac:175
  • 牛客得分:205
  • 实际得分:?

吃饭时突然反应过来 T2 每次对栈的修改是 O ( 1 ) O(1) O(1) 的,这样重新出栈就可做了……(╯‵□′)╯︵┻━┻

Day 2

考室门口领了一瓶水。敲读优,玩扫雷。

抓紧时间

开题:

  • T1 NOIP CSP 也开始考数数题了?
  • T2 这**什么神仙数据范围和空间限制啊?感觉不是贪心,是不是 DP 优化啊?
  • T3 树形 DP?

推 T1 式子,显然可以先忽略 Yazid 的要求(不超过一半那个),再减去不符合要求的,这样做的好处在于超过一半的原料至多只会有一个。推推推推推半天推不出来,决定写个计数 DP 拿了 84 分走人。

写完 1h 过去了。看了一下 T3 O ( n 2 ) O(n^2) O(n2) 挺好写的,赶紧写一个,然后决定肝 T2。

T2 推了半天,得出了几个没啥用的结论:

  • 段数确定时,题目可以转化为方差最小;
  • 从前往后取尽可能小的贪心是错的(10 10 1 11
  • 这题我不会做
  • CSP-S2 2019 D2T2 造成了 CSP-S2 2048 题目泄露的假象,引起选手恐慌
  • CSP-S2 2048 D1T1 是一道奇怪的神仙题,小明是个奇怪的神仙选手

写了 24 分的 O ( n ∑ a i ) O(n\sum a_i) O(nai) 跑回去看 T3。

T3 的链似乎挺好写,写写写出来了。顺着这个思路把满二叉树也写出来了。

准备全身心投入 T2,发现只剩半小时了,感觉没啥思路,决定开虚拟机跑一下。

扫雷。

总计

T1

枚举 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 lj/2 的所有 f [ i ] [ j ] [ l ] f[i][j][l] f[i][j][l](显然不会重复计数)。

  • 期望得分:84
  • 洛谷得分:84
  • csp.ac:84
  • 牛客得分:84
  • 实际得分:?

T2

f [ i ] [ j ] f[i][j] f[i][j] 表示前 i i i 个数,最后一段是 j j j 的最小花费。然后乱 DP 一波。

  • 期望得分:24
  • 洛谷得分:24
  • csp.ac:24
  • 牛客得分:24
  • 实际得分:?

T3

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 2i2,2i1,2i;2ni1,2ni,2ni+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=2151,所以这是满二叉树,实际上所有样例也都是),考虑每个节点 i i i 的贡献,每次删去一个边(假设它在左边),左半边的重心一定是这条边的靠深处的端点,右半边的重心一定有一个是根的右儿子,如果这条边连接着叶子,那么根也是重心。所以根节点及其两个儿子有 ⌊ n + 1 2 ⌋ \lfloor \dfrac{n+1}{2}\rfloor 2n+1 次贡献,其余节点有 1 次贡献。

  • 期望得分:75
  • 洛谷得分:75
  • csp.ac:75
  • 牛客得分:75
  • 实际得分:?

DAY2 总计

  • 期望得分:183
  • 洛谷得分:183
  • csp.ac:183
  • 牛客得分:183
  • 实际得分:?

两天总计

  • 期望得分: 368 ± 20 368\pm 20 368±20
  • 洛谷得分:403
  • csp.ac:358
  • 牛客得分:388
  • 实际得分:?

据说 1ull<<64 是 UB,那我不是凉了啊 QAQ

Day 3

拿自己代码测了几份数据,结果十分玄学。

你可能感兴趣的:(游记)