2.6训练日记

昨天打了一场cf,b题一个模拟花了很长时间才做出来。所有直接就翻车了,通过最近的几次比赛,也暴露了很多的问题:好几次做题时,我的整体思路是没有错的,但总是因为漏掉了或没考虑到各种各样的小细节导致题目就是ac不了。这一点是我以后要注意加强的(不过如何加强这一方面的水平我还没想清楚)。

除此之外,我还想说说我最近做题的一个心得体会:有不少的题目都有一种类似的做题流程。第一步:想出其暴力做法(一个需要O(n)复杂度的题目,O(n2)的做法一般是比较好想的)。第二步:看看内层的循环完成的是什么操作,有没有哪里是可以进行优化的。最后将其优化到O(n)或者O(nlogn)。
举个简单的例子:C. Array Destruction这个题目内层循环需要完成的操作是:找出最大值 和 查找一个数是否在集合中,为了快速的完成这两个操作,我们可以用set来维护一个集合,这样就可以在O(logn)的复杂度内完成上面的两个操作,而总的复杂度也从O(n2)优化到了O(n)。

根据我最近做的cf题来看,这种题目非常的多,都是先想一个暴力做法,再对于其完成的操作进行优化。这种优化有时是用数据结构完成的,有时是基于贪心等算法,有时是基于操作本身的逻辑(比如:一个操作相比于前面的操作其实只是修改了相邻的一两个值)。
这样的题目还有很多:C. Longest Simple CycleC. Fence PaintingB. Hills And Valleys等等等等。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lwz_159

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值