Kick Start 2019 Round F
F round 题解
A.Flattening
这轮,这个A还是有点难,好多选手都挂了…
$O(N^3)$ 版本
- 计算 $num[i][j], interval[i,…,j]$ 仅存在一块时需要改变的元素数目
- $dp[i][k]$ 使得前 $i$ 块的石头中,$\# A_x \ne A_{x+1}\le k$ 需要改变的元素数目 易知,$dp[i][k] = \min_j dp[j][k-1]+num[j+1][i]$
一些小bug
vector [] 操作, uncheck index out of size …也就是说 out of size 返回的值是 未定义的(i.e. 可能是 segment fault,也有可能是很奇怪的值,可见源码)
O(N^2logN) 版本
还没想通。。。
B.Teach Me
- skill[i] 表示拥有第 $i$ 项技能的人的集合(vector,递增顺序存储就好)
- ee[i], 第 $i$ 个人所具有的技能集合
那么对于每个人 $ee[i]$ 来说,它所不能交的人就是 $\bigcap_{s \in ee[i]} skill[s]$,注意由于 $|ee[i]|\le 5$, 上面的求解过程最坏是 $O(N)$,将ee去一下重,然后在暴力算就行了
C.Spectating Villages
这波似乎全是dp..
树形dp,挺简单的..不说了
细节
这题有个挺坑的地方,map,比 unordered_map 慢太多了,所以大数据就挂了,有时候能用unordered_map的还是就用unordered_map,比较好
版权声明
本作品为作者原创文章,采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议
作者: taotao
仅允许非商业转载,转载请保留此版权声明,并注明出处