Codeforces 455A Boredom 取数字的dp
题目链接:点击打开链接
给定一个n长的序列
删除x这个数就能获得x * x的个数 的分数,然后x+1和x-1这2个数会消失。即无法获得这2个数的分数
问最高得分。
先统计每一个数出现的次数。然后dp一下,对于每一个数仅仅有取或不取2种状态。
#include <algorithm>
#include <cctype>
#include <cassert>
#include <cstdio>
#include <cstring>
#include <climits>
#include <vector>
#include<iostream>
#include <queue>
using namespace std;
#define ll long long
ll hehe;
#define N 100005
ll num[N], n;
ll dp[N][2];
void work(){
for(ll i = 1; i < N; i++){
dp[i][0] = max(dp[i-1][0], dp[i-1][1]);
if(num[i]) {
if(i-2>=0)
dp[i][1] = max(dp[i-2][0], dp[i-2][1])+num[i]*i;
dp[i][1] = max(dp[i][1], dp[i-1][0] + num[i]*i);
}
}
cout<<max(dp[N-1][0], dp[N-1][1])<<endl;
}
int main(){
ll i, j, u;
while(cin>>n){
memset(num, 0, sizeof num);
memset(dp, 0, sizeof dp);
for(i = 1; i <= n; i++)
{
scanf("%I64d", &u);
num[u] ++;
}
work();
}
return 0;
}
Codeforces 455A Boredom 取数字的dp的更多相关文章
- 取数字(dp优化)
取数字(dp优化) 给定n个整数\(a_i\),你需要从中选取若干个数,使得它们的和是m的倍数.问有多少种方案.有多个询问,每次询问一个的m对应的答案. \(1\le n\le 200000,1\le ...
- Codeforces 455A - Boredom - [DP]
题目链接:https://codeforces.com/problemset/problem/455/A 题意: 给出一个 $n$ 个数字的整数序列 $a[1 \sim n]$,每次你可以选择一个 $ ...
- CodeForces 455A Boredom (DP)
Boredom 题目链接: http://acm.hust.edu.cn/vjudge/contest/121334#problem/G Description Alex doesn't like b ...
- Codeforces 455A Boredom (线性DP)
<题目链接> 题目大意:给定一个序列,让你在其中挑选一些数,如果你选了x,那么你能够得到x分,但是该序列中所有等于x-1和x+1的元素将全部消失,问你最多能够得多少分. 解题分析:从小到大 ...
- 洛谷P1004 方格取数-四维DP
题目描述 设有 N \times NN×N 的方格图 (N \le 9)(N≤9) ,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字 00 .如下图所示(见样例): A 0 0 0 0 0 ...
- [CodeForces - 1225E]Rock Is Push 【dp】【前缀和】
[CodeForces - 1225E]Rock Is Push [dp][前缀和] 标签:题解 codeforces题解 dp 前缀和 题目描述 Time limit 2000 ms Memory ...
- P2034 选择数字——线性dp(单调队列优化)
选择数字 题目描述 给定一行 \(n\) 个非负整数 \(a[1]...a[n]\) .现在你可以选择其中若干个数,但不能有超过 \(k\) 个连续的数字被选择.你的任务是使得选出的数字的和最大. 输 ...
- python取数字、字母
python取数字.字母 有一串字符串“lxa7YzU”,其中有大写字母.小写字母和数字,现编写一脚本使得实现以下功能: 将这串字符串中的数字.大写字母.小写字母分别取出来并进行分类. 脚本如下所示: ...
- 繁繁的数字 背包DP
繁繁的数字 背包DP 问一个数\(n\)有多少种二进制分解方案数 \(n\le 10^5\) 如7有7=4+2+1=4+1+1+1=2+2+2+1=2+2+1+1+1=2+1+1+1+1+1=1+1+ ...
随机推荐
- nginx和selinux冲突
cat /var/log/audit/audit.log |grep nginx |grep denied| audit2allow -M mynginx 取出selinux中有关于nginx被拒绝的 ...
- javascript快速入门20--Cookie
Cookie 基础知识 我们已经知道,在 document 对象中有一个 cookie 属性.但是 Cookie 又是什么?“某些 Web 站点在您的硬盘上用很小的文本文件存储了一些信息,这些文件就称 ...
- Java计算两个日期相差的天数
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...
- vue-resource基本使用方法
一.vue-resource特点 1.体积小:vue-resource非常小巧,在压缩以后只有大约12KB,服务端启用gzip压缩后只有4.5KB大小,这远比jQuery的体积要小得多. 2.支持主流 ...
- Spark(十一) -- Mllib API编程 线性回归、KMeans、协同过滤演示
本文测试的Spark版本是1.3.1 在使用Spark的机器学习算法库之前,需要先了解Mllib中几个基础的概念和专门用于机器学习的数据类型 特征向量Vector: Vector的概念是和数学中的向量 ...
- Oracle Database Link 的创建和使用小见
假设:需要从数据库db_a通过db_link连接到db_b查询数据库b的部分相关信息 前提条件: 数据库a账户需要有创建dblink的权限,如果没有可以使用dba账户赋权限 grant CREATE ...
- RDD编程 下(Spark自学四)
3.5 常见的转化操作和行动操作 3.5.1 基本RDD 1. 针对各个元素的转化操作 两个最常用的转化操作是map()和filter().转化操作map()接受一个函数,把这个函数用于RDD中的每个 ...
- CentOS 7 yum安装失败问题
在CentOS 7中,执行yum安装,一直报错,错误信息如下 其实在上述的错误信息中,上述中的repodata/repomd.xml文件据说是/mnt目录rpm包的目录,路径 在/mnt中因为没有/r ...
- sipp中的action使用方法
最近在做sip服务器的压力测试 场景:当主叫收到200 Ok之后要将Contact 头域中的字段放在ACK消息中的请求行和to头域中发给被叫 查看sipp官网文档就使用action, 在主叫脚本中增加 ...
- AbstractQueuedSynchronizer源码分析
AbstractQueuedSynchronizer源码分析 前提 AQS(java.util.concurrent.locks.AbstractQueuedSynchronizer)是并发编程大师D ...