2019上海网络赛

Rank Solved A B C D E F G H I J K L
111/1371 6/12 . O O O Ø O Ø Ø . O Ø O

O: 当场通过

Ø: 赛后通过

.: 尚未通过

A. Lightning Routing I

B. Light bulbs

C. Triple

D. Counting Sequences I

sovled by fey


fey’s solution:
dfs similar 考虑序列中非1的个数,然后dfs枚举这些数对哪个长度做贡献,(可以证明不会很多),因为长度为最多3000.

E. Counting Sequences II

upsolved by chelly


chelly’s solution

主要的问题是要算 f ( n , m ) f(n,m) f(n,m)表示 m m m种球放到 n n n个位置,每种出现偶数次的方案数。
对于这种排列的问题,考虑指数型生成函数。
g ( x ) = 1 + x 2 2 ! + x 4 4 ! + . . . = e x + e − x 2 g(x)=1+\frac{x^2}{2!}+\frac{x^4}{4!}+...=\frac{e^x+e^{-x}}{2} g(x)=1+2!x2+4!x4+...=2ex+ex
那么 f ( n , m ) = g ( x ) m [ x n ] × n ! f(n,m)=g(x)^m[x^n] \times n! f(n,m)=g(x)m[xn]×n!
g ( x ) m = ∑ i = 0 m ( m i ) e ( m − 2 i ) x 2 m g(x)^m=\frac{\sum_{i=0}^m\binom{m}{i}e^{(m-2i)x}}{2^m} g(x)m=2mi=0m(im)e(m2i)x
所以 f ( n , m ) = ∑ i = 0 m ( m i ) ( m − 2 i ) n 2 m f(n,m)=\frac{\sum_{i=0}^m\binom{m}{i}(m-2i)^n}{2^m} f(n,m)=2mi=0m(im)(m2i)n
剩余部分的式子就好推了。

F. Rhyme scheme

G. Substring

upsolved by chelly

chelly’s solution

假如所有询问的字符串的长度都是相同的,那么我们可以将这些字符串分别哈希,然后拿一个滑动窗口在原来的字符串上扫一遍即可统计出最后的答案。
现在虽然长度不相同,但容易发现不同的长度最多 s q r t ( n ) sqrt(n) sqrt(n)种,所以对于每种长度都实施一遍上述的算法即可。

H. Luhhy’s Matrix

upsolved by chelly

chelly’s solution

对于一个矩阵操作序列,我们可以把它分成两部分,左边部分用栈来维护,右边部分用队列来维护。
左边部分维护每个矩阵到栈底的矩阵乘积,右边部分维护整体的乘积即可,这样对于每次操作,我们都可以快速求出答案。
唯一的问题是左边的栈如果pop空了怎么办呢?事实上我们只需要把目前右边队列里所有的矩阵全部丢到左边的栈里即可。一个矩阵最多在左边被运算一次,在右边被运算一次。
因为矩阵是01矩阵在模2意义下做乘法,所以可以位运算压位矩阵乘法。
时间复杂度 O ( 1 6 2 n ) O(16^2n) O(162n)

I. Debug

J. Stone game

K. Peekaboo

upsolved by feynman1999

feynman1999’s solution

考虑分别求以原点为圆心, a a a b b b为半径的圆上的整点,时间复杂度 O ( r + 圆 上 整 点 数 / 4 ) O(\sqrt{r}+圆上整点数/4) O(r +/4)

如果圆上整点数不是很多,比如小于1e4,那么这题暴力枚举可能就能过。确实是这样。

考虑那些模4余1的素数, 5 , 13 , 17 , 29 , 37... 5,13,17,29,37... 5,13,17,29,37...,在其指数上分配偶数数字(0,2,4…),使<= r 2 r^2 r2,则 Π ( 数 字 + 1 ) \Pi(数字+1) Π+1 不会很大。

至于圆上整点如何求,参见3blue1b 视频 “蕴含在 π \pi π 中…”

L. Digit sum

sovled by fey


fey’s solution:
签到

Dirty Replay

你可能感兴趣的:(2019上海网络赛)