首页 > 其他 > 详细

【洛谷 1734】最大约束和

时间:2019-10-21 22:00:38      阅读:55      评论:0      收藏:0      [点我收藏+]

题目描述

选取和不超过S的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大。

输入格式

输入一个正整数S。

输出格式

输出最大的约数之和。

输入输出样例

输入 #1
11
输出 #1
9

说明/提示

样例说明

取数字4和6,可以得到最大值(1+2)+(1+2+3)=9。

数据规模

S<=1000

题解:这不是一道打卡题了qwq!我觉得有点难想到是01背包啊。

          恩要先预处理 a[i],表示i的约数和

#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<queue>
using namespace std;
const int N=1002;
int a[N],dp[N],n;
int main(){
    freopen("1734.in","r",stdin);
    freopen("1734.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n/2;i++)
        for(int j=2;j*i<=n;j++) 
            a[i*j]+=i;
    for(int i=1;i<=n;i++)
        for(int j=i;j<=n;j++)
            dp[j]=max(dp[j],dp[j-i]+a[i]);
    printf("%d",dp[n]);
    return 0;
}

 

【洛谷 1734】最大约束和

原文:https://www.cnblogs.com/wuhu-JJJ/p/11715565.html

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