#1601 : 最大得分

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

小Hi和小Ho在玩一个游戏。给定一个数组A=[A1, A2, ... AN],小Hi可以指定M个不同的值S1,S2, S3 ... SM,这样他的总得分是 ΣSi × count(Si)。(count(Si)是数组中与Si相等的元素的个数)。

为了增加难度,小Ho要求小Hi选择的S1..SM其中任意两个Si和Sj都满足|Si-Sj| > 1。

你能帮助小Hi算出他最大得分是多少吗?

输入

第一行包含两个整数N和M。

第二行包含N个整数A1, A2, ... AN。

对于30%的数据,1 ≤ M ≤ N ≤ 10

对于100%的数据,1 ≤ M ≤ N ≤ 1000 1 ≤ Ai ≤ 100000

输出

最大得分

样例输入
5 2
1 2 1 2 3
样例输出
        5
 
dp[i][j]表示前i个用了j个的最大值
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<memory>
#include<cstring>
using namespace std;
const int maxn=;
long long a[maxn],b[maxn],c[maxn];
long long dp[maxn][maxn],Max;
int main()
{
long long n,i,j,k,m,cnt=;
scanf("%lld%lld",&n,&m);
for(i=;i<=n;i++) scanf("%lld",&a[i]);
sort(a+,a+n+);
for(i=;i<=n;i++){
if(a[i]!=a[i-]) {
b[++cnt]=a[i];
c[cnt]=;
}
else c[cnt]++;
}
memset(dp,-,sizeof(dp));
for(i=;i<=cnt;i++) dp[i][]=;
dp[][]=b[]*c[];
Max=dp[][];
for(i=;i<=cnt;i++)
for(j=;j<=m;j++){
dp[i][j]=dp[i-][j];//不用第i个
if(b[i]-b[i-]>) dp[i][j]=max(dp[i][j],dp[i-][j-]+b[i]*c[i]);//要第i个,前一个也要
else dp[i][j]=max(dp[i][j],dp[i-][j-]+b[i]*c[i]);//要第i个,而前一个不要
Max=max(Max,dp[i][j]);
}
printf("%lld\n",Max);
return ;
}


hiho1601最大分数 DP的更多相关文章

  1. poj1080 dp

    //Accepted 200 KB 0 ms //dp //dp[i][j]表示s1用前i个,s2用前j个字符能得到的最大分数 //dp[i][j]=max(dp[i-1][j]+score[s1[i ...

  2. CF 445A 简单DP

    今天早上找一道题的bug,还是找不出来,下午刷了几道水题,晚上准备回家的事, 然后本来想打CF的,一看,数学场,不打了. 这道题的题意: 给出一个序列,每次你可以从这个序列里面选择一个数ak,删除,然 ...

  3. Codeforces Round #260 (Div. 1) A - Boredom DP

    A. Boredom Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/455/problem/A ...

  4. HDU 1074 Doing Homework (dp+状态压缩)

    题目链接 Problem Description Ignatius has just come back school from the 30th ACM/ICPC. Now he has a lot ...

  5. hdu 5074 Hatsune Miku DP题目

    题目传送门http://acm.hdu.edu.cn/showproblem.php?pid=5074 $dp[i][j] =$ 表示数列前$i$个数以$j$结尾的最大分数 $dp[i][j] = - ...

  6. HDU1074 Doing Homework(状压dp)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074 题意:给定有n门课的作业,每门课交作业有截止时间,和完成作业所花费的时间,如果超过规定时间完成,每超 ...

  7. BZOJ 3675: 序列分割 (斜率优化dp)

    Description 小H最近迷上了一个分隔序列的游戏.在这个游戏里,小H需要将一个长度为n的非负整数序列分割成k+1个非空的子序列.为了得到k+1个子序列,小H需要重复k次以下的步骤: 1.小H首 ...

  8. 【codevs1014/1068】背包型动态规划

    分析: 状态转移方程: v[j]=max(v[j],v[j-a[i]]+a[i]) (j ← tol downto a[i]) /* 作者:flipped 题目:p1014 装箱问题 */ #incl ...

  9. [kuangbin带你飞]专题十二 基础DP1

            ID Origin Title   167 / 465 Problem A HDU 1024 Max Sum Plus Plus   234 / 372 Problem B HDU 1 ...

随机推荐

  1. .net 获取浏览器Cookie(包括HttpOnly)

    网上好不容易找到的,分享+收藏 一.接口文件 using System; using System.ComponentModel; using System.Net; using System.Run ...

  2. RabbitMQ 的路由模式 Topic模式

    模型 生产者 package cn.wh; import java.io.IOException; import java.util.concurrent.TimeoutException; impo ...

  3. CA证书,https讲解

    关于具体连接过程,https://blog.csdn.net/wangjun5159/article/details/51510594 这篇博客写的应该比较准确. 我的理解,其中关键的一点是 http ...

  4. ADC和RTC的寄存器的读取

    ADC的寄存器读取,int adc_read(void){ int result; #if ADSTART==0 result = ADC.ADCDAT0&0x3ff; while(!(ADC ...

  5. SSM的Maven项目搭建过程

    POM文件 父项目管理jar包,pom <modelVersion>4.0.0</modelVersion> <groupId>cn.e3mall</grou ...

  6. Attribute 'items' must be an array, a Collection or a Map错误解决!

    唉!真的要说一句话叫做论一串代码的重要性!就是如此的气人!气的牙根痒痒! 前几天刚刚写过SpringMVC之ModelAndView的 jsp值在浏览页面不显示的问题!也是因为这一串代码,但是这一次一 ...

  7. cookie、session、sessionStorage、localStorage

    Cookie cookie是存储在浏览器端,并且随浏览器的请求一起发送到服务器端的,它有一定的过期时间,到了过期时间自动会消失. 首次设置cookie时是由服务器端发送到浏览器端 ,之后每次浏览器发送 ...

  8. js中的数据类型和判断数据类型

    js中的数据类型和判断数据类型 基本数据类型,六大基本数据类型:字符串(String).数字(Number).布尔(Boolean).对象(Object).空(Null).未定义(Undefined) ...

  9. SPOJ 694 && SPOJ 705 (不重复子串个数:后缀数组)

    题意 给定一个字符串,求它的所有不重复子串的个数 思路 一个字符串的子串都必然是它的某个后缀的前缀.对于每一个sa[i]后缀,它的起始位置sa[i],那么它最多能得到该后缀长度个子串(n-sa[i]个 ...

  10. IOS-OC 编码建议

    “神在细节之中” Objective-C 是 C 语言的扩展,增加了动态类型和面对对象的特性.它被设计成具有易读易用的,支持复杂的面向对象设计的编程语言.它是 Mac OS X 以及 iPhone 的 ...