zoukankan      html  css  js  c++  java
  • Codeforces 260 C. Boredom

    题目链接: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了两发。

     1 #include<cstdio>
     2 #include<cstring>
     3 #include<iostream>
     4 #include<algorithm>
     5 #include<cmath>
     6 #include<deque>
     7 #include<queue>
     8 #include<set>
     9 #include<map>
    10 using namespace std;
    11 #define maxn 100005
    12 #define LL long long
    13 LL dp[maxn],num[maxn];
    14 
    15 int main()
    16 {
    17     int n;
    18     while(scanf("%d",&n)!=EOF)
    19     {
    20         memset(num,0,sizeof(num));
    21         memset(dp,0,sizeof(dp));
    22         LL d,M = 0;
    23         for(int i = 1;i <= n;++i)
    24         {
    25             scanf("%lld",&d);
    26             M = max(M,d);
    27             num[d]++;
    28         }
    29         dp[1] = num[1];
    30         for(int i = 2;i <= M;++i)
    31         dp[i] = max(dp[i-2]+num[i] * i,dp[i-1]);
    32         printf("%lld
    ",dp[M]);
    33     }
    34     return 0;
    35 }
    View Code
  • 相关阅读:
    创意:网络族谱
    排列组合的要点
    创意:人生记录
    纽康悖论谜题
    发财的要点
    c#4.0协变逆变的理解
    关于开发自我训练课程
    反对继承
    远离疲倦,告别非理性思维
    中国软件正版化的理想模型
  • 原文地址:https://www.cnblogs.com/xiaxiaosheng/p/3903464.html
Copyright © 2011-2022 走看看