BZOJ_2343_[Usaco2011 Open]修剪草坪 _单调队列_DP
BZOJ_2343_[Usaco2011 Open]修剪草坪 _单调队列_DP
题意:
N头牛,每头牛有一个权值,选择一些牛,要求连续的不能超过k个,求选择牛的权值和最大值
分析:
先考虑暴力DP,f[i] = f[j] + s[i]-s[j+1] (i-j-1<=k 1<=j<i)
意思是我们j+1不要,要j+2到i这部分
发现可以用单调队列优化一下
维护一个单调递减的单调队列,比较时用f[i]-s[i-1]比较
代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
#define N 100050
#define LL long long
int n,a[N],Q[N],l,r,k;
LL s[N],f[N],ans;
int main(){scanf("%d%d",&n,&k);int i;for(i = 1;i <= n;i++){scanf("%d",&a[i]);s[i] = s[i - 1] + a[i];}r = 1;for(i = 1;i <= k;i++){f[i] = s[i];while(l < r&& f[i] - s[i + 1] >= f[Q[r - 1]] - s[Q[r - 1] + 1]) r--;Q[r++] = i;ans = max(ans,f[i]);}for(i = k + 1;i <= n;i++){while(l < r&& i - Q[l] - 1 > k) l++;f[i] = f[Q[l]] - s[Q[l] + 1] + s[i];while(l < r&& f[i] - s[i + 1] >= f[Q[r - 1]] - s[Q[r - 1] + 1]) r--;Q[r++] = i;ans = max(ans,f[i]);// printf("%lld\n",f[i]);}printf("%lld\n",ans);
}
转载于:https://www.cnblogs.com/suika/p/8542275.html
BZOJ_2343_[Usaco2011 Open]修剪草坪 _单调队列_DP相关推荐
- bzoj 2442: [Usaco2011 Open]修剪草坪(单调队列)
2442: [Usaco2011 Open]修剪草坪 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1175 Solved: 602 [Submi ...
- BZOJ 2442 [Usaco2011 Open]修剪草坪:单调队列优化dp
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2442 题意: 有n个数a[i]从左到右排成一排. 你可以任意选数,但是连续的数不能超过k个 ...
- 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
Description 在一年前赢得了小镇的最佳草坪比赛后,FJ变得很懒,再也没有修剪过草坪.现在, 新一轮的最佳草坪比赛又开始了,FJ希望能够再次夺冠. 然而,FJ的草坪非常脏乱,因此,FJ只能够让 ...
- BZOJ 2442: [Usaco2011 Open]修剪草坪 单调队列
Description 在一年前赢得了小镇的最佳草坪比赛后,FJ变得很懒,再也没有修剪过草坪.现在, 新一轮的最佳草坪比赛又开始了,FJ希望能够再次夺冠. 然而,FJ的草坪非常脏乱,因此,FJ只能够让 ...
- Hdu 2430 Beans (数据结构_单调队列)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2430 题目大意:有n坨豌豆,每坨都有w[i]个,现在要从中选择连续的若干坨,然后用一个能装p个豌豆的背 ...
- Hdu 4193 Non-negative Partial Sums (数据结构_单调队列)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4193 题目大意: 给定一个长度为n的循环序列,从n个不同位置开始,问有几个位置使得一下情况成立:所有 ...
- 提高篇 第五部分 动态规划 第5章 单调队列优化动态规划
单调队列:是一种双端除列,其内部元素具有单调性. 最大队列 最小队列 操作: .插入:新元素插入队尾,删除除尾元素,直到找到插入后不会破坏单调性的为止. .获取最大(最小)值,访问队首元素. 单调队列 ...
- hdu 3401(单调队列优化dp)
注意:这题题意是有操作的天数相隔要大于w 然后列出状态转移方程就可以发现,可以用优点队列优化啦. 构造状态dp[i][j]表示第i 天拥有 j只股票的时候,赚了多少钱 状态转移有: 1.从前一天不买不 ...
最新文章
- 在asp.net中使用 log4net 笔记
- vue2.0 之文本渲染-v-html、v-text
- python不是内部或外部命令的解决方法_详解python常见报错--NO MODULE NAMED _SQLITE3解决方法...
- 进行SEPM的灾难恢复时导入数据库后,Symantec Endpoint Protection Manager(SEPM)无法登陆...
- flink sql的datastream与dataset初始化代码汇总
- java socketchannel api,SocketChannel API
- MAC OS上将项目提交到github
- ListView高度
- 【X264系列】之不同强度的printf
- Android JSONObject – Android中的JSON解析
- 【版本控制】如何从github 上删除项目
- ft232电路ttl_FT232AM的设计电路及中文资料
- OFDM链路自适应算法 注水算法简单c++实现
- Excel2007中文显示乱码的解决方法(亲自实践)
- 阿西莫夫机器人三定律
- 5.Python格式化输出
- 【JavaWeb】Servlet系列——HttpServletRequest接口详解
- Python日记——柿子要捡软的捏,记第一只小爬虫
- scratch实现猫捉老鼠(下)
- 一行代码!生成自己QQ、微信的动态二维码