1028模拟赛-考后总结

时间安排

7:30–8:00 读题,T2估计是个什么性质题,T3没什么思路不过暴力吉司机貌似能拿点分。
8:00–8:30 T1,短暂思考后发现二分答案可以使问题简单很多。不过需要一点讨论,可能会比较复杂,先写后面的。
8:30–9:30 T2,3,4的暴力。T3莽了个吉司机线段树,测了测大数据发现压根跑不动。卡来卡去没什么效果。
9:30–10:00 T1,写 Tlog^2 正解,写完测一下数据,怎么跑这么慢啊啊啊啊…卡了卡常,时限1.5s我卡进了0.9是左右觉得万事大吉了。
10:00–10:30 T3,考虑特殊点。只删除归0操作时,只需要维护一下每个数子最后一次归0到之后的影响就可以了。这里可以倒序来。
10:30–11:10 T2,发现?其实没什么用,考虑没有问号的时候怎么 On 做。想到一种贪心,不过实在时太假就没写。
11:10–11:40 T4,想到一个DP,不过需要维护的唯独太多复杂度一分都过不了。

赛后:
T1 写正解结果 T 了一半,自己机子上只跑 0.9s 的东西用机房最快的电脑跑 1.6s 都跑不完,不是很理解。 100pts 直接挂没了。后来发现只要把所有的除法 “/” 都替换成位运算 “>>” 就能卡进 1s 。
T3 的吉司机压根跑不动。
本来最少也能拿个160所有的东西卡常硬是卡了七八十,真难看。

回顾反思

T1: 二分答案套路,把一个求解问题变为判定问题。为什么这么卡常啊为什么不开 2s 啊。这种卡常题要特别注意除法的常数,对于二的幂有关的运算尽量使用位运算卡常。
T2: 分析性质还是不够到位。我一直在研究如何操作才能达到局面,而正解则直接从局面本身出发,考虑最终局面是什么,发现这是简单的,那么就只需要考虑保留哪些元素构成这样的局面就行了。
T3: 显然删除后效性过于大,正向做不好维护,于是考虑逆反,变删除为倒序增加操作。另一个点是这里维护元素序列是不好维护的,而询问序列的关系是简单的,且能够与元素序列要求的东西对应,于是直接维护询问序列。对于初始局面,可以直接把给出的元素初值看作一次增加对应数值的贡献的操作,就不需要考虑那么多边界问题了。
T4: 比赛的时候没有找到设状态的角度。观察题目性质发现合法序列是由若干下降子序列为基本结构拼接在一起的,那么就应该由基本结构入手,预处理出可能的由某两下标为端点的下降子序列个数。对于一个下降子序列,可以用一谁为结尾(开头),最大(小)值两个信息就可以表示,那么考虑可以被拼接的下降子序列的两信息满足什么条件,用前缀和等手段优化 DP 拼接就可以了。另一个点是,题目要求不存在某个元素的合法序列,这是难求的,于是可以先求一定存在这么一个元素的合法序列然后取补集,而这钦定存在后实际上对应了一个基本结构,套用上述做法做就可以了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值