今天早上找一道题的bug,还是找不出来,下午刷了几道水题,晚上准备回家的事,

然后本来想打CF的,一看,数学场,不打了。

这道题的题意:

给出一个序列,每次你可以从这个序列里面选择一个数ak,删除,然后你的得分+ak,

代价是序列里面值为ak+1,ak-1的元素都删除

问:你能得到的最大得分是多少

思路:

你若删除了一个值为a的数,你的得分就是a*序列里面a的个数

因为a+1和a-1都被删除了,则其余的a不会被a+1,a-1这种情况删除了,你一定可以得到所有a的分数

所以这道题就是:在序列里面选择一些数值,你的得分+数值*该值出现的个数,并且,

数值+1和数值-1的数你就不能选了。

num[i]表示值i出现的次数。

_max表示出现的最大的值

dp[i][0]:表示从值1选择到i,如果不选择值i,可以得到的最大分数

dp[i][1]:表示从值1选择到值i,如果选择了值i,可以得到的最大分数。

注意:

1.这道题最后的结果要long long

2.小心中间过程溢出,我就是这个贡献了2个wa

3.CF的long long 要用cout输出

 #include<cstdio>
#include<cstring>
#include<iostream> using namespace std;
#define LL long long
const int maxn=1e5+; inline LL max(LL x,LL y)
{
return x>y?x:y;
} int a[maxn];
LL dp[maxn][]; int main()
{
int n;
scanf("%d",&n);
int _max=-;
memset(a,,sizeof a);
for(int i=;i<=n;i++)
{
int u;
scanf("%d",&u);
a[u]++;
if(u>_max)
_max=u;
} memset(dp,,sizeof dp);
for(int i=;i<=_max;i++)
{
dp[i][]=dp[i-][]+(LL)a[i]*i;
dp[i][]=max(dp[i-][],dp[i-][]);
} cout<<max(dp[_max][],dp[_max][])<<endl; return ;
}

CF 445A 简单DP的更多相关文章

  1. HDU 1087 简单dp,求递增子序列使和最大

    Super Jumping! Jumping! Jumping! Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 ...

  2. Codeforces Round #260 (Div. 1) A. Boredom (简单dp)

    题目链接:http://codeforces.com/problemset/problem/455/A 给你n个数,要是其中取一个大小为x的数,那x+1和x-1都不能取了,问你最后取完最大的和是多少. ...

  3. codeforces Gym 100500H A. Potion of Immortality 简单DP

    Problem H. ICPC QuestTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100500/a ...

  4. 简单dp --- HDU1248寒冰王座

    题目链接 这道题也是简单dp里面的一种经典类型,递推式就是dp[i] = min(dp[i-150], dp[i-200], dp[i-350]) 代码如下: #include<iostream ...

  5. poj2385 简单DP

    J - 简单dp Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:65536KB     64bit ...

  6. hdu1087 简单DP

    I - 简单dp 例题扩展 Crawling in process... Crawling failed Time Limit:1000MS     Memory Limit:32768KB     ...

  7. poj 1157 LITTLE SHOP_简单dp

    题意:给你n种花,m个盆,花盆是有顺序的,每种花只能插一个花盘i,下一种花的只能插i<j的花盘,现在给出价值,求最大价值 简单dp #include <iostream> #incl ...

  8. hdu 2471 简单DP

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2571 简单dp, dp[n][m] +=(  dp[n-1][m],dp[n][m-1],d[i][k ...

  9. Codeforces 41D Pawn 简单dp

    题目链接:点击打开链接 给定n*m 的矩阵 常数k 以下一个n*m的矩阵,每一个位置由 0-9的一个整数表示 问: 从最后一行開始向上走到第一行使得路径上的和 % (k+1) == 0 每一个格子仅仅 ...

随机推荐

  1. memory dump and CLR Inside Out

    MSDN Magazine: CLR Inside Out https://msdn.microsoft.com/en-us/magazine/cc501040.aspx CLR Inside Out ...

  2. Memory Barriers ,cache-coherency

    http://www.rdrop.com/users/paulmck/scalability/paper/whymb.2010.07.23a.pdf Shared-Memory Synchroniza ...

  3. EJB 的理解

    引用源:http://blog.csdn.NET/cymm_liu/article/details/7760989 1.EJB 概念的剖析 我们先看一下,EJB 的官方解释: 商务软件的核心部分是它的 ...

  4. 元组的cmp()内建函数

    >>> list1,list2=[,,'abc'] >>> cmp(list1,list2) - >>> cmp(list2,list1) > ...

  5. ORA-12170: TNS: 连接超时

    ORA-12170: TNS: 连接超时 如果在本机可以正常使用,可是到局域网中的其他机器就出现“ORA-12170:TNS:连接超时 解决方法: 1.cmd-----ping ip地址 查看网络问题 ...

  6. 020. asp.net访问Excel文件

    <asp:GridView ID="GridView1" runat="server" BackColor="#DEBA84" Bor ...

  7. 001. 使用ssh连接不上centos 6.5的解决方法及其解决中文乱码

    1. 使用ssh连接不上centos 6.5的解决方法: 错误显示: Connecting to 192.168.1.106:22... Could not connect to '192.168.1 ...

  8. 如何在Windows 下安装Python

    1.  安装源程序的选择 官网:https://www.python.org/downloads/ 选择版本下载,根据实际计算机位数(64位),下载的为: Python-2.7.10.amd64.ms ...

  9. IT运维管理市场

    背景 http://www.cnitom.com/portal.php 中国it运维网 http://www.365master.com it运维网 http://www.51ou.com/ 51运维 ...

  10. Linux- Bond

    ---------------check NIC----------------- ①mii-tool 命令 ②ethtool 命令 -i 参数,显示网卡的驱动信息, -S 参数,底层工作状态信息③d ...