Codeforces Round #199 (Div. 2)

本文分享了一位参赛者在算法比赛中从遇到难题到解决的过程,包括A题的细节处理,B题的贪心策略,C题的小型计算技巧,D题的状态压缩DP方法,以及E题的树链剖分学习计划。文中详细阐述了每个问题的思考过程、解题策略及后续的学习提升。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

A题挂了,B题WA了4发, C题1A, 比赛结束, D题赛后1A了。 小号变紫了。

A. 仔细看题, 所有数都小于等于7,所以只有1 2 4, 1 2 6, 1 3 6 三种情况,

如果出现5,7就是-1, 否则 cnt[1] = n/3,cnt[2] - cnt[4] == cnt[6] - cnt[3] 而且 cnt[2] - cnt[4] >= 0

我错在出现5,7的情况没考虑,手速太快了,悲剧。

code


B.贪心,能走一步就走, 注意时间是1e9范围,但总移动次数为n(1e5),所以对于相邻的时间内,有一段时间是肯定可以移动的,移动, 然后在对当前时间点移动。 最后要注意所有时间走完以后可能没有到终点, 在一直移动就可以了。

code


C小的计算题, 先放下面的长方体, 个数为h/r*2, h变为h%r,  之后根据h的大小可以放1个或2个或3个。

h < r/2: 1 个;   h >= r/2 && h < sqrt(3)/2*r : 2 个;  h >= sqrt(3)/2*r   3个

code


D有一个范围很小,是3,所以可以状态压缩dp做。 以n为行, 3为列,dfs即可。

赛后一开始就A了,后来一讨论发现数据水了, 没有O的8个方向上有X的数据,所以我的算法水过了,

现在修正了。我用暴力+容斥AC的,对于对着O的骨牌最多只用三个。

我们可以    +对着1个骨牌的 - 对着2个骨牌的 + 对着3个骨牌的, 暴力先贴好这些情况,然后再算有几种。

code


E 据说是树链剖分,没学过,明天学习一下再放上来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值