在一年前赢得了小镇的最佳草坪比赛后,FJ变得很懒,再也没有修剪过草坪。现在,
新一轮的最佳草坪比赛又开始了,FJ希望能够再次夺冠。

然而,FJ的草坪非常脏乱,因此,FJ只能够让他的奶牛来完成这项工作。FJ有N
(1 <= N <= 100,000)只排成一排的奶牛,编号为1...N。每只奶牛的效率是不同的,
奶牛i的效率为E_i(0 <= E_i <= 1,000,000,000)。

靠近的奶牛们很熟悉,因此,如果FJ安排超过K只连续的奶牛,那么,这些奶牛就会罢工
去开派对:)。因此,现在FJ需要你的帮助,计算FJ可以得到的最大效率,并且该方案中
没有连续的超过K只奶牛。

Input

* 第一行:空格隔开的两个整数N和K

* 第二到N+1行:第i+1行有一个整数E_i

Output

* 第一行:一个值,表示FJ可以得到的最大的效率值。

Sample Input5 2
1
2
3
4
5

输入解释:

FJ有5只奶牛,他们的效率为1,2,3,4,5。他们希望选取效率总和最大的奶牛,但是
他不能选取超过2只连续的奶牛

Sample Output
12

FJ可以选择出了第三只以外的其他奶牛,总的效率为1+2+4+5=12。

思路:单调队列优化dp板子题,子问题可以归结为:dp[i][0/1],表示选/不选第i只牛,到第i只为止最大的效率,维护一个前缀和sum

dp[i][0] = max(dp[i-1][0], dp[i-1][1]), dp[i][1] = max(dp[j][0]-sum[j]+sum[i]) (i-k < j < i)

注意在单调队列中事先存在一个元素0,表示左边界

typedef long long LL;

const int maxm = 1e5+; 

LL sum[maxm], dp[maxm][], q[maxm];

int main() {
ios::sync_with_stdio(false), cin.tie();
LL n, k, val;
cin >> n >> k;
for(LL i = ; i <= n; ++i) {
cin >> val;
sum[i] = sum[i-] + val;
}
int l = , r = ;
for(LL i = ; i <= n; ++i) {
dp[i][] = max(dp[i-][], dp[i-][]);
while(l <= r && i-k > q[l]) l++;
dp[i][] = dp[q[l]][] - sum[q[l]] + sum[i];
while(l <= r && dp[q[r]][]-sum[q[r]] < dp[i][]-sum[i]) r--;
q[++r] = i;
}
cout << max(dp[n][], dp[n][]) << "\n";
return ;
}

修剪草坪 HYSBZ - 2442的更多相关文章

  1. BZOJ 2442: [Usaco2011 Open]修剪草坪( dp )

    dp dp[ i ] 表示第 i 个不选 , 前 i 个的选择合法的最小损失 , dp[ i ] = min( dp[ j ] ) ( max( 0 , i - 1 - k ) <= j < ...

  2. BZOJ2442: [Usaco2011 Open]修剪草坪

    2442: [Usaco2011 Open]修剪草坪 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 500  Solved: 244[Submit][ ...

  3. bzoj2442[Usaco2011 Open]修剪草坪 单调队列优化dp

    2442: [Usaco2011 Open]修剪草坪 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1159  Solved: 593[Submit] ...

  4. [BZOJ2442][Usaco2011 Open]修剪草坪 dp+单调队列优化

    2442: [Usaco2011 Open]修剪草坪 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1118  Solved: 569[Submit] ...

  5. usaco 购买饲料 && 修剪草坪

    购买饲料 Description 如约翰在镇上,沿着公路开车回家,他的家离起点有E公里.他顺便准备买K吨饲料回家.运送饲料是要花油钱的,如果他的车上有X吨饲料,行驶一公里需要X^2元,行驶D公里就 需 ...

  6. BZOJ_2343_[Usaco2011 Open]修剪草坪 _单调队列_DP

    BZOJ_2343_[Usaco2011 Open]修剪草坪 _单调队列_DP 题意: N头牛,每头牛有一个权值,选择一些牛,要求连续的不能超过k个,求选择牛的权值和最大值 分析: 先考虑暴力DP,f ...

  7. P2627 修剪草坪

    P2627 修剪草坪 题目描述 在一年前赢得了小镇的最佳草坪比赛后,Farm John变得很懒,再也没有修剪过草坪.现在,新一轮的最佳草坪比赛又开始了,Farm John希望能够再次夺冠. 然而,Fa ...

  8. 洛谷 P2627 修剪草坪 题解

    P2627 修剪草坪 题目描述 在一年前赢得了小镇的最佳草坪比赛后,Farm John变得很懒,再也没有修剪过草坪.现在,新一轮的最佳草坪比赛又开始了,Farm John希望能够再次夺冠. 然而,Fa ...

  9. BZOJ 2442: [Usaco2011 Open]修剪草坪

    Description 在一年前赢得了小镇的最佳草坪比赛后,FJ变得很懒,再也没有修剪过草坪.现在,新一轮的最佳草坪比赛又开始了,FJ希望能够再次夺冠.然而,FJ的草坪非常脏乱,因此,FJ只能够让他的 ...

随机推荐

  1. Vue 项目中使用less

    首先 你得有 完整的 Vue开发环境第一步 安装less 依赖 npm install less less-loader --save 第二步 修改webpack.config.js文件,配置load ...

  2. vPC配置

    1.vPC概述 如下图所示,在传统网络中,出于冗余考虑,汇聚层往往由2台设备构成,一台接入层交换机使用2根上联链路,分别连接汇聚层2台设备. 这种拓扑所带来的问题是:受制于STP,对于同一个VLAN的 ...

  3. MSE-初始化MSE

    MSE(Mobility Services Engine) Cisco MSE可以配合无线实现很多功能,MSE的功能简单概括有: 1.基本位置服务捕获并聚合关键网络信息,例如设备位置,RF频谱详细信息 ...

  4. java代码开启关闭线程(nginx)

    源码: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; pub ...

  5. spark-env.sh增加HADOOP_CONF_DIR使得spark运行文件是hdfs文件

    spark-env.sh增加HADOOP_CONF_DIR使得spark读写的是hdfs文件 刚装了spark,运行wordcount程序,local方式,执行的spark-submit,读和写的文件 ...

  6. 关于calendar修改前的代码和修改后的代码

    Java编写的日历,输入年月,输出这个月的日期与星期 修改前的代码: import java.io.BufferedReader; import java.io.IOException; import ...

  7. Android的界面组件使用之ImageButton和ImageView,ImageSwitcher和GridView

    (一)ImageButton和ImageView ImageButton与Button的功能完全相同,只是ImageButton上显示的是图像,并且每个ImageButton组件都必须指定一个id,以 ...

  8. idea选择主题

    主题下载地址1:http://color-themes.com/?view=index 主题下载地址2:http://www.themesmap.com/ 主题下载地址3:http://www.ria ...

  9. 设计模式课程 设计模式精讲 6-2 抽象工厂coding

    1 代码讲解 1.1 抽象工厂优点 1.2 抽象工厂缺点 1.3 为何有产品族的业务场景宜用抽象工厂设计模式?而不是工厂设计模式? 2 代码演练 2.1 抽象工厂代码演练 1 代码讲解 1.1 抽象工 ...

  10. Aery的UE4 C++游戏开发之旅(4)加载资源&创建对象

    目录 资源的硬引用 硬指针 FObjectFinder<T> / FClassFinder<T> 资源的软引用 FSoftObjectPaths.FStringAssetRef ...