Codeforces 260 C. Boredom
2014-08-10 21:53
375 查看
题目链接:http://codeforces.com/contest/456/problem/C
解题报告:给出一个序列,然后选择其中的一个数 k 删除,删除的同时要把k - 1和k + 1也删除掉,同时总分数里面加上一个k,求最大的分数可以是多少?
dp题,递推公式是 dp[i] = max(dp[i-2]+num[i] * i,dp[i-1]); ,注意要用long long ,一开始没用WA了两发。
View Code
解题报告:给出一个序列,然后选择其中的一个数 k 删除,删除的同时要把k - 1和k + 1也删除掉,同时总分数里面加上一个k,求最大的分数可以是多少?
dp题,递推公式是 dp[i] = max(dp[i-2]+num[i] * i,dp[i-1]); ,注意要用long long ,一开始没用WA了两发。
#include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #include<deque> #include<queue> #include<set> #include<map> using namespace std; #define maxn 100005 #define LL long long LL dp[maxn],num[maxn]; int main() { int n; while(scanf("%d",&n)!=EOF) { memset(num,0,sizeof(num)); memset(dp,0,sizeof(dp)); LL d,M = 0; for(int i = 1;i <= n;++i) { scanf("%lld",&d); M = max(M,d); num[d]++; } dp[1] = num[1]; for(int i = 2;i <= M;++i) dp[i] = max(dp[i-2]+num[i] * i,dp[i-1]); printf("%lld\n",dp[M]); } return 0; }
View Code
相关文章推荐
- 递推DP Codeforces Round #260 (Div. 1) A. Boredom
- Codeforces Round #260 (Div. 2) C. Boredom
- Codeforces Round #260 (Div. 1) 455 A. Boredom (DP)
- 第九次codeforces竞技结束 #260 Div 2
- codeforces #260 DIV 2 C题Boredom(DP)
- codeforces 260 div2 A,B,C
- Codeforces Round #260 (Div. 2)C. Boredom(dp)
- CodeForces 455A - Boredom
- codeforces 260 div1
- codeforces #260 DIV 2 C题Boredom(DP)
- Codeforces 260 Recordings
- codeforces 260 div2 B题
- codeforces 260 div2 B题
- codeforces 260 div2 B题
- Codeforces 260 A - A. Laptops
- CodeForces 455A:Boredom (动态规划)
- 【CodeForces 455A】Boredom(dp)
- DP Codeforces Round #260 (Div. 1) A. Boredom
- Codeforces Round #260 (Div. 1) A. Boredom (简单dp)
- codeforces 260 div2 C题