爱管闲事

春希非常爱管闲事,他每天都会抽空帮助一些同学,由于春希非常死板,出于公平性,春希不会先帮助后来找他的同学。

现在有n个同学需要他的帮助,虽然他很想一天之类帮助所有人,但毕竟精力有限,于是他决定分m天来帮助他们。

根据事情的重要性,春希帮助不同同学会有不同的快乐值,而春希获得的总的快乐值为每天获得的快乐值的乘积。

现在给出n和m,以及帮助完各同学时获得的快乐值,求春希能获得的最大快乐值。

Input

第一行为一个整数T,代表数据组数。

每组数据,第一行两个整数n,m。表示需要帮助的同学的数量,和天数。(1≤m≤min(n,10),1≤n≤20)

第二行为n个整数,表示帮助这个同学的获得的快乐值,每个快乐值不大于5。

Output

每组数据输出一行,一个整数,表示最大的快乐值。

Sample input and output

Sample Input Sample Output
1
5 3
3 2 1 4 5
125

Source

2014 UESTC Training for Dynamic Programming
 
题解:设定dp[i][j] 前i个 划分为j份 的答案
   dp[i][j] = max{dp[k][j-1] * (sum[i] - sum[k])}
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std ;
typedef long long ll; const int N=;
int a[N],dp[N][N],sum[N],m,n;
int main() {
int T;
scanf("%d",&T);
while(T--) {
memset(dp,,sizeof(dp));
memset(sum,,sizeof(sum));
scanf("%d%d",&n,&m);
for(int i = ; i <= n; i++) {
scanf("%d",&a[i]);
sum[i] = sum[i-] + a[i];
}
for(int i = ; i <= n; i++) dp[i][] = a[i] + dp[i-][];
for(int j = ; j <= m; j++) {
for(int i = j; i <= n; i++) {
for(int k = j-; k < i ; k++) dp[i][j] = max(dp[i][j],dp[k][j-] * (sum[i] - sum[k]));
}
}
printf("%d\n",dp[n][m]);
}
return ;
}

代码

CDOJ 876 爱管闲事 DP的更多相关文章

  1. UESTC 876 爱管闲事 --DP

    题意:即求给定n个数字(a1,a2,……an),不改变序列,分成M份,使每一份和的乘积最大. 思路:dp[i][j]表示把前i个数字,分成j份所能得到的最大乘积. 转移方程:dp[i][j] = ma ...

  2. English trip V1 - B 23. Nosy People 爱管闲事的人 Teacher:Parice Key: Be + Ving

    In this lesson you will learn to talk about what happened.  谈论发生什么? 课上内容(Lesson) Nosy  好管闲事Noise  噪声 ...

  3. CDOJ 879 摩天轮 dp+斜率优化

    原题链接:http://www.acm.uestc.edu.cn/#/problem/show/879 题意: 中文题 题解: 这是一道斜率dp的题. 先把$a$数组排个序. 令$dp[i][j]$表 ...

  4. English trip M1 - AC9 Nosey people 爱管闲事的人 Teacher:Solo

    In this lesson you will learn to talk about what happened. 在本课中,您将学习如何谈论发生的事情. 课上内容(Lesson) # four “ ...

  5. [ACM] n划分数m部分,它要求每一个部分,并采取了最大的产品(间隔DP)

    A - 爱管闲事 春希很爱管闲事,他每天都会抽出时间帮助一些同学,因为春希很死板,出于公平性,春希不会先帮助后来找他的同学. 如今有n个同学须要他的帮助,尽管他非常想一天之类帮助全部人,但毕竟精力有限 ...

  6. NOIP 2015 游记

    本来和zly和wxh约好了 高三一起再来玩一次复赛,结果最终只有我一个人来了说...貌似是年段主任不让去...总算见识了比我们学校的YSD更爱管闲事的年段主任. 今年比赛竟然在衢州二中,学校不大,但感 ...

  7. UESTC_摩天轮 2015 UESTC Training for Dynamic Programming<Problem K>

    K - 摩天轮 Time Limit: 10000/4000MS (Java/Others)     Memory Limit: 262143/262143KB (Java/Others) Submi ...

  8. 2014 UESTC暑前集训动态规划专题解题报告

    A.爱管闲事 http://www.cnblogs.com/whatbeg/p/3762733.html B.轻音乐同好会 C.温泉旅馆 http://www.cnblogs.com/whatbeg/ ...

  9. 会场安排问题—NYOJ14

    时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办.小刘的工作就是安排学校 ...

随机推荐

  1. 基于nginx的TCP Proxy实现数据库读写分离

    nginx非常早就支持tcp proxy.可是一直不知道其使用,近期在nginx blog上看见了.一些实践者将其运用到数据库訪问的负载均衡以及实现读写分离,来提高数据库的吞吐量,这里我不会讲详细的搭 ...

  2. code::blocks配置编译cuda并进行第一个demo的測试

    我们先新建个NVCC的编译器. 使用复制GCC编译器的方式进行新建,然后我们进行下面的路径配置 先来看看链接库,将我们常常使用的cuda库链接进来. 然后链接cuda的头文件: 接着配置调试工具以及编 ...

  3. 2016.03.04,英语,《Vocabulary Builder》Unit 04

    vor: 来自拉丁动词vorare,指to eat,-ivorous指吃某种食物的eater.carn肉,肉欲+vore吃→吃肉的:carnival狂欢节,谢肉节voracious a 狼吞虎咽的(v ...

  4. netty结构

    一.先纵览一下Netty,看看Netty都有哪些组件? 为了更好的理解和进一步深入Netty,我们先总体认识一下Netty用到的组件及它们在整个Netty架构中是怎么协调工作的.Netty应用中必不可 ...

  5. 利用JDBC或者事物或者调用存储过程实现往MySQL插入百万级数据

    转自:http://www.cnblogs.com/fnz0/p/5713102.html 想往某个表中插入几百万条数据做下测试, 原先的想法,直接写个循环10W次随便插入点数据试试吧,好吧,我真的很 ...

  6. svn插件失效

    安装其他插件后,可能出现SVN插件失效了,在eclipse中完全找不到SVN的任何操作选项,此时可尝试通过以下办法解决: 把eclipse/configuration目录下的org.eclipse.u ...

  7. 8. String to Integer[M]字符串转整数

    题目 Inplement atoi which converts a string to an integer. The function first discards as many whitesp ...

  8. ROS-SLAM-gmapping

    前言:gmapping是最常用和成熟的slam导航算法,gmapping功能包集成了Rao-Blackwellized粒子滤波算法,为开发者隐去了复杂的内部实现. 前提:已下载并编译了相关功能包集,如 ...

  9. Spark standalone运行模式(图文详解)

    不多说,直接上干货! 请移步 Spark standalone简介与运行wordcount(master.slave1和slave2) Spark standalone模式的安装(spark-1.6. ...

  10. Core篇——初探依赖注入

    目录 1.DI&&IOC简单介绍 2.UML类图中六种关联关系 3..net core 中DI的使用 4..net core DI初始化源码初窥 DI&&IOC简单介绍 ...