201.09.22 除虫药水(线性dp)
描述
在十年前,除虫是十分艰苦的工作。那时,使用普通药水进行除虫的效果极差,在一片苹果 林中使用后除掉的虫仅为极小一部分。
比如说,Bugs 镇共有 N 片苹果林,对第i 片使用普通药水可以除掉 ai 吨虫。xxx的任务是对这 N 片苹果林中的每一片进行除虫,并且他必 须按照 1 到 N 的顺序依次处理。 xxx另有一种高级药水,其除虫能力为普通药水的 K 倍, 也就是说,在第i 片苹果林中使用高级药水可以除掉 Kai 吨虫。但是,高级药水是极为珍贵 的,xxx 仅有 M 瓶。并且,由于其挥发性极强,每瓶高级药水都必须在至多 L 片连续的 苹果林中使用。现在 xxx 想知道他最多能杀多少吨虫。
输入
第一行四个整数 N, M , K, L 。
第二行 N 个整数,为 ai 。
输出
输出一行一个整数表示答案。
样例输入
5 5 5 5
1 2 3 4 5
样例输出
75
提示
对于 20%的数据, N <=10 。
对于 100%的数据,1<=N, M , L<=1000,1< K< 100,0 <= ai <=1000。
一道挺有意思的dp。
主要是要用当前的状态推未来的(不然最后L个数要凉)。
代码:
#include<bits/stdc++.h>
#define N 1005
using namespace std;
inline short read(){
short ans=0;
char ch=getchar();
while(!isdigit(ch))ch=getchar();
while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
return ans;
}
short n,m,l,k;
int f[N][N],a[N],sum[N];
inline int max(const int&a,const int&b){return a>b?a:b;}
inline short min(const short&a,const short&b){return a<b?a:b;}
int main(){
n=read(),m=read(),k=read(),l=read();
for(register short i=1;i<=n;++i)sum[i]=sum[i-1]+k*(a[i]=read());
for(register short j=0;j<=m;++j)
for(register short i=0;i<n;++i){
f[i+1][j]=max(f[i+1][j],f[i][j]+a[i+1]);
short tmp=min(n,i+l);
f[tmp][j+1]=max(f[tmp][j+1],f[i][j]+sum[tmp]-sum[i]);
}
cout<<f[n][m];
return 0;
}
201.09.22 除虫药水(线性dp)的更多相关文章
- 2018.09.21 codeforces1051D. Bicolorings(线性dp)
传送门 sb线性DP. f[i][j][0/1/2/3]f[i][j][0/1/2/3]f[i][j][0/1/2/3]表示前i列j个连通块且第i列状态为00/01/10/11时的方案总数. 这个显然 ...
- [CodeForces - 1272D] Remove One Element 【线性dp】
[CodeForces - 1272D] Remove One Element [线性dp] 标签:题解 codeforces题解 dp 线性dp 题目描述 Time limit 2000 ms Me ...
- 线性DP总结(studying
写在前面 虽然都说线性DP是入门,但我还是今天才开始学 线性DP就是珂以通过线性处理得出答案的一种DP 每一种状态都可以从前面推得,并且推导过程是呈线性的 参考题单(本人现在主要用luogu,所以这些 ...
- 最长子序列(线性DP)学习笔记
子序列和子串不一样.子串要求必须连续,而子序列不需要连续. 比如说\(\{a_1,a_2\dots a_n\}\),他的子串就是\(\{a_i,a_{i+1},\dots, a_j|1\leq i\l ...
- LightOJ1044 Palindrome Partitioning(区间DP+线性DP)
问题问的是最少可以把一个字符串分成几段,使每段都是回文串. 一开始想直接区间DP,dp[i][j]表示子串[i,j]的答案,不过字符串长度1000,100W个状态,一个状态从多个状态转移来的,转移的时 ...
- Codeforces 176B (线性DP+字符串)
题目链接: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=28214 题目大意:源串有如下变形:每次将串切为两半,位置颠倒形成 ...
- hdu1712 线性dp
//Accepted 400 KB 109 ms //dp线性 //dp[i][j]=max(dp[i-1][k]+a[i][j-k]) //在前i门课上花j天得到的最大分数,等于max(在前i-1门 ...
- 动态规划——线性dp
我们在解决一些线性区间上的最优化问题的时候,往往也能够利用到动态规划的思想,这种问题可以叫做线性dp.在这篇文章中,我们将讨论有关线性dp的一些问题. 在有关线性dp问题中,有着几个比较经典而基础的模 ...
- POJ 2479-Maximum sum(线性dp)
Maximum sum Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 33918 Accepted: 10504 Des ...
随机推荐
- HTML5 Canvas ( 文字横纵对齐 ) textAlign, textBaseLine
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- delphi IDE RAD 丢失的快捷键 Ctrl+Shift+F
丢失的Ctrl+Shift+F delphi IDE RAD 丢失的快捷键 Ctrl+Shift+F Find inFiles 为什么呢?RAD Berlin安装了cnpack1.1.0.829后文件 ...
- WDA-FPM-2-APPLICATION-TABSTRIP(OIF)
转载:https://www.cnblogs.com/sapSB/p/10081344.html FPM二:简单的APPLICATION-TABSTRIP(OIF) 1.新建WDA程序ZLYFPM ...
- Datetime 24小时制
24小时制: DateTime dt = DateTime.Now; string dt24 = dt.ToString("yyyy-MM-dd HH:mm:ss"); 12小时制 ...
- insert NULL into mysql
https://stackoverflow.com/questions/36898130/python-how-to-insert-null-mysql-values You are insertin ...
- jquery parents用法
之前一直用find 现在用parents var w = $("div"); w = $("div").parents('.class'); //在Parent ...
- 大型运输行业实战_day06_1_购票功能简单实现
1.添加购票按钮 对应的html代码 因为列表是js函数动态填充的,故添加按钮应该在js函数中,完整代码如下: /** * 注意在调用该函数时必须输入参数 * 查询+ 分页 * */ function ...
- Express 应用生成器
[Express 应用生成器] 通过应用生成器工具 express 可以快速创建一个应用的骨架. 通过如下命令安装,-g意味着安装在全局目录下: 下面的示例就是在当前工作目录下创建一个命名为 myap ...
- 神经网络出现nan原因?以及解决
之前在TensorFlow中实现不同的神经网络,作为新手,发现经常会出现计算的loss中,出现Nan值的情况,总的来说,TensorFlow中出现Nan值的情况有两种,一种是在loss中计算后得到了N ...
- TOYS(叉积)
TOYS http://poj.org/problem?id=2318 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 193 ...