题目链接:http://codeforces.com/contest/1062/problem/D
给一个$n$,现在允许任意初始一个数$k$并给定一个操作:$ax=b$,$bx=a$当且仅当$a$为$b$的倍数或$b$为$a$的倍数时,可以将$a$变为$b$(可以是负数),同时获得分数$|x|$. 要求不允许有多次$a$到$b$或$b$到$a$的操作(每个$x$仅算一次),问最多能得多少分。
看到第一个样例就明白了:考虑一个数$x$和它的因数$p_i$,我们总可以由$x$转到所有$\pm p_i$的可能(从$x$转到$p_i$,再由$p_i$转到$-x$,然后是$-x$到$-p_i$,接着是$-p_i$到$x$),每一次的贡献是$4p_i$,于是我们考虑维护所有带有整除关系的连通块,然后计算它们的所有倍数和*4就可以了。
1 |
|