CF 455A Boredom
1 second
256 megabytes
standard input
standard output
Alex doesn't like boredom. That's why whenever he gets bored, he comes up with games. One long winter evening he came up with a game and decided to play it.
Given a sequence a consisting of n integers. The player can make several steps. In a single step he can choose an element of the sequence (let's denote it ak) and delete it, at that all elements equal to ak + 1 and ak - 1 also must be deleted from the sequence. That step brings ak points to the player.
Alex is a perfectionist, so he decided to get as many points as possible. Help him.
The first line contains integer n (1 ≤ n ≤ 105) that shows how many numbers are in Alex's sequence.
The second line contains n integers a1, a2, ..., an (1 ≤ ai ≤ 105).
Print a single integer — the maximum number of points that Alex can earn.
2
1 2
2
3
1 2 3
4
9
1 2 1 3 2 2 2 2 3
10
Consider the third test example. At first step we need to choose any element equal to 2. After that step our sequence looks like this [2, 2, 2, 2]. Then we do 4 steps, on each step we choose any element equals to 2. In total we earn 10 points.
【题意】
给你一个数组a,里面有n个整数。你每次可以选择数组中的一个元素ak,从数组中删掉它,再删掉所有值等于ak + 1 或者 ak - 1的元素,这样你可以得到 ak 分。你可以重复进行多次该操作,请问你最后最多能得多少分?
【分析】
先求出数列中每一个数字k的出现次数num[k]
状态转移方程:如果取得第i-1个数,那么第i-2和第i个数均不可取;反之可取得第i和第i-2个数

第i个状态的值为 (取得第i-1个数的得分) 与 (取得第i-2个数得分和取得当前数的得分之和) 的最大值
注意,最后一重for循环要从2循环至已知的maxn
【代码】
#include<cstdio>
#include<iostream>
using namespace std;
const int N=1e5+5;
inline int read(){
	register int x=0;register char ch=getchar();
	for(;ch<'0'||ch>'9';ch=getchar());
	for(;ch>='0'&&ch<='9';ch=getchar()) x=(x<<3)+(x<<1)+ch-'0';
	return x;
}
int n,mx;long long cnt[N],f[N];
int main(){
	n=read();
	for(int i=1,x;i<=n;i++) mx=max(mx,x=read()),cnt[x]+=x;
	f[1]=cnt[1];
	for(int i=2;i<=mx;i++) f[i]=max(f[i-1],f[i-2]+cnt[i]);
	printf("%I64d\n",f[mx]);
	return 0;
} 
CF 455A Boredom的更多相关文章
- CodeForces 455A	Boredom (DP)
		Boredom 题目链接: http://acm.hust.edu.cn/vjudge/contest/121334#problem/G Description Alex doesn't like b ... 
- CF 455A(Boredom-dp)
		A. Boredom time limit per test 1 second memory limit per test 256 megabytes input standard input out ... 
- Codeforces 455A Boredom (线性DP)
		<题目链接> 题目大意:给定一个序列,让你在其中挑选一些数,如果你选了x,那么你能够得到x分,但是该序列中所有等于x-1和x+1的元素将全部消失,问你最多能够得多少分. 解题分析:从小到大 ... 
- Codeforces 455A - Boredom - [DP]
		题目链接:https://codeforces.com/problemset/problem/455/A 题意: 给出一个 $n$ 个数字的整数序列 $a[1 \sim n]$,每次你可以选择一个 $ ... 
- Codeforces 455A Boredom 取数字的dp
		题目链接:点击打开链接 给定一个n长的序列 删除x这个数就能获得x * x的个数 的分数,然后x+1和x-1这2个数会消失.即无法获得这2个数的分数 问最高得分. 先统计每一个数出现的次数.然后dp一 ... 
- codeforces每日一题1-10
		目录: 1.1093D. Beautiful Graph(DFS染色) 2.514C - Watto and Mechanism(Tire) 3.69E.Subsegments(STL) 4.25C. ... 
- CF456C  Boredom (DP)
		Boredom CF#260 div2 C. Boredom Codeforces Round #260 C. Boredom time limit per test 1 second memory ... 
- 蒟蒻修养之cf橙名计划
		因为太弱,蒟蒻我从来没有上过div1(这就是今年的最后愿望啊啊啊啊啊)已达成................打cf几乎每次都是fst...........所以我的cf成绩图出现了惊人了正弦函数图像.. ... 
- ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'
		凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ... 
随机推荐
- Yii2 session的使用方法(3)
			Flash数据是一种特别的session数据,它一旦在某个请求中设置后, 只会在下次请求中有效,然后该数据就会自动被删除. 常用于实现只需显示给终端用户一次的信息, 如用户提交一个表单后显示确认信息. ... 
- SQL2000系统表、存储过程、函数的功能介绍及应用
			转自:http://blog.csdn.net/zlp321002/article/details/480925 ----系统表------------------------------------ ... 
- vue父组件中获取子组件中的数据
			<FormItem label="上传头像" prop="image"> <uploadImg :width="150" ... 
- Cannot retrieve the latest commit at this time.
			此时无法检索最新提交. GitHub页面上提示: Cannot retrieve the latest commit at this time. 还没更新的意思,等他更新就好了. 更新后: 
- jquery easyui datagrid实现单行的上移下移,以及保存移动的结果
			1.实现行的上移.下移. 说明: 1.1 通过datagrid生成的表格有固定的格式,比如,表格div的class名是datagrid-view.比如每一行tr都有id和datagrid-row-in ... 
- mysql 连接字符串 CONCAT
			以前用SQL Server 连接字符串是用“+”,现在数据库用mysql,写个累加两个字段值SQL语句居然不支持"+",郁闷了半天在网上查下,才知道mysql里的+是数字相加的操作 ... 
- Go之go与channel组合使用
			1,等待一个事件 <-ch 将一直阻塞,直到ch被关闭 或者 ch中可以取出值 为止 所以到第17行之后会去执行go后面的func()匿名函数,在里面给ch赋值后(或者close(ch))后,才 ... 
- RFC文件
			RFC(Request For Comments)-意即“请求评议”,包含了关于Internet的几乎所有重要的文字资料.如果你想成为网络方面的专家,那么RFC无疑是最重要也是最经常需要用到的资料之一 ... 
- javascript实现的网页打印
			打印全部页面: <body onload="javascript:window.print()"> 实现局部打印,可以将不参加打印的元素设置“display=none” ... 
- 使用java中的session来记录访问次数
			<%@ page import="java.net.CookieHandler" %><%-- Created by IntelliJ IDEA. User: D ... 
