2/10考试总结

时间安排

7:30–7:40
读题,T1博弈,T2数据结构.
T3不知道是个啥,还涉及到取极限什么的压根没学过,也不会求 e 直接放弃掉。
7:40–8:50 T1,很多棋子,猜想不同棋子是独立的,那么可以算出对应 SG 值,有向无环图上 SG 值时好求的。问题在于不同颜色以及同种颜色的棋子之间的 SG 值时什么关系,满足什么样的条件才算先手赢。于是开始瞎猜 xor 和mex ,一边猜一边举反例,显然都能被 hack 掉。
8:50–9:50 T2,对于 45 的分数都是可写的。于是想正解,用线段树之类的直接维护区间貌似不可行,考虑能不能离线,扫描线或者分治之类的,但都解决不了根本问题,对于一个区间,我压根不知道某个元素在跳 x 次后的状态。
9:50–10:10 T3,回头看了一眼T3,看看有没有我漏掉的可写的部分分,尝试通过小数据代值,确认了确实没什么可写的。
10:10–10:50 T1,写了个 dfs ,模拟几个小的情况打表,没什么规律。
10:50–12:00 T2,题目的操作不暴力做貌似不可行,考虑优化暴力。先想到根号分治,深度小于根号的暴力做,大于根号的用数据结构维护,后来发现这是假的,大于根号的数量是 O(n) 的。然后考虑分块,散块可以暴力做,问题是整块怎么做,问题变成对于一个块内已知的元素,在跳跃次数固定时,如何快速知道最优的答案,然而这个也做不了,因为每个元素每次跳跃改变的贡献都不一样。思考整块怎么维护。
然后比赛结束了。
T2均摊 n*500 的部分分还被卡 T 了 20 分。

回顾反思

T1:
考虑加强命题,计算对于一个棋子持有者能相对对手多走多少步,设为 f ( x ) f(x) f(x)
对于一个点 x 的所有出边 y ,若 x , y 持有者相同,则有 f ( x ) = 1 + max ⁡ f ( y ) f(x)=1+\max f(y) f(x)=1+maxf(y);若 x, y 持有者不同,则有 f ( x ) = 1 − min ⁡ f ( y ) f(x)=1-\min f(y) f(x)=1minf(y)
每个棋子相对独立,那么设先手代表的颜色为白,对手为蓝,那么先手必胜当且仅当 ∑ x ∈ W f ( x ) − ∑ x ∈ B f ( x ) > 0 \sum_{x\in W}f(x)-\sum_{x\in B}f(x) >0 xWf(x)xBf(x)>0 。点数只有 300 ,直接背包就行了。
比赛的时候一直不知道凭什么来评定输赢状态和权重,于是除了暴力压根做不下去。就一直在打表 SG 函数,然后什么都没看出来还浪费不少时间。对于这种走步,不能走则输的博弈,可以考虑加强命题,变为考虑先手能比对方相对多走几步。
T2:
分块,散块可以暴力,整块可以考虑已经取到的点,如果一个点爬升后到达了一个已经取过的位置,则该点必然不优,不会对答案有贡献,将其在整块中 ban 掉不考虑即可,那么每个块最多遍历 n 次,复杂度 ( n + Q ) n (n+Q)\sqrt n (n+Q)n 级别。
比赛的时候想到分块了,但不知道整块怎么做,没有往复杂度的均摊上想,而且有很长时间都在打表 T1 ,没有给T2 留充足时间,剩下的大约半个小时胡思乱想几乎没什么状态了。
均摊方面可能不太好。简单想一下,均摊复杂度主要出现在某种数值有上界或者操作有重复之类的,比如颜色段的合并、今天T2排除多余重复的路径、修改元素总量有限等等。
对于部分分,有一档 n*500 的 20 分 T 掉了,是因为并查集的常数问题,我一直觉得路径压缩并查集的反阿克曼数很小就没在意,虽然理论复杂度几乎是对的,然而还是直接 T 掉了。这种常数上的问题还是不能忽视。
T3:
积分,数学。
不会。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值