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相关推荐

  1. bzoj 2442: [Usaco2011 Open]修剪草坪(单调队列)

    2442: [Usaco2011 Open]修剪草坪 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1175  Solved: 602 [Submi ...

  2. BZOJ 2442 [Usaco2011 Open]修剪草坪:单调队列优化dp

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2442 题意: 有n个数a[i]从左到右排成一排. 你可以任意选数,但是连续的数不能超过k个 ...

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

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

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

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

  5. BZOJ 2442: [Usaco2011 Open]修剪草坪 单调队列

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

  6. Hdu 2430 Beans (数据结构_单调队列)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2430 题目大意:有n坨豌豆,每坨都有w[i]个,现在要从中选择连续的若干坨,然后用一个能装p个豌豆的背 ...

  7. Hdu 4193 Non-negative Partial Sums (数据结构_单调队列)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4193 题目大意: 给定一个长度为n的循环序列,从n个不同位置开始,问有几个位置使得一下情况成立:所有 ...

  8. 提高篇 第五部分 动态规划 第5章 单调队列优化动态规划

    单调队列:是一种双端除列,其内部元素具有单调性. 最大队列 最小队列 操作: .插入:新元素插入队尾,删除除尾元素,直到找到插入后不会破坏单调性的为止. .获取最大(最小)值,访问队首元素. 单调队列 ...

  9. hdu 3401(单调队列优化dp)

    注意:这题题意是有操作的天数相隔要大于w 然后列出状态转移方程就可以发现,可以用优点队列优化啦. 构造状态dp[i][j]表示第i 天拥有 j只股票的时候,赚了多少钱 状态转移有: 1.从前一天不买不 ...

最新文章

  1. 在asp.net中使用 log4net 笔记
  2. vue2.0 之文本渲染-v-html、v-text
  3. python不是内部或外部命令的解决方法_详解python常见报错--NO MODULE NAMED _SQLITE3解决方法...
  4. 进行SEPM的灾难恢复时导入数据库后,Symantec Endpoint Protection Manager(SEPM)无法登陆...
  5. flink sql的datastream与dataset初始化代码汇总
  6. java socketchannel api,SocketChannel API
  7. MAC OS上将项目提交到github
  8. ListView高度
  9. 【X264系列】之不同强度的printf
  10. Android JSONObject – Android中的JSON解析
  11. 【版本控制】如何从github 上删除项目
  12. ft232电路ttl_FT232AM的设计电路及中文资料
  13. OFDM链路自适应算法 注水算法简单c++实现
  14. Excel2007中文显示乱码的解决方法(亲自实践)
  15. 阿西莫夫机器人三定律
  16. 5.Python格式化输出
  17. 【JavaWeb】Servlet系列——HttpServletRequest接口详解
  18. Python日记——柿子要捡软的捏,记第一只小爬虫
  19. scratch实现猫捉老鼠(下)
  20. 一行代码!生成自己QQ、微信的动态二维码

热门文章

  1. Android禁用截屏功能
  2. 小米L50M5-AD电视维修
  3. 怎么让热图显示基因名_热图怎么做? | 热图函数pheatmap()
  4. 如何在Windows 8 中关闭用户账户控制(UAC)
  5. 【Android-音乐类】音友 免费下载、试听、全网最全的音乐 还不快来白嫖~
  6. Intellij IDEA web项目页面中文乱码解决方案
  7. buuctf simplerev 中的小头位序
  8. 【校企合作】我在校企合作网络实训的第二天
  9. 鼠标移入显示移出隐藏及反复闪烁问题
  10. linux扫描软件下载,三款工具助力Linux桌面端扫描