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;
}
相关推荐
kiracrimson13 小时前
string 容器:从 C 字符串到会自己扩容的类
开发语言·数据结构·c++·stl
程序猿编码13 小时前
纯 C++ 手写 LLM 推理引擎:分页 KV 缓存、连续批、多卡张量并行全部内置
c++·深度学习·缓存·大模型推理·自动微分·模型推理
一条闲鱼_mytube13 小时前
分布式 ID 生成方案:雪花算法与号段模式
分布式·算法·wpf
程序边界13 小时前
顶刊级论文配图全流程:用 Python 复刻 Nature/Science 风格图表
开发语言·python
普通人613 小时前
uniapp模版JS
开发语言·javascript·小程序·uni-app·1024程序员节
Msir_Modern13 小时前
Noita 元胞沙盒笔记
算法·unity·c#·游戏引擎·元胞自动机
G018_star sky♬13 小时前
nodeJS他是如何用JavaScript封装C++的呢
开发语言·javascript·c++
wyhwust14 小时前
程序设计基础--C语言输入输出单元测试
c语言·开发语言
choumin14 小时前
C++中std::move和std::forward的关系和区别
c++·std move·std forward·关系和区别
云和数据.ChenGuang14 小时前
python sorted函数详细剖析
开发语言·人工智能·windows·python·1024程序员节