HDU 1244 DP
题目大意:
我们需要将一串数字分成多个确定个数的连续段,在得到所有段的和的最大值
定义一个dp[i][j]数组表示在前j个数中取满 i 个段所能得到的最大值
那么也就是说明在这道题目当中每一段都是必须要被取到的
能够取到的前提是 j >= cnt[i] //表示前 i 段的数字个数总和
sum[i] 表示前 i 个数字之和
我们可以分成两种情况,一种是第i段取到以j号数字结尾
得到dp[i-1][j-l[i]] + sum[j] - sum[j-l[i]]
第二种是不以j号数字结尾
得到dp[i][j-1]
我们每次在其中取最大值就好了
#include <cstdio> #include <cstring> #include <iostream> using namespace std; const int INF = 200000000; const int M = 22; const int N = 1005;int dp[M][N] , l[M] , a[N] , cnt[M] , sum[N];int main() {int m , n;while(scanf("%d" , &n) , n){scanf("%d" , &m);for(int i = 1 ; i<=m ; i++){scanf("%d" , l+i);cnt[i] = cnt[i-1] + l[i];}for(int i = 1 ; i<= n ; i++){scanf("%d" , a+i);sum[i] = sum[i-1] + a[i];}memset(dp , 0 , sizeof(dp));/*第一次用这个交为了防止结果允许为负数的情况,可以AC但是只是简单的dp初始为0,也没问题,个人感觉题目不是出的很严格for(int i = 1 ; i<= m ; i++)for(int j = cnt[i] ; j<=n ; j++)dp[i][j] = -INF;*/for(int i = 1 ; i<= m ; i++)for(int j = cnt[i] ; j<=n ; j++){dp[i][j] = max(dp[i-1][j-l[i]] + sum[j] - sum[j-l[i]] , dp[i][j-1]);}printf("%d\n" , dp[m][n]);}return 0; }
转载于:https://www.cnblogs.com/CSU3901130321/p/4184591.html
HDU 1244 DP相关推荐
- HDU 5928 DP 凸包graham
给出点集,和不大于L长的绳子,问能包裹住的最多点数. 考虑每个点都作为左下角的起点跑一遍极角序求凸包,求的过程中用DP记录当前以j为当前末端为结束的的最小长度,其中一维作为背包的是凸包内侧点的数量.也 ...
- hdu 1171 dp(多重背包)
View Code //hdu 1171 dp(多重背包)//题意:把所有物品的价值尽量分为相等的两份,不能等分的话 //后面那份可以稍小于前面的 //求出价值总和后,令价值的一半为背包容量,让背包尽 ...
- 整数行hdu 1244 Max Sum Plus Plus Plus(dp)
废话就不多说了,开始... Max Sum Plus Plus Plus Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/3 ...
- HDU 4832(DP+计数问题)
HDU 4832 Chess 思路:把行列的情况分别dp求出来,然后枚举行用几行.竖用几行,然后相乘累加起来就是答案 代码: #include <stdio.h> #include < ...
- hdu 5086(dp)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5086 题目大意:给出长度为n的数组,然后要求累计里面的每个子串的和. 解题思路:这道题直接枚举肯定不行 ...
- hdu 2059(dp)
龟兔赛跑 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Des ...
- HDU 3646 DP + 二分
链接:http://acm.hdu.edu.cn/showproblem.php?pid=3646 题意:你有N把武器,每把武器可以对敌人造成一定的伤害(et:攻击力500,敌人血量为200,杀死敌人 ...
- Hdu 4293 DP
题意: n个人说自己前面有多少人 后面有多少人 求出说真话人数最多的情况 每个样例有 一个 n 表示n个人 接下来 n 行有a b 表示他前面的人数和后面的人数 思路: 如果已经知道了其中一组的人数~ ...
- HDU 1244 Max Sum Plus Plus Plus
虽然这道题看起来和 HDU 1024 Max Sum Plus Plus 看起来很像,可是感觉这道题比1024要简单一些 前面WA了几次,因为我开始把dp[22][maxn]写成dp[maxn][2 ...
最新文章
- R语言广义线性模型Logistic回归模型列线图分析(nomogram)
- 【POJ2409】Let it Bead Pólya定理
- python画轨迹曲线-python 画3维轨迹图并进行比较的实例
- 【oracle】oracle经典sql,exception,database link纠错
- ubuntu 14.04下练习lua
- Selenium(Python)页面对象+数据驱动测试框架
- 计算机组成原理尾数的求法,计算机组成原理第八讲(运算办法).ppt
- Pr 视频效果:模糊与锐化
- Haar特征描述算子与人脸检测
- 2021年合肥工业大学《高等代数》试题和答案(蔡宇编辑)
- 服务器查看GPU及各个参数
- 愚人节恶搞html,愚人节来玩变装!爆笑在线恶搞照片网站
- 苹果维修服务器gsx查询,手机苹果官网怎么查序列号(苹果gsx免费查询公众号)...
- Appium 自动化测试(5)-- Appium详细介绍:Appium 手机自动化测试_TesterHome公开版pdf
- 语音转文字怎么转?三个方法让你学会怎么语音转文字
- AC自动机+状压dp hdu2825 Wireless Password
- 鸿蒙系统基于Linux打造,其本质还是安卓系统?
- jQuery源码解析(架构与依赖模块)
- arcgis风向_arcgis趋势分析
- Android视频编辑器(三)给本地视频加水印和美颜滤镜
热门文章
- mysql不支持子查询_MySQL不支持子查询优化一例
- python做自动化控制postman_python自动化测试入门篇-postman
- php mysql crud demo_基于php和mysql的简单的dao类实现crud操作功能_PHP教程
- java顺序栈和链栈_Java的顺序栈和链式栈
- [渝粤教育] 西南科技大学 中国现代文学 在线考试复习资料
- 【渝粤题库】陕西师范大学500006 算法语言 作业
- 布局 线宽 间距 走线 泪滴 过孔 【快速提升PCB板Layout质量的6个细节】
- 工业控制中无线局域网应用前景分析
- setitimer 创建两个定时器_UE4 Timer(定时器)相关源码分析
- python有多少库存_库存究竟多少才算合理?