Codeforces 142 div2 简单解题报告

    这场题目总体难度不大,可是却把我虐翻了。

    首先是D题在1小时半的时候,差不多就写好代码了,提交wa在第三组测试数据,按道理这么前面的数据应该很水的,而且我觉得我想的和我代码实现的功能相吻合,想到是题意理解问题,可是到最后一分钟也没想到问题在哪里。我觉得自己是前期的算法轮廓想得会快些,可是一旦初期算法错了就会很难调整,蛋疼啊。

   还有,C题我写了一个很稳妥的O(n*m)的算法,可是实现略微麻烦,这题就应该用二分来实现的,这样代码简短很多,在追求简洁代码的路上我还有很长一段路要走。额,这不是重点,重点是这题应该是有很多人会去YY的,而且前面水数据是可以让一部分pre ac的,在D题纠结未果的时候就应该去hack,只能说自己太不会完CF了。


   说下这套题目吧:

   230 A. Dragons http://www.codeforces.com/problemset/problem/230/A

   因为顺序任意,我们应该选择x较的先处理,设x1<x2,如果可以先处理x2,那么没差。如果处理不了x2,处理得了x1,那么肯定处理小的然后y累加上来再判断能否处理x2。这样的话对(x,y)按x排序,按顺序处理。复杂度O(nlogn)

 

   231 B. T-primes http://www.codeforces.com/problemset/problem/230/B

   只有三个因子的情况是1和它本身以及它的开根号整数,这个整数存在且这个开根号整数只有1和它本身做为因子,那么后者就是一个素数,这样就可以通过素数刷法预处理,然后O(n)处理。


    229 A. Shifts http://www.codeforces.com/problemset/problem/229/A

    枚举列,把每行移到1到这列的最少步数相加,求最小值。关键部分是求每行的最小步数,最简单且可行的做法是二分查找向右下标最小的那个1,再二分向左查找下标最大的那个1,这样复杂度O(n*m*log(m)),CF时限很宽松可以过。我的做法是用O(n*m)的时间去预处理,把每个位置左边第一个的1和右边第一个1的位置计算出来,预处理完O(n*m)枚举,O(1)计算步数。


    229  B. Planets http://www.codeforces.com/problemset/problem/229/B

    比较简单的Spfa,主要是到达如果某个时间到达v点的话,需要延迟,且延迟具有传递性,i时间到如果有限制,i+1才能登陆,如果i+1也有限制那么i+2,从后往前把每个出现的时间延迟到的时间计算处理,spfa的时候如果到达v点的时间需要延迟,把延迟时间计算进去再进行松弛。这题很诡异,出发点也需要延迟,而终点不需要延迟,就因为这坑爹的地方我一直没AC..


    229 C. Triangles http://www.codeforces.com/problemset/problem/229/C

    因为卡D题,这题没看,但目测不难,ac代码大部分不到40行。


    很少写cf的解题报告,被虐爆虐爽的时候才写写,发发牢骚...

    

本文ZeroClock原创,但可以转载,因为我们是兄弟。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值