luogu2627 修剪草坪
dp[i]表示1~i最大效率
记一下前缀和
转移就是f[i]=max(f[i],f[j-1]-sum[j])+sum[i] (i-k<=j<=i)
发现括号里的只与j有关 开一个单调队列维护一下
#include<cstdio>
#include<iostream>
#define ll long long
using namespace std;
//#pragma GCC optimize ("O3")
int n,k;
ll e[];
ll dp[];
ll sum[];
ll q[],head,tail;
ll num[];
long long calc(int a)
{
num[a]=dp[a-]-sum[a];
while(head<=tail && num[q[tail]]<num[a])tail--;
q[++tail]=a;
while(head<=tail && q[head]<a-k)head++;
return num[q[head]];
}
//f[i]=max(f[i],f[j-1]-sum[j])+sum[i] (j 1~e)
int main()
{
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++){scanf("%lld",&e[i]);sum[i]=sum[i-]+e[i];}
for(int i=;i<=n;i++)dp[i]=calc(i)+sum[i];
cout<<dp[n];
}
luogu2627 修剪草坪的更多相关文章
- usaco 购买饲料 && 修剪草坪
购买饲料 Description 如约翰在镇上,沿着公路开车回家,他的家离起点有E公里.他顺便准备买K吨饲料回家.运送饲料是要花油钱的,如果他的车上有X吨饲料,行驶一公里需要X^2元,行驶D公里就 需 ...
- BZOJ2442: [Usaco2011 Open]修剪草坪
2442: [Usaco2011 Open]修剪草坪 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 500 Solved: 244[Submit][ ...
- BZOJ 2442: [Usaco2011 Open]修剪草坪( dp )
dp dp[ i ] 表示第 i 个不选 , 前 i 个的选择合法的最小损失 , dp[ i ] = min( dp[ j ] ) ( max( 0 , i - 1 - k ) <= j < ...
- bzoj2442[Usaco2011 Open]修剪草坪 单调队列优化dp
2442: [Usaco2011 Open]修剪草坪 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1159 Solved: 593[Submit] ...
- BZOJ_2343_[Usaco2011 Open]修剪草坪 _单调队列_DP
BZOJ_2343_[Usaco2011 Open]修剪草坪 _单调队列_DP 题意: N头牛,每头牛有一个权值,选择一些牛,要求连续的不能超过k个,求选择牛的权值和最大值 分析: 先考虑暴力DP,f ...
- P2627 修剪草坪
P2627 修剪草坪 题目描述 在一年前赢得了小镇的最佳草坪比赛后,Farm John变得很懒,再也没有修剪过草坪.现在,新一轮的最佳草坪比赛又开始了,Farm John希望能够再次夺冠. 然而,Fa ...
- [BZOJ2442][Usaco2011 Open]修剪草坪 dp+单调队列优化
2442: [Usaco2011 Open]修剪草坪 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1118 Solved: 569[Submit] ...
- 洛谷 P2627 修剪草坪 题解
P2627 修剪草坪 题目描述 在一年前赢得了小镇的最佳草坪比赛后,Farm John变得很懒,再也没有修剪过草坪.现在,新一轮的最佳草坪比赛又开始了,Farm John希望能够再次夺冠. 然而,Fa ...
- 【BZOJ2442】 [Usaco2011 Open]修剪草坪 斜率优化DP
第一次斜率优化. 大致有两种思路: 1.f[i]表示第i个不选的最优情况(最小损失和)f[i]=f[j]+e[i] 显然n^2会T,但是可以发现f的移动情况可以用之前单调队列优化,就优化成O(n)的了 ...
随机推荐
- github 答题
头脑王者 / 百万英雄 / 冲顶大会 / 芝士超人 自动答题:https://github.com/cxs1994/python_answer 头脑王者:https://github.com/sear ...
- python 之前函数补充(__del__, item系列, __hash__, __eq__) , 以及模块初体验
__str__ : str(obj) , 需求必须实现了 __str__, 要求这个方法的返回值必须是字符串 str 类型 __repr__ (意为原型输出): 是 __str__ 的备胎( ...
- ULN2003A 使用,有坑
8脚接24V负极 9脚接24V正极 16接24V继电器,再接到24V正极 1-7无论给5V 正 或 负,10-16都不能达到24V,越靠近输入端的输出端电压越大,最大的才11V,最小的2.5V 最后发 ...
- hdu_1226超级密码(BFS)
超级密码 Problem Description Ignatius花了一个星期的时间终于找到了传说中的宝藏,宝藏被放在一个房间里,房间的门用密码锁起来了,在门旁边的墙上有一些关于密码的提示信息:密码是 ...
- polynomial time
https://en.wikipedia.org/wiki/Time_complexity#Polynomial_time An algorithm is said to be of polynomi ...
- python中TCP和UDP区别
TCP(Transmission Control Protocol)可靠的.面向连接的协议(eg:打电话).传输效率低全双工通信(发送缓存&接收缓存).面向字节流.使用TCP的应用:Web浏览 ...
- proguard 不混淆第三方jar包的问题
导入lib文件,并且用-dontwarn 和 keep class结合试试,例如: -libraryjars libs/log4j.jar -dontwarn org.apache.log4j.*-k ...
- DNS 原理入门 (转)
DNS 是互联网核心协议之一.不管是上网浏览,还是编程开发,都需要了解一点它的知识. 本文详细介绍DNS的原理,以及如何运用工具软件观察它的运作.我的目标是,读完此文后,你就能完全理解DNS. 一.D ...
- Please enable network time synchronisation in system settings
eth区块同步出现这样的WARN: WARN [06-17|13:02:42] System clock seems off by -51.509894715s, which can prevent ...
- 第四章 python中的面向对象设计
一.首先来理解几个面向对象的关键特性: 1.封装:对象可以将他们的内部状态隐藏起来.python中所有特性都是公开可用的. 2.继承:一个类可以是一个或多个类的子类.python支持多重继承,使用时需 ...