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的更多相关文章
随机推荐
- 扩展.Net Core Identity Server 授权方式,实现 手机号+ 验证码 登录
背景 国内来讲,注册/登录流程都是尽可能的简单,注册流程复杂,容易流失客户.手机号 + 短信验证码的方式非常普遍:但是框架默认并没有类似的功能,需要我们自己进行扩展. 思路 验证登录手机号为注册用户, ...
- 如何形象简单地理解java中只有值传递,而没有引用传递?
首先,java中只有值传递,没有引用传递.可以说是"传递的引用(地址)",而不能说是"按引用传递". 按值传递意味着当将一个参数传递给一个函数时,函数接收的是原 ...
- 操作系统实现-loader
博客网址:www.shicoder.top 微信:18223081347 欢迎加群聊天 :452380935 大家好呀,终于我们到了操作系统的loader部分了,loader也是操作系统中最重要的一个 ...
- vivo 万台规模 HDFS 集群升级 HDFS 3.x 实践
vivo 互联网大数据团队-Lv Jia Hadoop 3.x的第一个稳定版本在2017年底就已经发布了,有很多重大的改进. 在HDFS方面,支持了Erasure Coding.More than 2 ...
- Mybatis-Plus乐观锁Version
实现原理 取出记录时,获取当前version更新时,带上这个version执行更新时, set version = newVersion where version = oldVersion如果ver ...
- 开源流程引擎osworkflow、jbpm、activiti、flowable、camunda哪个好?
市场上比较有名的开源流程引擎有osworkflow.jbpm.activiti.flowable.camunda.其中:Jbpm4.Activiti.Flowable.camunda四个框架同宗同源, ...
- 一文带你搞懂 JWT 常见概念 & 优缺点
在 JWT 基本概念详解这篇文章中,我介绍了: 什么是 JWT? JWT 由哪些部分组成? 如何基于 JWT 进行身份验证? JWT 如何防止 Token 被篡改? 如何加强 JWT 的安全性? 这篇 ...
- Spring框架系列(3) - 深入浅出Spring核心之控制反转(IOC)
在Spring基础 - Spring简单例子引入Spring的核心中向你展示了IoC的基础含义,同时以此发散了一些IoC相关知识点; 本节将在此基础上进一步解读IOC的含义以及IOC的使用方式.@pd ...
- XAMPP Apache安装时问题总结
昨天遇到的一个问题,安装XAMPP后无法启动Apache服务,本以为可能是一些系统服务文件被占用的原因,安装软件后需重启一遍.可是重启计算机后依然无法启动Apache服务,状态栏里总是显示" ...
- windows下docker部署报错
报错信息:Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:8848 -> 0.0.0 ...