22 NOI赛前集训day2--考后总结

时间安排

8:00–8:05 读题,T2又是个随机化题目。

8:05–8:40 T1,对于K<=2可以列个式子贪心做。其他没什么想法。

8:40–9:20 T2,随机情况下有用的点应该比较少,考虑只保留有用的点,一种想法是保留与x点相连的点,但显然是假的。

9:20–9:45 T3,无论从左到右还是从右到左做都不一定最优,对于一个点的操作次数也不一定,直接贪心或者无脑线性DP貌似不太行。写了个dfs。

9:45–10:00 T3,沉浸在提出猜想策略,举出反例,推翻自己的死循环中。

10:00–12:35 T2,考虑有用点必然是某两点之间路径上的点。一个不含任何点的边双没用,一个x点带的一个孤立的连通块没用,不联通的也没用,对于有用点做网络流。卡场卡到12点。K<=10000照样跑不动,要12s,说不定换成预留推进还能再快些?

12:35–13:00 吃饭。

回顾&反思

T1:题目本质是个背包问题,对于x可以逐位考虑,而不是直接求得整个值。一个比较妙的点是,维护状态不是维护已经装了多少,而是和还剩下多少没装,这样就能解决进位的问题,如果这一位的解决不了,转移到下一位时将剩余容量*2就可以了,另外显然剩余容量最多只能为物品个数15,所以状态规模很小。比赛的时候没有将问题与背包联系起来,沉迷于列各种式子,企图通过贪心调整使得满足条件,直接得到x的整个值。感觉这里面还是有一些数位DP的味的。对于值直接求不好求的,可以考虑每一位的贡献,这样要么是1要么是0,就变成了01背包问题。对于背包容量较大的,观察题目性质,可能可以将容量转化成规模较小的优美形式,如 a × 2 b a\times 2^b a×2b a a a较小,逐步维护 a a a

T2:类似k点最短路的思想,枚举每一位进行二进制分组,找到每个关键点在所有情况的集合的交集,那么有性质,最小割集必然在这个交集里,因为总点数均摊 O ( n ) O(n) O(n),分别暴力网络流即可,复杂度是 O ( l o g ∗ O ( d i n i c ) ) O(log*O(dinic)) O(logO(dinic))左右。感觉和妙很经典很套路,和k点最短路的做法如出一辙。比赛的时候光想着怎么减少dinic的规模了,将单个点与k个点的关系完全割裂,根本没往分组上想,最小割集的那个性质貌似也不太显然?遇到这种多点求相似问题一定要考虑分组,然后考虑单个点的答案和分组或者整体的答案有什么关系,进而会有一些神奇的性质,将朴素的暴力做法变得优美。

T3:还不会。目前感觉是模型转化上出了问题,模型建立的灵活度和讨论分析能力还是不够。

随机问题的一些性质和思考方向:
  1. 由于随机,在图、树等上会形成一些非常规整、优美的结构,关键点、答案点的距离往往较小,可以考虑在较小范围内搜索答案,大概率会找到。另外结构复杂性低,如树的深度期望log等,支持一些受限于结构的暴力操作。
  2. 数据均匀分布,意味着分组后可以视为每组平均分配所有的元素。考虑对元素枚举时,可以考虑分组限制范围,缩小枚举规模。
  3. 对于规模较大的随机实验放在较小规模的范围内进行时,可以视为该范围任意元素都大概率存在,有时甚至可以默认一定存在。
  4. 数据冲突率小,对于概率性的做法,如随机取点check、模意义下的各种暴力、随机权值作为特征值等,可以视为正确。
  5. 对于一些有特殊性质的题目,答案往往分布在较小范围或较外范围等,在图上可以是较内圈或者较外圈,可以考虑钦定范围搜索,或者说将朴素做法放在小范围内执行,大概率有解,有时会有奇效。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值