CODEFORCES掉RATING记 #1

  时间:2017.7.16晚
  比赛:Educational Codeforces Round 25

  比赛开始前去睡觉了。。。开始后5min才起来

  一进去就点开AB,B先加载好,就先做了B。读完题后发现是傻题,给你一个 $ 10 \times 10 $ 的五子棋盘,问你下一步后能不能赢。直接枚举+判断搞定。

  A的题面看了五分钟开始看不懂,就去闻了一下同学,题面是给你一个超级简单的密码,要你解密。这道题我想多了导致没有1A。

  接下来去看D。给你两个字符串 $ s $ 和 $ t $ 都含有小写字母, $ s $ 中还含有'?'。'?'能表示任意字符。判断将两个字符串打乱后 $ t $ 最多能在 $ s $ 中出现多少次。二分答案+判断。

  然后是C,有 $ n $ 道题,如果你当前做的题最难是 $ s $ ,则你能做出难度 $ \leq 2 \times s $ 的题。你还可以做这 $ n $ 道题以外的题,难度任意。问你最少要做多少这 $ n $ 道题以外的题才能做出这 $ n $ 道题。直接排序+扫描。

  E:比赛时写了一个查分约束,但题面说求字典序最小的解,似乎(对于我这种蒟蒻来说)不太能做。结束后题解说按拓扑序从后往前考虑就可以了。当字典序要求最小的时候应该尽量把字典序打的往后放。一个点 $ i $ 放多少与 $ i $ 的祖先有关,所以按拓扑序考虑。

  F:很容易想到DP。我比赛时SB了。DP的方程为 $ f_i = f_j + a + | b | $ , 但我脑抽想成$ f_i = f_j + | a | + | b | $ 了,就认为在一些边界的处理上会有问题,就没有写。 $ n = 8000 $ ,直接KMP或者其他方法乱搞即可。

  G:猜到是动态点分治了,但不想写,细节也写不好,就放弃了。题解有 $ O(n) $ 的神奇做法 。我们先把第一个黑点设为根,设 $ f_i $ 表示 $ i $ 到根的点的编号的最小值。这个东西可以 $ O(n) $ 处理出。每次把一个点 $ x $ 染黑后可以发现 $ x $ 到根的点都能成为答案,用一个变量 $ s $ 维护这个东西。每次染色时暴力往上跳,遇到已经跳过的点就break。查询时 $ ans = min( s , f_x ) $ 。

  

  做完前4题大概是24:00,排名是240左右。结束时掉到rk300+了,今天早上又爬回rk240了。

  比赛时如果不SB的话应该可以做出EF,就能进前20啦。哪来的那么多如果

posted @ 2018-03-05 20:07  ywwyww  阅读(339)  评论(0编辑  收藏  举报