Codeforces Round #260 (Div. 1) 455 A. Boredom (DP)
题目链接:http://codeforces.com/problemset/problem/455/A
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.
题意:
给定一个序列。每次从序列中选出一个数ak,获得ak的得分。同一时候删除序列中全部的ak−1,ak+1,
求最大得分的值。
思路:
存下每一个数的个数放在c中。消除一个数i,会获得c[i]*i的值(由于能够消除c[i]次),
假设从0的位置開始向右消去,那么。消除数i时。i-1可能选择了消除。也可能没有,
假设消除了i-1,那么i值就已经不存在,dp[i] = dp[i-1]。
假设没有被消除,那么dp[i] = dp[i-2]+ c[i]*i。
代码例如以下:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define LL __int64
const int MAXN = 100017;
LL c[MAXN], dp[MAXN];
void init()
{
memset(dp,0,sizeof(dp));
memset(c,0,sizeof(c));
}
int main()
{
LL n;
LL tt;
int i, j;
while(~scanf("%I64d",&n))
{
init();
int maxx = 0;
for(i = 1; i <= n; i++)
{
scanf("%I64d",&tt);
if(tt > maxx)
maxx = tt;
c[tt]++;
}
dp[0] = 0, dp[1] = c[1];
for(i = 2; i <= maxx; i++)
{
dp[i] = max(dp[i-1],dp[i-2]+c[i]*i);
}
printf("%I64d\n",dp[maxx]);
}
return 0;
}
最新文章
- Deadlock Detecting--转
- 当table中的td内容过多,显示不完全,用省略号表示。
- 关于FileStream读取大文件问题
- fluery算法
- console下纯字符实现的贪吃蛇
- android下身份验证方式调用webservice
- bzoj 1090 [SCOI2003]字符串折叠(区间DP)
- shareplex的安装&;&;起停服务(添加新用户)
- sjtu1333 函数时代
- [转]How to compile GDB for iOS!
- 解决NetStream.appendBytes直播爆音的问题解决
- js内存深入学习(一)
- Windows下安装BeautifulSoup4显示&#39;You are trying to run the Python 2 version of Beautiful Soup under Python 3.(`python setup.py install`) or by running 2to3 (`2to3 -w bs4`).&#39;
- 匿名内部类中使用的外部局部变量为什么只能是final变量
- 关于select标签曾经踩过的几个坑!
- 看看大网站都用什么操作系统和Web服务器
- Windows 消息【二】窗口函数
- android 发送短信的两种方式,以及接收报告和发送报告
- 务实java基础之集合总结
- Java乱码解决之道
热门文章
- [jqpolt] formatString 日期格式化列表
- quartz + spring 启动项目时,报错The web application [] appears to have started a thread named.........
- Css问题 margin float 文档流 背景图底部充满
- WebStorm2018.2 破解 激活
- python 编码问题解决方案
- 如何用npm安装vue
- (转)基于MVC4+EasyUI的Web开发框架经验总结(7)--实现省份、城市、行政区三者联动
- 16种C语言编译警告(Warning)类型的解决方法
- 自学python 第二天
- BZOJ 3674 可持久化并查集加强版(按秩合并版本)