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;
}
相关推荐
_李小白10 小时前
【C++学习笔记】新特性之inline变量
c++·笔记·学习
心中有国也有家10 小时前
hccl 架构拆解:昇腾集合通信库到底在做什么?
人工智能·经验分享·笔记·分布式·算法·架构
桀人11 小时前
C++——模板初阶(收录在专栏C++入门到精通)
开发语言·c++
一直有一个ac的梦想11 小时前
cmu15445 2025fall lec 18 transactions with two-phase lock
java·开发语言·数据库
小O的算法实验室11 小时前
2026年MCS,Q-learning增强MOPSO与改进DWA融合算法+复杂三维地形下特定移动机器人动态路径规划
算法
JAVA社区11 小时前
Java进阶全套教程(四)—— SpringMVC框架详解
java·开发语言·spring·面试·职场和发展
Lumbrologist11 小时前
【C++】零基础入门 · 第 2 节:变量、基本数据类型与输入输出
java·开发语言·c++
XX風11 小时前
CMake / Make / Ninja / MSVC / GCC / Clang / MSBuild —— 完整体系化理解
c++
码完就睡11 小时前
C语言——动态内存
c语言·开发语言
xyq202411 小时前
Java 数组
开发语言