上一场涨了158点rating,隔了一天又有一场,本来又想涨,结果。。
A. QAQ
Description
给定一个长度小于等于 100 100 100的串,计算有多少个子序列是“QAQ”。
Solution
数据规模小,可以直接 O ( n 2 ) O(n^2) O(n2)暴力求解。
Code
B. Ralph And His Magic Field
Description
有一个 n × m n\times m n×m的方阵,每个格子中可以填写 1 1 1或 − 1 -1 −1,求满足每一行的乘积、每一列的乘积都是 k k k的方阵方案总数( k = − 1 或 1 k=-1或1 k=−1或1)
Solution
容易发现答案就是
2
(
n
−
1
)
(
m
−
1
)
2^{(n - 1)(m - 1)}
2(n−1)(m−1),然后考试的时候我就这么天真地写了,竟然还过了pretest!垃圾pretest毁我青春,然后我最后10分钟弃疗后,,被Hack了. 因为当
n
n
n,
m
m
m中一个是奇数,一个是偶数时,无解.
Code
C. Marco and GCD Sequence
题外话
题目背景:
In a dream Marco met an elderly man with a pair of black glasses. The man told him the key to immortality and then disappeared with the wind of time.
。。
感觉我的博客要被封禁了
Description
有一个序列,对于它的每一个区间,取区间内所有元素的gcd,得到了一个数,将它丢到一个set
里,然后给出这个set
内的元素,求构造这个序列。若无解输出-1
Solution
考试时XJB贪心,结果又过了pretest,然后又FST了
其实这个题的构造方法是这样的:
a
1
,
a
2
,
a
1
,
a
3
,
a
1
,
a
4
,
⋯
 
,
a
1
,
a
n
a_1,a_2,a_1,a_3,a_1,a_4,\cdots,a_1,a_n
a1,a2,a1,a3,a1,a4,⋯,a1,an
(显然如果
a
1
a_1
a1不是
a
2
a_2
a2到
a
n
a_n
an中的一个数的约数,则无解)
Code
D. Ralph And His Tour in Binary Country
Description
有一个完全带权二叉树,每次询问给出 A i , H i A_i,H_i Ai,Hi,求 ∑ u ∈ G [ H > d i s A i , u ] H − d i s A i , u \sum_{u\in G}[H>dis_{A_i,u}]H-dis_{A_i,u} u∈G∑[H>disAi,u]H−disAi,u
Solution
比赛时XJB倍增乱搞,没刚出来。
发现可以对于每一个节点,将其子树上的所有节点到它的距离丢到一个vector
里,然后排序,对于每次询问不断“向上爬”即可。由于是一个完全二叉树,所以并不会爆空间。
时间复杂度
O
(
m
l
o
g
2
2
n
)
O(mlog_2^2n)
O(mlog22n)
Code
E. Ralph and Mushrooms
Description
给定一个有向带权图,每条路上有一些蘑菇。
若一开始有
n
n
n个蘑菇,你第一次可以采到
n
n
n个蘑菇,第二次可以采到
n
−
1
n-1
n−1个蘑菇,第三次可以采到
n
−
1
−
2
n-1-2
n−1−2个蘑菇,以此类推。
给定一个起点
s
s
s,求最多可以采到多少蘑菇。
Solution
考虑先SCC缩点,同一个SCC内的蘑菇可以全都一起采到,然后toposort上dp即可。
注意:计算一条路径上最多可以获得多少蘑菇不能直接模拟,会TLE!可以
O
(
1
)
O(1)
O(1)算,然而我太菜了,不会。可以先二分可以走多少次,然后再算,
O
(
l
o
g
2
n
)
O(log_2n)
O(log2n)