题目链接:点击查看

题目大意:给出一个由n个数字组成的数列,现在给出规则是,每次选择数列中的一种数字 x,选择后的贡献为 x,不过操作后会删除掉所有数值为 x + 1 和 x - 1 的数,现在问如何选择可以使得贡献最大

题目分析:线性dp,因为每个数若选择的话,那么他前后两个数都无法选择了,我们可以直接视为相邻两个数的关系,若当前的数选了,那么前一个数就没法选,若当前的数不选,则前一个数是可以选的,虽然这样无法限制到后面的那个数,但是随着状态的转移,到达后一个数时的决策和前面的决策并不会冲突,所以dp[i]代表选择数字 i 的最大贡献,那么转移方程就是:

dp[i]=max(dp[i-1],dp[i-2]+num*cnt[num]),i代表的是数值,范围为[1,1e5]

cnt数组是每个数字出现的次数,维护好所需要的信息后,直接转移就好了

代码:

#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cstring>
#include<algorithm>
#include<stack>
#include<queue>
#include<map>
#include<set>
#include<cmath>
#include<sstream>
#include<unordered_map>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=1e5+100;int cnt[N];LL dp[N];int main()
{
//  freopen("input.txt","r",stdin);
//  ios::sync_with_stdio(false);int n;scanf("%d",&n);for(int i=1;i<=n;i++){int num;scanf("%d",&num);cnt[num]++;}LL ans=0;dp[1]=cnt[1];for(int i=1;i<N;i++){dp[i]=max(dp[i-2]+1LL*i*cnt[i],dp[i-1]);ans=max(ans,dp[i]);}printf("%lld\n",ans);return 0;
}

CodeForces - 456C Boredom(线性dp)相关推荐

  1. CodeForces 1096D(线性dp)

    传送门 •题意 给出一个长度为n的字符串s,对于每个$s_{i}$有$a_{i}$的价值 让你删除最小的价值,使得字符串中不存在$hard$这个子序列 •思路 设dp[1]是不存在以$h$为前缀的最小 ...

  2. CodeForces - 1096D Easy Problem(线性dp)

    题目链接:点击查看 题目大意:给出一个字符串,每个字符都有一个权值,现在需要删除权值和最少的字符,满足字符串中不再含有子序列"hard" 题目分析:线性dp,但我不会,看着题解写的 ...

  3. A. Boredom(线性dp基础题)

    题目的大意是:给定你一个数组,每次可以删掉一个大小为a的数,获得a的分数,同时删除数列中所有大小为a+1和a-1的数.问删除所有数组中的数后,能够获得的最大分数值. 思路:本题可以用线性dp来解决.d ...

  4. 0x51.动态规划 - 线性DP(习题详解 × 10)

    目录 0x51.动态规划 - 线性DP 0x51.1 LIS问题 Problem A. 登山 (最长下降子序列) Problem B. 友好城市(思维) Problem C. 最大上升子序列和 0x5 ...

  5. UVA11584 划分成回文串 Partitioning by Palindromes(线性DP划分+DP判断回文串)

    整理的算法模板合集: ACM模板 依旧是线性DP 我们使用闫氏DP分析法 总体DP转移的时间复杂度为O(n2)O(n^2)O(n2). 但是这里牵扯到判断 i\tt ii 到 j\tt jj 是否为回 ...

  6. Codeforces 919D Substring (拓扑图DP)

    Codeforces 919D Substring (拓扑图DP) 手动博客搬家: 本文发表于20180716 10:53:12, 原地址https://blog.csdn.net/suncongbo ...

  7. 洛谷P2401 不等数列(线性DP)

    本题使用的是线性DP.就是DP数组难以思考,这里我直接给出 dp[i][j]:表示 1 ~ i 这 i 个数 , 其中j 个 " < " 有几种方法 假设我们已经把 n - ...

  8. POJ - 1050 To the Max(最大连续子段和,线性dp)

    题目链接:点击查看 题目大意:给出一个n*n的矩阵,每个点都有一个权值,现在要从中选取一个子矩阵要求权值和最大,问这个最大权值和是多少 题目分析:因为是要求子矩阵的权值和最大的问题,我们可以直接维护一 ...

  9. 牛客 - 「火」皇家烈焰(线性dp)

    题目链接:点击查看 题目大意:给出一个字符串表示扫雷游戏,其中: 0:这个格子没有烈焰,且其左右两个格子均没有烈焰 1:这个格子没有烈焰,且其左右两个格子中只有一个烈焰 2:这个格子没有烈焰,且其左右 ...

最新文章

  1. OpenCV4 部署DeepLabv3+模型
  2. AutoML大提速,谷歌开源自动化寻找最优ML模型新平台
  3. IE6 浮动层背景不显示
  4. 使用eclipse自带制作帮助系统
  5. EntityFramework进阶——继承
  6. php mysql 持久连接_PHP MySQL连接持久性
  7. RedAlert简介
  8. Java-----jar反编译修改重新打包
  9. ifc文件解析java_IFC标准 IFCWALLSTANDARDCASE参数说明
  10. 基于springboot网上订餐系统
  11. 银行业务光凭“刷脸”真的靠谱吗
  12. HTML5 SVG生成图案背景样式的js插件
  13. 曾国藩家训:三个地方看一个家庭的兴败
  14. 删除链表的节点(JS)
  15. python PyAutoGUI 模拟鼠标键盘操作和截屏
  16. mysql增加时间戳
  17. IDM下载器 v6.38.20 最新中文版 免费的多线程下载工具
  18. Microsoft Offfice 2010 测试版下载
  19. python一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
  20. 论文阅读_Same Coverage, Less Bloat: Accelerating Binary-only Fuzzing with Coverage-preserving Coverage-g

热门文章

  1. 公式 有效值_纯电阻电路电功率公式
  2. java 模型 视图,部分视图模型
  3. MySQL高级 全表扫描更快
  4. Spring-Cloud中的 熔断、限流、降级
  5. 数据层HikariCP与MyBatis整合
  6. Redis在生产中不得不重视的几个运维问题
  7. Bean的依赖注入方式
  8. 登录案例_BeanUtils基本使用
  9. 初始化方法-使用参数设置属性初始值
  10. 如何禁用单个FegionClient的Hystrix的支持