牛客小白月赛86 --- E-- 可口蛋糕 ---- 题解

news/2024/11/25 13:14:31/

可口蛋糕

时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述 

小蓝制作了 n 个蛋糕并将其从左往右排成一行,其中第 i 个蛋糕的饱腹度为 wi​ 其可口值为 di​。

由于手法过于生疏,尽管每个蛋糕的饱腹度必然为正数,但是可能存在蛋糕的可口值为负数!

作为可口蛋糕大赛的评委,小灰灰需要吃掉一段连续的蛋糕,使得蛋糕的饱腹度之和至少为 W。

而小蓝的得分就是小灰灰吃掉蛋糕所对应的可口值之和,她想知道在小灰灰帮助她的情况下,她的最大可能得分是多少。

输入描述:

第一行两个空格分隔的整数分别代表 n 和 W。接下来一行 n 个空格分隔的整数分别代表:w1​,w2​,...,wn​。再接下来一行 n 个空格分隔的整数分别代表:d1​,d2​,...,dn​。保证:
1≤n≤10^6 

1≤W,wi​≤10^9

0≤∣di​∣≤10^9

W≤∑wi

输出描述:

输出一行一个整数代表答案。

示例1

输入

5 8
1 4 5 2 3
-1 -1 1 -2 1

输出

0

说明

选择区间 [2,3][2,3] 或者区间 [3,5][3,5] 时,这段蛋糕的饱腹度之和都超过了 8,且其可口值之和均为 0,可以证明这就是小蓝能够获得的最大得分。

思路解析:

        因为他需要连续吃一段蛋糕,所以首先想到进行前缀和处理。

        如果他一定要最后吃j这个蛋糕,那么它可以选择i开始吃,并且保证 j - i 这个区间的饱腹度大于等于w,对于一个j来说,他可能有多个可以选择的i,选择一个最优的i,是对于当前j位置的最佳答案,进行遍历每个可能的j位置,来求得最优答案。

代码实现:

        

import java.io.*;
import java.math.BigInteger;
import java.util.*;public class Main {public static void main(String[] args) throws IOException {int n = input.nextInt();int m = input.nextInt();long[] a = new long[n + 1];long[] b = new long[n + 1];for (int i = 1; i <= n; i++) {a[i] = input.nextInt();}for (int i = 1; i <= n; i++) {b[i] = input.nextInt();}for (int i = 2; i <= n; i++) {a[i] += a[i - 1];b[i] += b[i - 1];}long ans = Long.MIN_VALUE;int i = 0;int j = 1;long mn = Long.MAX_VALUE / 2;while (j <= n && i <= n) {if (a[j] - a[i] >= m) {mn = Math.min(mn, b[i]);i++;} else {ans = Math.max(ans, b[j] - mn);mn =  Long.MAX_VALUE / 2;j++;}}System.out.println(ans);}static PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));static Input input = new Input(System.in);static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));static class Input {public BufferedReader reader;public StringTokenizer tokenizer;public Input(InputStream stream) {reader = new BufferedReader(new InputStreamReader(stream), 32768);tokenizer = null;}public String next() {while (tokenizer == null || !tokenizer.hasMoreTokens()) {try {tokenizer = new StringTokenizer(reader.readLine());} catch (IOException e) {throw new RuntimeException(e);}}return tokenizer.nextToken();}public String nextLine() {String str = null;try {str = reader.readLine();} catch (IOException e) {// TODO 自动生成的 catch 块e.printStackTrace();}return str;}public int nextInt() {return Integer.parseInt(next());}public long nextLong() {return Long.parseLong(next());}public Double nextDouble() {return Double.parseDouble(next());}public BigInteger nextBigInteger() {return new BigInteger(next());}}}


http://www.ppmy.cn/news/1326223.html

相关文章

C++类与对象【继承】

&#x1f308;个人主页&#xff1a;godspeed_lucip &#x1f525; 系列专栏&#xff1a;C从基础到进阶 &#x1f384;1 继承&#x1f354;1.1 继承的基本语法&#x1f354;1.2 继承方式&#x1f354;1.3 继承中的对象模型&#x1f354;1.4 继承中构造和析构顺序&#x1f354;1.…

Visual Studio Code 1.67调整文件嵌套、Markdown导航

2022年4月发布的微软代码编辑器也为Java和Visual Studio code for Web扩展包带来了改进。 Visual Studio Code 1.67发布于5月5日&#xff0c;可以从项目网站下载&#xff0c;适用于Linux、Windows或Mac。新特性中特别关注的是浏览器文件嵌套和Markdown代码导航。该版本还带来了…

列表项按需加载 v-infinite-scroll 滚动条触底无效 解决方案

后台返回的分页数据需要实现滚动条触底加载下一页&#xff0c; 用了element-ui 的 v-infinite-scroll 指令来实现。但是发现在某一分辨率下, 滚动条触底时未触发加载方法。 解决方法 在同一标签内将 infinite-scroll-distance 设置为 1 或其他合适的 >0 的数值&#xff0…

ValueError: Unable to read workbook: could not read strings from data.xlsx解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

nodejs前端项目的CI/CD实现(二)jenkins的容器化部署

一、背景 docker安装jenkins&#xff0c;可能你会反问&#xff0c;这太简单了&#xff0c;有什么好讲的。 我最近就接手了一个打包项目&#xff0c;它是一个nodejs的前端项目&#xff0c;jenkins已在容器里部署且运行OK。 但是&#xff0c;前端组很追求新技术&#xff0c;不…

【jupyter添加虚拟环境内核(pytorch、tensorflow)- 实操可行】

jupyter添加虚拟环境内核&#xff08;pytorch、tensorflow&#xff09;- 实操可行 1、查看当前状态(winR&#xff0c;cmd进入之后)2、激活虚拟环境并进入3、安装ipykernel5、完整步骤代码总结6、进入jupyter 添加pytorch、tensorflow内核操作相同&#xff0c;以下内容默认已经安…

vue3前端开发,子组件向父组件传递数据练习

vue3前端开发,子组件向父组件传递数据练习&#xff01; <script setup> import Child from ./Child.vue const getMsg (msg)>{console.log(msg); } </script> <template><h3>Parent</h3><!--绑定事件--><Child get-Msg"getM…

带你学C语言-指针(4)

目录 ​编辑 ⚾0.前言 &#x1f3c0;1.回调函数 ⚽2.qsort &#x1f3c9;2.1 qsort函数的模拟实现 &#x1f3be;3.sizeof与strlen对比 &#x1f3be;4.结束语 ⚾0.前言 言C之言&#xff0c;聊C之识&#xff0c;以C会友&#xff0c;共向远方。各位CSDN的各位你们好啊&…