Codeforces Round #447 (Div 2 Only) Hack+FST记

来源:互联网 发布:linux显示grub解决办法 编辑:程序博客网 时间:2024/06/05 02:43

上一场涨了158点rating,隔了一天又有一场,本来又想涨,结果。。

A. QAQ

Description

给定一个长度小于等于100的串,计算有多少个子序列是“QAQ”。

Solution

数据规模小,可以直接O(n2)暴力求解。

Code

传送门

B. Ralph And His Magic Field

Description

有一个n×m的方阵,每个格子中可以填写11,求满足每一行的乘积、每一列的乘积都是k的方阵方案总数(k=11

Solution

容易发现答案就是2(n1)(m1),然后考试的时候我就这么天真地写了,竟然还过了pretest!垃圾pretest毁我青春,然后我最后10分钟弃疗后,,被Hack了!因为当n,m中一个是奇数,一个是偶数时,无解!kao!

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了!!kao4!
其实这个题的构造方法是这样的:

a1,a2,a1,a3,a1,a4,,a1,an

(显然如果a1不是a2an中的一个数的约数,则无解)

Code

还是传送门

D. Ralph And His Tour in Binary Country

Description

有一个完全带权二叉树,每次询问给出Ai,Hi,求

uG[H>disAi,u]HdisAi,u

Solution

比赛时XJB倍增乱搞,没刚出来。
发现可以对于每一个节点,将其子树上的所有节点到它的距离丢到一个vector 里,然后排序,对于每次询问不断“向上爬”即可。由于是一个完全二叉树,所以并不会爆空间。
时间复杂度O(mlog22n)

Code

Hany01 is handsome.滑稽

E. Ralph and Mushrooms

Description

给定一个有向带权图,每条路上有一些蘑菇。
若一开始有n个蘑菇,你第一次可以采到n个蘑菇,第二次可以采到n1个蘑菇,第三次可以采到n12个蘑菇,以此类推。
给定一个起点s,求最多可以采到多少蘑菇。

Solution

考虑先SCC缩点,同一个SCC内的蘑菇可以全都一起采到,然后toposort上dp即可。
注意:计算一条路径上最多可以获得多少蘑菇不能直接模拟,会TLE!可以O(1)算,然而我太菜了,不会。可以先二分可以走多少次,然后再算,O(log2n)

Code

戳我