Codeforces Round #260 (Div. 2) C. Boredom【DP】
来源:互联网 发布:ubuntu安装libcurl 编辑:程序博客网 时间:2024/05/16 11:12
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.
21 2
2
31 2 3
4
91 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.
#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;#define MAX 111111#define ll __int64ll sum[MAX],dp[MAX];int main(){ int n,x,nmax = 0; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&x); sum[x] += x; nmax = max(nmax,x); } dp[0] = 0; dp[1] = sum[1]; for(int i=2;i<=nmax;i++) { dp[i] = max(dp[i-2]+sum[i],dp[i-1]); } printf("%I64d\n",dp[nmax]);}二维:不选的话就是上一个数选或不选的最大值,选的话是上一个数不选 + 这个数的值*数量
#include<stdio.h>#include<iostream>#include<algorithm>using namespace std;#define MAX 111111#define ll __int64ll sum[MAX],dp[MAX][2];int main(){ int n,x,nmax = 0; scanf("%d",&n); for(int i=0;i<n;i++) { scanf("%d",&x); sum[x]++; nmax = max(nmax,x); } for(int i=1;i<=nmax;i++) { dp[i][0] = max(dp[i-1][0],dp[i-1][1]); dp[i][1] = dp[i-1][0] + sum[i]*i; } printf("%I64d\n",max(dp[nmax][0],dp[nmax][1]));}
上面的代码都用全局变量方式初始化了0,所以多次输入的话要memset
- Codeforces Round #260 (Div. 2)C. Boredom(dp)
- Codeforces Round #260 (Div. 2) C. Boredom【DP】
- dp解Codeforces Round #260 (Div. 2)C. Boredom
- Codeforces Round #260 (Div. 2) C. Boredom(DP)
- Codeforces Round #260 (Div. 2) C. Boredom
- Codeforces Round #260 (Div. 2) C Boredom
- Codeforces Round #260 (Div. 2)C. Boredom
- Boredom - CodeForces #260 (Div. 2) C dp
- Codeforces Round #260 (Div. 2)455A - Boredom (DP)
- Codeforces Round #260 (Div. 2)——C. Boredom
- codeforces #260 DIV 2 C题Boredom(DP)
- Codeforces Round #260 (Div. 1) 455 A. Boredom (DP)
- Codeforces Round #260 (Div. 1) 455 A. Boredom (DP)
- Codeforces Round #260 (Div. 1) A. Boredom
- Codeforces Round #260 (Div. 1) A. Boredom
- Codeforces Round #260 (Div. 1) A. Boredom
- Codeforces Round #433 (Div. 2) E. Boredom
- Codeforces #260 (Div. 2) C. Boredom(动态规划)
- Asp.Net函数大全
- doophp 常用篇
- Android FakeID(Google Bug 13678484) 漏洞详解
- POJ-2349 Arctic Network
- UVa11584 Partitioning by Palindromes
- Codeforces Round #260 (Div. 2) C. Boredom【DP】
- Java学习小试牛刀之数字金额转换为人民币大写
- krpano 教程 - plugin标签中文说明
- hdu 3336 Count the string dp+KMP(失配函数)
- Python: 初识shelve module
- JNI调用需要包含的头文件
- C++中的左值右值
- STL vector中的begin方法(3)
- (转载)关于ContextMenu绑定问题