CF455ABoredom
题目大意:
给你一个由 \(n\) 个整数构成的序列 \(a\),玩家可以进行几个步骤,每一步他可以选择序列中的一个元素(我们把它的值定义为 \(a_k\))并删除它,此时值等于 \(a_{k + 1}\) 和 \(a_{k - 1}\) 的所有元素也都必须从序列中被删除。这次操作会给玩家加 \(a_k\) 分。
在样例这一数据中,我们先删除一个 \(2\) ,以此删去所有的 \(1,3\),得到一个全为 \(2\) 的序列,接下来,我们无论如何删除,都不会将 \(2\) 删去。由此我不禁产生了一个想法:是不是得到一个全部数字相等的序列,再挨个删除,就可以使结果最大化呢?
显然,这样的思考不够全面。于是想到了动态规划。因为 \(1≤ {a_i} ≤ {10^5}\),不妨将数字定为状态,\(dp[i]\) 表示将前 \(i\) 种数删除完后所能得到的最大分数。因为每删除一个 \(i\),\(i - 1\) 和 \(i + 1\) 这两种数都要被删除,而若想保留 \(i\) ,就只能删除 \(i - 2\),于是我们不难得到如下的状态转移方程:
\]
(其中 \(a[i]\) 表示在输入的数据中 \(i\) 出现的次数)
AC代码如下:
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
long long a[N];//记录i出现的次数
long long dp[N];
int main(){
int n;
cin >> n;
for(int i = 1;i <= n;i++){
int x;
cin >> x;
a[x]++;
}
dp[1] = a[1];
for(int i = 2;i <= 100002;i++){
dp[i] = max(dp[i-1],dp[i-2]+i*a[i]);
}
cout<< dp[100002]<<endl;
return 0;
}
CF455ABoredom的更多相关文章
随机推荐
- RocketMq 完整部署
目录 RocketMq 部署 环境 物理机部署 自定义日志目录 自定义参数和数据存放位置 服务启动 启动name server 启动broker 关停服务 尝试发送消息 常见报错 部署 rockerm ...
- spring boot 集成 rabbitmq 指南
先决条件 rabbitmq server 安装参考 一个添加了 web 依赖的 spring boot 项目 我的版本是 2.5.2 添加 maven 依赖 <dependency> &l ...
- Android shape与selector标签使用
原文地址:Android shape与selector标签使用 Android中提供一种xml的方式,让我们可以自由地定义背景,比较常用的就是shape标签和selector标签 shape shap ...
- STM32 CubeMx使用教程
一.STM32CubeMX 简介 STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具,目的就是为了方便开发者, 允许用户使用图形化向导生成C 初始化代码,可以 ...
- vue运行npm run dev时候,自动打开页面
在config/index.js找到dev:{}里面的autoOpenBrowser: 设置为true,重新npm run dev一次就自动弹出浏览器页面啦!
- MVC - MVC的工作流程
MVC 是Model-View-Controller的简写."Model" 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), "View" 是应 ...
- SQL Server之自动创建视图
本方法只适合特定模式的视图创建. 比如,创建需要整张表列名的视图,或者当表和需要的列名统计在一张数据表当中,如图所示: 首先要先获取要创建视图所需要的表,这里我获取的是整个数据库中的表, IF OBJ ...
- 如何优化PlantUML流程图(时序图)
这篇文章用来介绍,如何画出好看的流程图. 1. 选择合适的组件 1.1 plantuml官方提供的组件 1.2 加载图片 1.2.1 加载本地图片 1.2.2 加载网络图片 1.2.3 图片资源 2. ...
- Camunda如何适配国产数据库达梦
前言 camunda流程引擎官方支持的数据库有:MySQL .MariaDB .Oracle .DB2 .PostgreSQL .SQL Server.H2.对于其他类型的数据库如何支持,尤其是国产数 ...
- 【高并发】通过ThreadPoolExecutor类的源码深度解析线程池执行任务的核心流程
核心逻辑概述 ThreadPoolExecutor是Java线程池中最核心的类之一,它能够保证线程池按照正常的业务逻辑执行任务,并通过原子方式更新线程池每个阶段的状态. ThreadPoolExecu ...