[UESTC876]爱管闲事
来源:互联网 发布:java中的迭代器是什么 编辑:程序博客网 时间:2024/05/18 00:09
Time Limit: 3000/1000MS (Java/Others)
Memory Limit: 65535/65535KB (Java/Others)
春希非常爱管闲事,他每天都会抽空帮助一些同学,由于春希非常死板,出于公平性,春希不会先帮助后来找他的同学。
现在有n个同学需要他的帮助,虽然他很想一天之类帮助所有人,但毕竟精力有限,于是他决定分m天来帮助他们。
根据事情的重要性,春希帮助不同同学会有不同的快乐值,而春希获得的总的快乐值为每天获得的快乐值的乘积。
现在给出n和m,以及帮助完各同学时获得的快乐值,求春希能获得的最大快乐值。
Input
第一行为一个整数T,代表数据组数。
每组数据,第一行两个整数n,m。表示需要帮助的同学的数量,和天数。
第二行为n个整数,表示帮助这个同学的获得的快乐值,每个快乐值不大于5。
Output
每组数据输出一行,一个整数,表示最大的快乐值。
Sample Input
15 33 2 1 4 5
Sample Output
125
题解:区间DP
则我们可以推出方程
#include<bits/stdc++.h>#define LiangJiaJun mainusing namespace std;int f[24][24],a[24],m,n,T;int sum(int l,int r){ int ge=0; for(int i=l;i<=r;i++)ge += a[i]; return ge;}int w33ha(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++)scanf("%d",&a[i]); for(int i=0;i<=22;i++) for(int j=0;j<=22;j++){ if(j<=i)f[i][j]=1; else f[i][j]=0; } for(int i=1;i<=n;i++){ int x=1; for(int j=1;j<=i;j++)x*=a[j]; f[i][i]=x; } for(int i=1;i<=n;i++){ for(int j=1;j<=i;j++){ for(int k=j-1;k<i;k++){ f[i][j]=max(f[i][j],f[k][j-1]*sum(k+1,i)); } } } printf("%d\n",f[n][m]); return 0;}int LiangJiaJun(){ scanf("%d",&T); while(T--)w33ha(); return 0;}
阅读全文
0 0
- [UESTC876]爱管闲事
- uestc876爱管闲事【区间dp】
- 爱管闲事的小明
- 爱管闲事的小明
- 爱管闲事的晶晶
- 爱管闲事的小明
- 爱管闲事的八婆 nosey parker
- nyoj-51-爱管闲事的小明
- 51.爱管闲事的小明
- 安心工作,少管闲事
- 管闲事的小明
- 管闲事的小明
- 管闲事的小明
- 管闲事的小明
- 管闲事的小明
- 管闲事的小明
- 管闲事的小明
- 管闲事的小明
- hexo
- Codeforces Problem 691D
- python学习---第四天
- 这是在csdn的第一天
- Presto内存管理源码分析
- [UESTC876]爱管闲事
- 第12章 电子商务网站用户行为分析及服务推荐
- Android自动打包-通过Jenkins
- 5.7 对象上的转型对象(略)
- bzoj3564 信号增幅仪【最小圆覆盖+坐标变换】
- 35.开源项目--git发起一个公开项目
- 5.8 继承与多态
- java反射学习笔记(3)---使用Class来获取方法、成员变量、构造函数信息
- 安卓 SurfaceView 和 View 的区别和使用方法