首页 > 其他 > 详细

[Luogu] P1374 最大约数和

时间:2018-02-27 22:00:35      阅读:161      评论:0      收藏:0      [点我收藏+]

Luogu P1734 最大约数和


传送门

读入S,预处理\(1\)\(S\)之间所有数的约数和,然后直接跑一个\(O(n^2)\)\(01\)背包即可。

#include <algorithm>
#include <cstdio>
const int MAXN = 1001;
int n, rslt;
int c[MAXN], f[MAXN];
inline int solve(int now) {
    int ans(0);
    for (int i = 1; i < now; ++i)
        if(!(now % i)) ans = ans + i;
    return ans;
}
int main() {
    scanf("%d", &n);
    for (int i = 1; i <= n; ++i) 
        c[i] = solve(i);
    for (int i = 1; i <= n; ++i)
        for (int j = n; j >= i; --j)
            f[j] = std::max(f[j], f[j - i] + c[i]), rslt = std::max(rslt, f[j]);
    printf("%d\n", f[n]);
    return 0;
}

[Luogu] P1374 最大约数和

原文:https://www.cnblogs.com/manziqi/p/8481126.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!