2021-10-20牛客赛前提高组模拟赛day1总结

写在前面

彻底自闭了。。。本想把暴力分拉满,然后少了20pts,直接从上小分变成了掉大分。。。

考试ing + 考试中的思考 + 正解

T1(14:00 — 15:00 + 17:10 — 17:40)

考场上的我思维被禁锢住了,这道题本来是一道裸的堆优化dij再加上一些打表找规律的剪枝,但是由于这个题披着一层数论的皮囊,我直接当做的数论去写了,然后去推所有的ans[i][j],发现根本推不了,最后想通过打表找些规律,然后自然sw。。。

正解是:其实在每次x到y的变换中,可以发现,是固定的关系,并且最后需要求的是最小值,所以这自然想到了图论的dij最短路,就是,在每次 x = x ∗ z   m o d   p x = x * z \ mod \ p x=xz mod p的时候,将 x x x x ∗ z   m o d   p x*z \ mod \ p xz mod p 建边,其遍值为 z z z (也就是题上的 a b s ( x − z ) abs(x - z) abs(xz)),所以,从1到p - 1 去枚举每个边,然后丢进前向星里即可,然而如果想要获得更高的分数,那么需要考虑去通过剪枝:打表可以发现到后面计算出每个点的最短路都不会小于15-16,所以,在建边的时候,只需要基于这一个点,向左向右只需要扩17个点即可,这样就可以达到从 O ( p 2 ) O(p^2) O(p2) O ( p ∗ 17 ) O(p * 17) O(p17)这样的优化了,非常的 快,然后就是正常的最短路求即可

总结(仍然是很重要的经验)

  1. 不要被考场上的惯性思维所禁锢住,如果一直禁锢在一个思路里,并且不能保证这个思路是正确的,那么一定要换一个思路,比如这场的T1,我一直当做数论的题目来写,一定是过不了的,听隔壁的图论之神布老师说考场上他想的第一个思路也是数论,但是发现推不出来,这时候他就重新看了一次题目,发现在每次求解ans数组时,每个关系是确定的,并且答案是要求ans累加的最小值,那么就直接想到了图论的最短路,并且把所有的关系全部转换成了图论的关系,这就是我目前阶段应该学会的技巧。
  2. 大暴力dfs一定要打,因为在考场上大暴力dfs有几个作用:第一:打表找规律,有时候规律不能通过样例和题面一样看出来买这时候打一个很慢的dfs,即去枚举每个全排列(或者每种情况),寻找规律,这时候打表的过程中可以去码其他的题目,或者出考场洗脸冷静一下,回来卡准点查看就行;第二:有保底分数,意味着考场上这道题你是有记录的,并且你拿到了这个题的最低档分数,可能在最后会就救自己一命**;第三:去用于对拍,码完dfs后,就可以通过dfs优化或者去码高档分数或者正解,这时候可以判断写的正解到底是不是正解,或者有没有什么细节上的错误
  3. 注意时间分配:考场上的时间极其宝贵,如果在途中码一道题的时间超过了50min,就需要出去洗个脸,并且冷静下来告诉自己一直盯着一个题的收益有多大,如果可以在很短的时间内码过这个题,那么就再给自己一点时间,如果不行,果断放弃这个题目,等回来做完剩下的题目或者拿完了暴力分之后再回来继续攻克。
  4. T1,T2一定要深度思考(除非是大摸你):因为由于难度的递增,T1,T2不可能会特别难(除了万一情况),所以T1和T2一定要深度思考,不能简单了事,用大部分的时间去攻克T1和T2,最后的成绩必定不会差QWQ(前几场的模拟赛都是因为在T1和T2的分数不高然后才掉大分的,所以今后的比赛要争取T1和T2的AC)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值