Difference between revisions of "Moscow Pre-Finals Workshop 2016 National Taiwan U Selection"

From EOJ Wiki
Jump to navigation Jump to search
Line 70: Line 70:
  
 
Solved by Kilo_5723. 0:53 (+4)
 
Solved by Kilo_5723. 0:53 (+4)
 +
 +
题意:{$a_n$},{$b_n$} 都是 $1$ ~ $n$ 的随机全排列,求 {$c_n$},使得 $c_i=\max a_j+b_k$ $(j+k)%n=i$。
 +
 +
题解:当 $n$ 很小时,$O(n^2)$ 求出 {$c_n$}。
 +
 +
当 $n$ 很大时,选出 {$a_n$},{$b_n$} 中最大的 $2000$ 个数平方枚举 $c_i$。此时,我们可以保证所有 $c_i>2 \times n - 2000$ 的值都已经被枚举出来。
 +
 +
由于数据是随机的,所以一共 $2*10^6$ 对 $a_i+b_j>2 \times n - 2000$ 被随机选出,此时每一个 $c_i$ 没有被选到的概率极低,只要对没有被选到的 $c_i$ $O(n)$ 求出解即可。

Revision as of 18:38, 8 May 2019

_

本来可以超 F0RE1GNERS 一题的, Xiejiadong 一番操作以后,差点签到都直接没了。

Problem A

Solved by Xiejiadong. 3:14 (+3)

题意:求一段子串里面子序列包含多少个不连续的 "easy" 。

题解:考虑倍增,用数组 $f[i][j]$ 表示位置 $i$ 之后的 $2^j$ 个 "easy" 的结束位置。

不需要考虑段与段之间连接的时候产生问题,这一点可以通过只考虑 "e" 作为开始的位置来证明。

暴力转移以后,每次贪心的取,不断的截取,获得答案即可。

明明可以暴力求幂的,偏要写快速幂,写了快速幂还写错了,身败名裂。

Problem B

Upsolved by Xiejiadong. (-3)

题意:求最小生成树,边权为两点值得异或。

题解:建立 Trie 。显然产生生成树的方式是子树中的点联通以后,再通过 lca 连接。

因为异或我们可以把长度补成一样的,所以只有最底层的叶子结点是有效的信息。

问题转换成了对于一个既有左孩子,又有右孩子的节点,需要在两边各找一个点,使得他们的异或结果是最小的。

考虑启发式合并,枚举小的一部分中的状态,在另一部分的 Trie 上贪心的跑。

$10^9$ 的数,二进制只开了 $20$ ,最后一个小时意识模糊,啥也没发现,背大锅。

Problem C

Unsolved.

Problem D

Solved by Kilo_5723. 2:41 (+1)

题意:给定一个平面上数个整点,每一次可以在两点间划一条线段,但不能和已有的线段或点发生冲突。双方玩家采取最优策略,先不能连边的玩家输,问采取最优策略的情况下先手赢还是后手赢。

题解:直觉猜出来对于确定的整点集合,无论怎么连边,最后划出的总线段数量都是确定的。

猜出来这个之后,只要用凸包和一些搞法求出任意一种完全连边方案中边的条数,判断奇偶即可。

Problem E

Unsolved.

Problem F

Solved by Weaver_zhu. 0:25 (+)

Problem G

Unsolved.

Problem H

Unsolved. (-1)

Problem I

Solved by Weaver_zhu. 3:34 (+4)

Problem J

Solved by Kilo_5723. 0:53 (+4)

题意:{$a_n$},{$b_n$} 都是 $1$ ~ $n$ 的随机全排列,求 {$c_n$},使得 $c_i=\max a_j+b_k$ $(j+k)%n=i$。

题解:当 $n$ 很小时,$O(n^2)$ 求出 {$c_n$}。

当 $n$ 很大时,选出 {$a_n$},{$b_n$} 中最大的 $2000$ 个数平方枚举 $c_i$。此时,我们可以保证所有 $c_i>2 \times n - 2000$ 的值都已经被枚举出来。

由于数据是随机的,所以一共 $2*10^6$ 对 $a_i+b_j>2 \times n - 2000$ 被随机选出,此时每一个 $c_i$ 没有被选到的概率极低,只要对没有被选到的 $c_i$ $O(n)$ 求出解即可。