【洛谷】【动态规划/01背包】P1734 最大约数和
2024-10-14 12:39:39
【题目描述:】
选取和不超过S的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大。
【输入格式:】
输入一个正整数S。
【输出格式:】
输出最大的约数之和。
[算法分析:]
01背包,每个数的约数和为其价值,数的大小为其花费
注意1的价值应该为0
[Code:]
#include<iostream>
#include<cstdio>
using namespace std;
int n, v[1001], f[1001];
int work(int x) {
if(x == 1) return 0;
int l = x/2, ret = 1;
for(int i=2; i<=l; ++i)
if(x % i == 0) ret += i;
return ret;
}
int main() {
cin >> n;
for(int i=1; i<=n; ++i) v[i] = work(i);
for(int i=1; i<=n; ++i)
for(int j=n; j>=i; --j)
f[j] = max(f[j], f[j-i]+v[i]);
cout << f[n];
}
最新文章
- 如何在osg中删除EventHandler
- JavaScript的Date对象
- 破解Mysql数据库密码
- ActionErrors 使用说明 struts1 validate 处理流程 详细教程(转)
- Rhel6-haproxy+keepalived配置文档
- 第十篇、让UIScrollView的滚动条常显
- Android Studio 单刷《第一行代码》系列 04 —— Activity 相关
- HDU-2523 SORT AGAIN
- adb测试使用相关
- android 代码布局 记录
- 错误提示:在此上下文中不允许使用名称 ";***";。有效表达式包括常量、 常量表达式和变量(在某些上下文中),不允许使用列名。
- java调用存储过程超时及DBCP参数配置说明
- this笔记
- JS可维护性代码
- [LeetCode] Wildcard Matching 题解
- win10彻底禁用自动更新,win10怎样彻底关闭自动更新,永久关闭win10自动更新,win10更新助手
- 爬虫 http原理,梨视频,github登陆实例,requests请求参数小总结
- 实现lodash.get功能
- java:根据利润表计算奖金所得
- Practical Node.js (2018版) 第4章: 模版引擎