HYNB Round 8: 2016 ICPC Amritapuri Regionals
HYNB Round 8: 2016 ICPC Amritapuri Regionals
A - Tim and BSTs
做法
- 经典的树 DP 问题。
- \(dp[u][i]\) 表示考虑以 u 为根子树,u 的 rank 为 i 方案数。
- 关于 \(dp[u][]\) 的计算,枚举左子树有几个比根小的,枚举右子树有几个数字比根小。合并两棵子树的复杂度为 \(O(sz_1 * sz_2)\),因此可以 \(O(n^2)\) 计算答案。
B - A Historic Discussion
做法
- 每次把一个集合分裂成两个大小尽可能相等的集合放到两边
- 次数为把n除2上取整变成1需要的次数
C - Influence on Social media
做法
- 预处理所有合法的数字,合法的数字一定是 \(p^k\) 形式,其中 \(k+1\) 为质数。
- 注意排序输出。
E - Black Money Island
做法
- 问题转化为给一个图,有白边和黑边,问是否存在恰有 k 条黑边的生成树。
- 第一眼带权二分......... 有点憨憨。
- 口胡一个引理:对于任意一棵包含黑边数最少的生成树 \(T_1\),存在一棵包含极多黑边的生成树 \(T_2\),使得 \(T_1\) 中的黑边是 \(T_2\) 中黑边的子集。
- 口胡一个证明:考虑 \(T_1\) 中黑色的非树边,逐条添加,加上后得到一个环,如果环上存在白边,删除白边,如果不存在,删除刚添上的黑边。
- 做一棵包含黑边数最少的生成树 \(T_1\),保留下 \(T_1\) 中所有黑边,并查集维护点连通性,逐条添加其它黑边。
F - Notes and GPS Chips
做法
- 构造第一种芯片的生成函数:\(f(x)=\sum_{i=1}^{\infty}i^2x^i=\frac{x(1+x)}{(1-x)^3}\)
- 构造第二种芯片的生成函数:\(g(x)=\sum_{i=1}^{\infty}3i(i+1)x^i=\frac{6x}{(1-x)^3}\)
- 于是答案为\((f(x))^A*(g(x))^B\)里\(x^N\)的系数
- 把\(\frac{6^B(1+x)^Ax^{A+B}}{(1-x)^{3A+3B}}\)里的\((1+x)^A\)拆开枚举一下,剩下是个组合数,复杂度\(O(A+B)\)
- 贼基本的组合数求蒙了导致没写出来。。。
- 至今不知道题意怎么读出来的p序列前A个是第一种芯片后B个是第二种芯片
G - Hawala Arrests
做法
- 考虑树是根链的 case,问题是个经典的序列上贪心问题:序列上,选择极少的点,使得每个区间至少包含一个点。
- 把连通块的根当成右端点即可。
- 不会证明。
H - Netcoin Verification
I - Mancunian Hoards Black Money
做法
从大到小考虑,可以拿的物品,就拿,不拿的话,拿之后所有的物品都凑不齐。
J - Bob vs ATM
做法
- 根据括号序列建树。
- 删除一段相当于删除子树,树上删边游戏。