题目链接: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和它的因数pi,我们总可以由x转到所有±pi的可能(从x转到pi,再由pi转到−x,然后是−x到−pi,接着是−pi到x),每一次的贡献是4pi,于是我们考虑维护所有带有整除关系的连通块,然后计算它们的所有倍数和*4就可以了。
1 |
|
v1.5.2