Codeforces Round 635 (Div. 1)
https://codeforces.com/contest/1336
A. Linova and Kingdom
题意:有n个节点的树,选k个节点作为特殊点,每个特殊点的舒适度为它到根的路径上非特殊点的个数,问怎么选使得所有特殊点的舒适度之和最大。
贪心
一定只有当节点的所有子孙节点都被选了,才会选它,选择一个节点,会使得舒适度增加它的深度,且它的所有子孙节点舒适度都-1,所以要贪心选择深度-子孙节点数最大的节点。
1 |
|
B. Xenia and Colorful Gems
题意:有红绿蓝三种糖,每种有一定个数,每个糖都有值,要红绿蓝各选一个,使得三个糖,满足 最小。
x,y,z先确定最小或最大的都不好选,但是如果先确定了中间的,那策略只有只有一个了,都尽量向中间的靠近。
所以可以枚举一个作为中间的,再二分找到最小,最大的。
注意颜色有关系,所以要枚举所有排列情况。
1 |
|
C. Kaavi and Magic Spell
题意:有字符串S和T,长为n和m,和一个空串A,要从S中删掉首,加到空串首或者尾,使得最终T为A的前缀,问有几种操作序列。
区间dp
表示凑出T串 到 的操作序列数。
遍历S串,到第i位一定有i-1位加到A串里了,所以第i位,遍历所有长度为i-1的dp,再看能不能把这一位加到首或者尾,来扩展到长度为i。
如果长为i-1的串要拓展的位置大于m,那任何字符都可以加入,否则要判断S[i]和T对应位置是否相等。
最终结果就是 。
1 |
|
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment