1500*A. Boredom(DP)

Problem - 455A - Codeforces

Boredom - 洛谷

解析:

首先统计每个数的个数,并且统计出最大值mx。

问题转换为,从1-mx 中选择任意个数字,使其都不相邻,求最大的总和。

开始没有思路,以为直接选取偶数位和奇数位,然后求较大值。

正解位DP,dp i 如果不选则等于 dp i-1 ,如果选,则等于dp i-2 + i *cnt i ,遍历每次求最大值即可。

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+5;
int n,x,cnt[N],mx,dp[N];
signed main(){
	scanf("%lld",&n);
	for(int i=1;i<=n;i++){
		scanf("%lld",&x);
		cnt[x]++;
		mx=max(mx,x);
	}
	dp[1]=cnt[1];
	for(int i=2;i<=mx;i++){
		dp[i]=max(dp[i-1],dp[i-2]+i*cnt[i]);
	}
	printf("%lld",dp[mx]);
	return 0;
}
相关推荐
Jared_devin14 分钟前
单头、多头 Self-Attention可视化
人工智能·pytorch·深度学习·算法·机器学习·pycharm
Jackson_GJH21 分钟前
C++虚函数、虚继承、虚基类
c++·c++基础
wuyk55524 分钟前
18.Kruskal 算法:用最短的边连成一张网
开发语言·算法·图论
Evand J25 分钟前
【MATLAB例程,图像降噪7】高斯加权滑动窗口滤波,用于图像降噪,带质量评价,附代码下载链接
开发语言·图像处理·matlab·滑动窗口·滤波·降噪·图像滤波
十年一梦惊觉醒34 分钟前
快手视频发布助手,全自动视频发布带货工具
开发语言·前端·javascript
Java后端的Ai之路35 分钟前
一文搞懂 GitHub Actions-CICD
开发语言·大模型·github·cicd·action
码匠许师傅38 分钟前
【C++三方组件】开篇总论:为什么需要以及如何选型?
开发语言·c++
h_a_o777oah44 分钟前
【Games101】C++ 软光追:光线追踪的求交逻辑和 BVH 提效实现及代码实现细节
c++·计算机图形学·光线追踪·games101·bvh·求交算法·软件渲染
cvby1 小时前
C++11--右值引用和移动语义
开发语言·c++
pen-ai1 小时前
【优化方法】最小二乘:从误差平方到线性与非线性拟合
人工智能·算法·机器学习