2022.4.5模拟赛总结

时间安排

7.50-8.14 开题
T1 貌似是个模拟,没看出来存在什么贪心,也许是个我没太搞明白的dp吧
T2 感觉见过类似的题,是个树剖+SA或广义SAM吧
T3 和二进制有关,具体的还没想
8.24
先写一写T1的模拟
8.27
写的途中突然感觉第二档分也很好写,找个类似周期的变化即可
8.35
模拟出了第一档分
8.40
写出T1第二档分
8.44
貌似有了T1正解思路
结合第二档分可以考虑到,如果两个时刻在同一个路口被红灯卡住,那么后面花费的时间一定相同,也就是说我有用的只有n+1个状态:分别首次被n个红灯卡住以及从来没被卡住直接畅通,如果我算出来这n+1种状态对应的时间段,再与花费的时间映射起来,就可以快速算出所有答案了,考虑如何构造映射,构造出的这n+1个状态明显是不交的,我可以只计算被第i个红灯卡住的时间段,再斥掉前面被卡住的时间段即可,观察一眼暴力,直接加上d的前缀和然后对(g+r)取模应该就可以算出时间段来
9.02
通过离散化预处理,我可以直接求出在每个位置出发,撞得第一个红灯是哪,那问题就转化为我怎么算出从每个点开始走,红灯恰好结束,走到终点需要多久?诶,这不是刚才的问题吗,相当于就是把起点换到了这个地方,我可以求出下一个红灯的地点在哪,然后这两点中间距离直接就是前缀和,再加上下一个红灯到终点的答案,倒着dp即可,再配合上前面的约束条件,我直接拿线段树做一个覆盖操作维护最小值即可。理论可行,实践开始
9.34
代码写完了,但是挂了,开始debug
9.51
查出线段树维护时一个地方写挂了,修改后样例可过,准备对拍
10.08
对拍出错
10.10
#define int long long后对拍通过,查找哪里爆int了
10.12
由于g+r=2000000000,再做加法就爆了,所以我觉得还是都开成long long保险一点
10.19
把三份代码互相拍,均无误
10.51
写完T2的广义SAM,我也不知道有多少分,貌似卡满是n^2的复杂度吧,可能50?
10.55
检查一下数组大小,突然想起来有大样例,均正确。T2没什么想法了,就过了
11.04
这T3我完全不知道咋搞呀,暴力不太会打,感觉整体要基于一个贪心策略来做,但我想不出来。或者dp?
有一档15分的特殊点貌似比较好写,暴力我应该打啥呀?dfs or bfs?干脆就写个骗分得了
11.14
写完T3骗分贪心
11.14-11.40
检查打表,数组等,打包提交

赛后反思

最后结果
100+40+30
T1过了,其实有个很大的问题就是我不知道该不该去写这个分段,段数特别多的情况下,我写分段会特别乱,今天这个题,在输入Q之前我就进行了其他的预处理,要是让我三段统一格式再考虑合并什么的,有点麻烦,很可能就改错了而且我自己还发现不了,但我分段,我哪怕都对拍了它还能离谱的挂掉(幸亏今天没挂),今天的拍了好几遍感觉上无误了才没打这个分段,况且我也不知道我分段会不会挂,尤其是某些数组大小随着分段改变,变量重复命名,就很烦
T2少了10分,问题不大吧,反正我也不知道能拿多少分,就胡诌了个广义SAM,结果RE了,应该不是我的问题,这个算法貌似就是会被卡RE,我数组开大还是RE
T3就很满意了,我不会写,但我会骗,直接15->30

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值