Codeforces 455A Boredom 取数字的dp
2014-08-09 12:34
399 查看
题目链接:点击打开链接
给定一个n长的序列
删除x这个数就能获得x * x的个数 的分数,然后x+1和x-1这2个数会消失,即无法获得这2个数的分数
问最高得分。
先统计每个数出现的次数,然后dp一下,对于每个数只有取或不取2种状态。
给定一个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; ll dp [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; }
相关文章推荐
- 【dp】 codeforces 455A Boredom
- Codeforces 455A Boredom (dp)
- Codeforces 455A Boredom【dp】
- Codeforces 429B Working out (dp 数字三角形变形)
- CodeForces-632B Alice, Bob, Two Teams 【dp】
- CodeForces 368C Sereja and Algorithm(dp)
- Codeforces 653B Bear and Compressing 【数位dp】
- Codeforces 219D Choosing Capital for Treeland 树型DP
- CodeForces 4B Before an Exam(DP)
- 51nod1042 数字0-9的数量(数位DP)
- Codeforces 23E (大数乘法+树形dp)
- codeforces 710E Generate a String(基础DP)
- Codeforces 708C 树形DP
- codeforces 743D Chloe and pleasant prizes 树形dp
- Codeforces 315E Sereja and Subsequences【思维+Dp】
- CodeForces - 512B Fox And Jumping[map优化dp]
- CodeForces - 459E Pashmak and Graph[贪心优化dp]
- CodeForces 589H Tourist Guide(树形DP)
- [bzoj1833][ZJOI2010]数字计数(数位DP)
- 【基础练习】【线性DP】codevs2622 数字序列(最大连续子序列和)题解