【解题总结】Codeforces Global Round 11

A Avoiding Zero

如果和是正数就排成正数、0、负数,否则排成负数、0、正数。

B Chess Cheater

抽出最前面和最后面的 L 段,再考虑夹在两段 W 之间的 L 段。看后面最多能贪心选取几个段,全部填充为 W 即可。

C The Hard Work of Paparazzi

题意:给定一个 r × r r \times r r×r 网格图,一开始你在 ( 1 , 1 ) (1, 1) (1,1)。1 单位时间可以在网格图上移动 1 单位距离。 t i t_i ti 时间在 ( x i , y i ) (x_i, y_i) (xi,yi) 会有一个人出现,如果在该时间你恰好到达那就可以和那个人合影。问你最多可以和多少人合影。( t i t_i ti 递增)

类似 LIS,设 f ( i ) f(i) f(i) 为在和第 i i i 个人合影完时,最多已经和多少个人合影过了。那么对于 t i − t j ≥ 2 r − 2 t_i - t_j \ge 2r - 2 titj2r2 j j j,显然都是可以转移到 i i i 的,而且这些 j j j 随着 i i i 递增而递增,因此可以用一个前缀最大值维护。

对于其他的 j j j 暴力一下就行了。时间复杂度貌似是 O ( n r ) O(nr) O(nr),但跑的非常快。

D Unshuffling a Deck

题意:给定一个长为 n n n 的排列,每次操作可以将这个排列分割成至少 2 个段,然后翻转这些段的位置(段内的数顺序不变)。要求在 n n n 次操作内将其排好序。

一种简单的构造方案是:第 n − i + 1 n - i + 1 ni+1 次操作后:

  • 如果 i i i 是偶数,就让排列的开头 n − i + 1 n - i + 1 ni+1 个数为 n , n − 1 , ⋯   , i n, n - 1, \cdots, i n,n1,,i
  • 如果 i i i 是奇数,就让排列的最后 n − i + 1 n - i + 1 ni+1 个数为 i , i + 1 , ⋯   , n i, i + 1, \cdots, n i,i+1,,n

显然当 i = 1 i=1 i=1 时就排好序了。具体怎么操作以保证这个 loop invariant 并不困难,故不赘述。

E Xum

题意:一开始给定一个奇数 x x x,要求在 1 0 5 10^5 105 次操作内得到 1 1 1。一次操作可以任选已有的两个数(可以是同一个),得到两者的和或者异或。

维护一个线性基,每次随机从已经有的数中选两个加一下(要设定一个和的上限,我设的 2 50 2^{50} 250),如果不在线性基里面就插到线性基中,直到 1 也在线性基里面。

正确性似乎难以证明,但跑的快得很。

F

待补。。。

G

待补。。。

H

待补。。。

小结

我果然还是只有 Div2 的水平啊,唉。

D 玩了一个小时才玩出一个好的构造,结果没看到一个条件还 WA 了一次。

E 玩了一个小时,猜到是随机+线性基,结果太困了没试着去写… 又怂了…

构造水平堪忧。

猜你喜欢

转载自blog.csdn.net/zqy1018/article/details/109009746
今日推荐