https://www.luogu.org/problem/show?pid=1714

题目描述

今天是小Z的生日,同学们为他带来了一块蛋糕。这块蛋糕是一个长方体,被用不同色彩分成了N个相同的小块,每小块都有对应的幸运值。

小Z作为寿星,自然希望吃到的第一块蛋糕的幸运值总和最大,但小Z最多又只能吃M小块(M≤N)的蛋糕。

吃东西自然就不想思考了,于是小Z把这个任务扔给了学OI的你,请你帮他从这N小块中找出连续的k块蛋糕(k≤M),使得其上的幸运值最大。

输入输出格式

输入格式:

输入文件cake.in的第一行是两个整数N,M。分别代表共有N小块蛋糕,小Z最多只能吃M小块。

第二行用空格隔开的N个整数,第i个整数Pi代表第i小块蛋糕的幸运值。

输出格式:

输出文件cake.out只有一行,一个整数,为小Z能够得到的最大幸运值。

输入输出样例

输入样例#1:

样例输入1
5 2
1 2 3 4 5样例输入2
6 3
1 -2 3 -4 5 -6

输出样例#1:

样例输出1
9样例输出1
5

说明

对20%的数据,N≤100。

  对100%的数据,N≤500000,|Pi|≤500。 答案保证在2^31-1之内。

ans=max(sum[i]-sum[j]) (i-m>j) 可用单调队列维护第i个的前m个的最小sum[j]

 1 #include <cstdio>
 2
 3 inline void read(int &x)
 4 {
 5     x=0; register char ch=getchar(); register bool __=0;
 6     for(; ch>'9'||ch<'0'; ch=getchar()) if(ch=='-') __=1;
 7     for(; ch>='0'&&ch<='9'; ch=getchar()) x=x*10+ch-'0';
 8     x=__?((~x)+1):x;
 9 }
10 const int N(500005);
11 int head,tail,que[N];
12 int n,m,sum[N],ans;
13
14 int Presist()
15 {
16     read(n),read(m);
17     for(int i=1; i<=n; ++i)
18     {
19         scanf("%d",sum+i),sum[i]+=sum[i-1];
20         for(; head<=tail&&sum[que[tail]]>=sum[i]; ) tail--;
21         for(que[++tail]=i; head<=tail&&que[head]<i-m; ) head++;
22         ans=ans>(sum[i]-sum[que[head]])?ans:sum[i]-sum[que[head]];
23     }
24     printf("%d\n",ans);
25     return 0;
26 }
27
28 int Aptal=Presist();
29 int main(int argc,char**argv){;}

转载于:https://www.cnblogs.com/Shy-key/p/7693431.html

洛谷—— P1714 切蛋糕相关推荐

  1. 【Leetcode单调队列】- 洛谷P1714切蛋糕

    单调队列 解决该类问题的重点维护一个队列,从队首到队尾是递减的,队首是最大的.队尾是最小的. 队尾接受值,队首排出值. Java实现用双端队列,前面接收值,后面排出来值. 这类题目往往是跟滑动窗口一起 ...

  2. 洛谷 P1714 切蛋糕

    题目链接 题目描述 今天是 Z的生日,同学们为他带来了一块蛋糕.这块蛋糕是一个长方体,被用不同色彩分成了N个相同的小块,每小块都有对应的幸运值. 小Z作为寿星,自然希望吃到的第一块蛋糕的幸运值总和最大 ...

  3. 洛谷 - P1714 切蛋糕(单调队列+前缀和+思维)

    题目链接:点击查看 题目大意:给出一个由n个数组成的序列,求长度不超过m的连续子段和中的最大值 题目分析:因为给出了一个限制条件,所以这就不能当普通的动态规划来做了,我们可以跑一遍前缀和,然后枚举每一 ...

  4. P1714 切蛋糕(线段树+前缀和)

    P1714 切蛋糕 解题思路:求连续区间不超过k的最大值.先求出前缀和,线段树维护前缀和,在一个长度为k的区间,找到前缀和最小的,用最后的值减去这个值,得到的就是在这个区间里的最大值.如果长度不能到达 ...

  5. 切蛋糕(洛谷P1714)

    切蛋糕 题目描述 今天是小Z的生日,同学们为他带来了一块蛋糕.这块蛋糕是一个长方体,被用不同色彩分成了N个相同的小块,每小块都有对应的幸运值. 小Z作为寿星,自然希望吃到的第一块蛋糕的幸运值总和最大, ...

  6. 洛谷 P1490 买蛋糕

    P1490 买蛋糕 题目描述 野猫过生日,大家当然会送礼物了(咳咳,没送礼物的同志注意了哈!!),由于不知道送什么好,又考虑到实用性等其他问题,大家决定合伙给野猫买一个生日蛋糕.大家不知道最后要买的蛋 ...

  7. 【寒假每日一题】洛谷 P7471 [NOI Online 2021 入门组] 切蛋糕

    题目链接:P7471 [NOI Online 2021 入门组] 切蛋糕 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 Alice.Bob 和 Cindy 三个好朋友得到 ...

  8. 洛谷刷题C语言:切蛋糕、概率、Bridž、NOTE、DOMINO

    记录洛谷刷题C语言qaq [NOI Online 2021 入门组] 切蛋糕 题目描述 Alice.Bob 和 Cindy 三个好朋友得到了一个圆形蛋糕,他们打算分享这个蛋糕. 三个人的需求量分别为 ...

  9. 切绳子【洛谷P1577】【二分】

    切绳子[洛谷P1577][二分] 文章目录 切绳子[洛谷`P1577`][二分] 题目描述 输入格式 输出格式 输入 输出 代码 题目描述 有 N 条绳子,它们的长度分别为 Li.如果从它们中切割出 ...

最新文章

  1. oracle tranc,oracle函数trunc的使用
  2. Python十分适合用来开发网页爬虫
  3. 阿里面试官问你准备在阿里待几年, 怎么回答?
  4. java linux 调用32位so_Linux上TCP的几个内核参数调优
  5. C语言中fgetc函数返回值为什么是int?
  6. PSIM 软件仿真三极管时报错及解决错误方法
  7. windows脚本编制引擎_从零开始的场景编辑器(二):脚本系统
  8. python函数可以递归调用吗_递归调用函数
  9. 加速Webpack-缩小文件搜索范围
  10. Android的JNI【实战教程】3⃣️--Java调用C代码
  11. kali攻击wifi、破解wifi密码详细教程(一)
  12. Ollydbg逆向分析并修改helloworld程序
  13. kryo java_使用Kryo序列化任意Java对象(获取IllegalAccessError)
  14. 【软件测试】测试员vs测试工程师,你是测试员还是测试工程师?
  15. On-Premise
  16. Android开发:开源库集合
  17. net.sf.json.JSONObject实现Object对象与Json字符串的互转
  18. 计算机安全类论文题目,★计算机络安全论文题目计算机络安全毕业论文题目大全计算机络安全论文选题参考...
  19. 肺癌新易感位点的发现及多基因遗传评分在肺癌风险预测中的应用--基于中国超大型前瞻性队列研究
  20. 【Uva 10118】Free Candies

热门文章

  1. opencv实现图片HDR功能
  2. 指纹、虹膜和人脸之后,身份认证领域的新热点:手背静脉识别
  3. 数据可视化,需要遵循的几条核心原则
  4. HTML5手机端弹窗、提示框、loading加载(多功能xwPop弹窗升级版)
  5. java基础之Object类和异常
  6. 使用SharePoint 2007 Web Service上传文件到文档库
  7. linux下防火墙iptables原理及使用
  8. linux系统运维面试题
  9. JavaScript 学习笔记3
  10. iOS基础篇非运行状态——应用启动场景介绍