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

做法

  • 根据括号序列建树。
  • 删除一段相当于删除子树,树上删边游戏。

K - Paint for Vernon

posted @ 2019-09-12 15:29  FST_stay_night  阅读(254)  评论(0编辑  收藏  举报