代码编织梦想

2023大厂笔试模拟练习网站(含题解)

www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200+道互联网大厂模拟练习题,还在极速更新中。欢迎关注公众号“塔子哥学算法”获取最新消息。 在这里插入图片描述 提交链接:

Problem Detail - 2023.04.01-第四题-倒水魔法 - CodeFun2000

为了更好的阅读体检,可以查看OJ上的题解。进入提交链接,点击右边菜单栏的"查看塔子哥的题解"

题目内容

塔子哥是一个年轻的魔法学徒,他一直在努力学习各种魔法技能。他听说倒水魔法是一种非常强大的魔法,但也是一种非常难掌握的魔法。他早早地来到了魔法训练室,希望能够掌握这种魔法。

魔法训练室里有 n 个神奇的杯子,有着不同的大,假设第 i 个杯子已满,向其倒水,多余的水会正正好好流向第 i+1 个杯子(如果 i=n 时没有下一个杯子,不会有杯子接住此时多余的水而溢出到魔法训练室的水池)。

这些杯子有着初始固定的水量,每次练习后杯子里的水都会还原到最初状态。每次练习时,魔法黑板会告诉塔子哥需要将哪一人杯子倒满水。因为每个杯子的材质和形状有所不同所以对其释放倒水魔法需要消耗的魔法值不同。塔子哥想尽可能多练习,所以需要最小化每次消耗的魔法值的总量。

输入描述

第一行一个整数 n ,表示杯了数量。

第二行 n 个整数 x_1,x_2,...,x_n ,依次表示第 i 个杯子能容纳水的量(单位为毫升)。

第三行 n 个整数 y_1,y_2,...,y_n ,依次表示第 i 个杯子初始有的水量(单位为毫升)。

第四行 n 个整数 z_1,z_2,...,z_n ,依次表示对第 i 个杯子每添加1毫升水需要消耗的法力值。

第五行一个整数 m ,表示练习的数量。

第六行 m 个整数q_1,q_2,…,q_n ,依次表示第 i 次练习时需要将第q_i 个杯子倒满。(每次练习过后,杯子里的水量都会还原为初始状态,不会影响到下一次练习)

1\le n,m\le 30001\le y_i\le x_x \le 10^91\le z_i \le 3001\le q_i\le n

输出描述

输出第一行 m 个数,依次表示每次训练时需要消耗的最小法力值。

如果杯子初始本身就是满的,则需要消耗的法力值为 0 。

样例

输入

3
1 2 3
1 1 2
1 2 5
2
3 1

输出

2 0

样例解释 第一次训练,最优方案如下:

初始时杯子的水量和最大容量分别为

1/1 1/2 2/3

  1. 给1号杯子(本身已满)倒水1毫升,消耗1点法力,水溢出转移到2号杯子,当前状态为1/1 2/2 2/3

  2. 2.继续给1号杯子(本身已满)倒水1毫升,消耗1点法力,水溢出到2号杯子(也已满),继续溢出到3号杯子,此时3号杯子也被成功注满水,状态为: 1/1 2/2 3/3

共消耗2点法力。可以证明没有更优方案。

第二次训练时,

初始时杯子的水量和最大容量分别为(注意不同训练互不影响,因为训练结束后魔法会让水杯还原为初始状态)

1/1 1/2 2/3

可以发现1号杯子已满,不用注水,消耗法力为0。

思路:贪心+前缀和

对于第 q_i次询问,目标是将第 j 个杯子装满,那么选择从第k (k\leq j) 个杯子开始倒水,那么 [k, j] 这些杯子被装满的水均来自第 k 个杯子溢出的。

选择从第 k (k\leq j) 个杯子开始倒水,则需要使得[k+1,j] 这些杯子都倒满,魔力值为z_k\times \sum\limits_{i=k}^j (x_i-y_i)。答案即


\min\limits_{t=1}^j(z_k\times \sum\limits_{i=k}^j (x_i-y_i))

此外,代码中使用了一个 trick,就是对于每个查询,从 j 到 1 来枚举从每个杯子开始倒水(而不是从1到j),这样我们就可以维护这其中需要添加的水量。因为如果是从 1 到 j 来枚举,则对于每次的倒水量都需要 O(n) 去查询,导致总复杂度是O(n^3) , 当然也可以直接使用前缀和来维护。

时间复杂度:O(n^2)

最优结构

选择从第 k 个杯子装满水,必然有z_k < \min{(z_{k+1}z_{k+2},\cdots,z_j)}

否则选择一个index\in [k+1,j],有 z_{index}\leq z_k,同时有 \sum_{i=index}^j(x_i-y_i)\leq \sum_{i=k}^j(y_i-x_i),从第 k 个杯子开始倒水花费的魔力值必然不会小于从第 index 个杯子倒水花费的魔力值。

类似知识点题目推荐

这道题的特点是枚举得到最优解 , 可以考虑以下几个题

leetcode

1.剑指 Offer II 013. 二维子矩阵的和 --前缀和开胃菜

2.剑指 Offer II 040. 矩阵中最大的矩形

CodeFun2000

1.P1175 华为od 2023.04.08--第二题-新学校选址

2.P1214 民生科技 2023.04.22-技术研发春招-第一题-删点

3.P1188 2023.04.12-微众银行春招-第三题-魔法收纳器 --难度较高!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/2301_78482949/article/details/131025487

秋招总结春招备战_淘萄桃的博客-爱代码爱编程

    很长时间没有更新csdn的博客。     过去的大半年,从找实习到实习到参加了半程的秋招。单以结果看马马虎虎,甚至不甚满意,存在理想和现实的巨大差距。忙碌了大半年自我感觉在技术上的成长比较缓慢,自我分析原因是学习都是为了俗称填坑式的单纯为了面试结果,缺乏系统地去梳理和实践。导致花了一些实践但是最终结果达不到预期。     不多说闲话,首先总结过

【备战春招/秋招系列】美团java面经总结进阶篇 (附详解答案)_weixin_33674976的博客-爱代码爱编程

该文已加入开源文档:JavaGuide(一份涵盖大部分Java程序员所需要掌握的核心知识)。地址:https://github.com/Snailclimb/JavaGuide. 系列文章: 【备战春招/秋招系列1】程序员的简历就该这样写【备战春招/秋招系列2】初出茅庐的程序员该如何准备面试?【备战春招/秋招系列3】Java程

[干货][互联网]备战春招秋招的经验分享-爱代码爱编程

作为一个经历过仓促的春招,拿到了腾讯实习;仓促的秋招,拿到了腾讯、美团、拼多多等厂offer的过来人,在此写下一篇回忆贴,希望对正在准备春招or秋招的你有些帮助 文章目录 基本信息招聘时间招聘渠道内推码实习区分面试准备关于知识点关于刷题关于语言面试技巧做题回答问题提问环节关于心态结尾 基本信息 备战春招秋招,我们需要明确一些基本的信息 招聘开

【备战秋招】每日一题:3月18日美团春招第二题:题面+题目思路 + c++/python/js/go/java 带注释-爱代码爱编程

2023大厂笔试模拟练习网站(含题解) www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200+道互联网

【备战秋招】每日一题:3月18日美团春招第三题:题面+题目思路 + c++/python/js/go/java带注释-爱代码爱编程

2023大厂笔试模拟练习网站(含题解) www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200+道互联网

【备战秋招】每日一题:3月18日美团春招第四题:题面+题目思路 + c++/python/js/go/java带注释-爱代码爱编程

2023大厂笔试模拟练习网站(含题解) www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200+道互联网

每日练题---c语言-爱代码爱编程

目录 前言: 一.求最小公倍数 1.1公式法 1.2遍历法 1.3乘除法 二.倒置字符串 前言:   今日份题目有:求两个整数的最小公倍数,求倒置字符串,。 一.求最小公倍数   牛客网链接:OJ链接   百度词条:   例如:15能被1、3、5、15这些数整除,所以15这些整数的倍数。公倍数是两个整数或更多整数公有的倍

华为od机试真题b卷 java 实现【食堂供餐】,附详细解题思路-爱代码爱编程

一、题目描述 某公司员工食堂以盒饭的方式供餐。 为将员工取餐排队时间降为0,食堂的供餐速度必须要足够快。 现在需要根据以往员工取餐的统计信息,计算出一个刚好能达到排队时间为0的最低供餐速度。 即,食堂在每个单位时

leetcode506.相对名次-爱代码爱编程

题目描述跳转leetcode详情 给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。 运动员将根据得分 决定名次 ,其中名次第 1 的运动

算法12.从暴力递归到动态规划5-爱代码爱编程

算法|12.从暴力递归到动态规划5 1.机器人行进问题 题意:假设有排成一行的N个位置记为1~N,N一定大于或等于2 开始时机器人在其中的M位置上(M一定是1~N中的一个) 如果机器人来到1位置,那么下一步只能往右来到2

【备战秋招】每日一题:4月1日美团春招(二批)第一题:题面+题目思路 + c++/python/js/go/java带注释-爱代码爱编程

2023大厂笔试模拟练习网站(含题解) www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200+道互联网

【备战秋招】每日一题:4月1日美团春招(二批)第四题:题面+题目思路 + c++/python/js/go/java带注释-爱代码爱编程

2023大厂笔试模拟练习网站(含题解) www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200+道互联网

0402算法理论基础和dijkstra算法-最短路径-加权有向图-数据结构和算法(java)-爱代码爱编程

1 最短路径算法的理论基础 边的放松操作时一项非常容易实现的重要操作,它是实现最短路径算法的基础。同时,它也是理解这个算法的理论基础并使我们能够完整地证明算法的正确性。 1.1 最优性条件 以下命题证明判断路径是否为最

【备战秋招】每日一题:4月1日美团春招(二批)第五题:题面+题目思路 + c++/python/js/go/java带注释-爱代码爱编程

2023大厂笔试模拟练习网站(含题解) www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200+道互联网

[备战秋招]3月18日美团春招+题目思路-爱代码爱编程

www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200+道互联网大厂模拟练习题,还在极速更新中。欢迎关注公众号“塔子哥学算法”获取最新消息。 提交链接: Problem Detail - 2023.3.18.10点-第三题-塔子哥的回文

【备战秋招】每日一题:4月1日美团春招(二批)第二题:题面+题目思路 + c++/python/js/go/java带注释-爱代码爱编程

2023大厂笔试模拟练习网站(含题解) www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200+道互联网

【备战秋招】每日一题:4月1日美团春招(二批)第三题:题面+题目思路 + c++/python/js/go/java带注释-爱代码爱编程

2023大厂笔试模拟练习网站(含题解) www.codefun2000.com 最近我们一直在将收集到的各种大厂笔试的解题思路还原成题目并制作数据,挂载到我们的OJ上,供大家学习交流,体会笔试难度。现已录入200+道互联网