您的位置:首页 > 其它

Codeforces - Avito Code Challenge 2018

2018-05-28 08:46 211 查看

Portal

A. Antipalindrome

暴力。

B. Businessmen Problems

暴力。

C. Useful Decomposition

居然不是C打头的?!
将一棵树划分成若干条边不相交的路径,使得任意两个路径均有交点。
易知树上的两条路径最多有一个交点。若有三条路径两两相交,则必形成三个交点或一个交点。设路径1与路径2交于\(v_1\),路径1与路径3交于\(v_2\),路径2与路径3交于\(v_3\)。若\(v_1\neq v_2 \neq v_3\),则有路径\(v_1-v_2-v_3\)形成环路,如原图为树矛盾;所以必有\(v_1=v_2=v_3\)。以此类推,原树划分成的所有路径都交于一个点。
那么原树中最多存在一个度数大于三的点\(rt\),\(rt\)就是交点。当\(v\)的度数为\(1\)时输出\((v,rt)\)即可。

D. Bookshelves

将一个\(n(n\leq50)\)个数的序列\(\{a_n\}(a_i\leq2^{50})\)划分成\(m\)段,使得每段的和的按位与和最大。
从高位向低位DP。做到第\(k\)位时,记录\(ans\)表示从最高位到第k-1位能取到的最大值。\(dp[i][j]\)表示在满足最高位到第k-1位依然是\(ans\)的情况下,把前\(i\)个数分成\(j\)份能否让第\(k\)位为\(1\)。
\[dp[i][j]=\exists t,dp[t-1][j-1]为真且sum(t,i)\& ans=ans,sum(t,i)在二进制下的第k位为1 \quad(j\leq t \leq i)\]

つづき...

Code

A, B, C, D

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: