【教3妹学编程-算法题】给小朋友们分糖果 II

买买买

3妹:1 8得8,2 8=16, 3 8妇女节…
2哥 : 3妹,在干嘛呢
3妹:双11不是过了嘛, 我看看我这个双十一买了多少钱, 省了多少钱。
2哥 : 我可是一分钱没买。
3妹:我买了不少东西, 衣服、包包、化妆器……, 接下来的一个月只能吃土了, 还要2哥救助~
2哥:你没有用花呗或信用卡吗, 把支付方式重新排列一下, 用最晚还款的那种信用卡,这样就可以暂时不用吃土啦。
3妹:可是后面还是要还信用卡啊。哎, 天下要有免费的午餐该有多好啊
2哥 : 傻啊你, 后面就发工资了啊, 不就缓解了
3妹:咦,有道理啊
2哥:说到免费的午餐,我今天看天一个免费的糖果的题目,我们来做一下吧~

买买买

题目:

给你两个正整数 n 和 limit 。

请你将 n 颗糖果分给 3 位小朋友,确保没有任何小朋友得到超过 limit 颗糖果,请你返回满足此条件下的 总方案数 。

示例 1:

输入:n = 5, limit = 2
输出:3
解释:总共有 3 种方法分配 5 颗糖果,且每位小朋友的糖果数不超过 2 :(1, 2, 2) ,(2, 1, 2) 和 (2, 2, 1) 。
示例 2:

输入:n = 3, limit = 3
输出:10
解释:总共有 10 种方法分配 3 颗糖果,且每位小朋友的糖果数不超过 3 :(0, 0, 3) ,(0, 1, 2) ,(0, 2, 1) ,(0, 3, 0) ,(1, 0, 2) ,(1, 1, 1) ,(1, 2, 0) ,(2, 0, 1) ,(2, 1, 0) 和 (3, 0, 0) 。

提示:

1 <= n <= 10^6
1 <= limit <= 10^6

思路:

思考

双指针,
n个糖果分给3个小朋友,考虑分给第一个小朋友i个糖果,那么i的取值范围是[0, min(limit, range)], 此时还剩下left = n - i 个糖果,分给2个小朋友。
考虑left分成两份,位 j 和 left-j 每份的取值范围都需要满足要求。分三种情况:
left > 2limit, 此时无法满足条件。
left <= limit, 此时 j取[0, limit]均可,有limit+1种方法
left > limit 且 left/2 <= limit, 这个时候因为两个人是对称的,只需考虑第一个人的取值范围,也就是[n-limit, limit],共limit-(n-limit) + 1 = 2
limit - n + 1种
所以枚举i, 然后对left分情况讨论,一次遍历拿到结果。

java代码:

class Solution {
    public long distributeCandies(int n, int limit) {
        return c2(n + 2) - 3 * c2(n - limit + 1) + 3 * c2(n - 2 * limit) - c2(n - 3 * limit - 1);
    }

    private long c2(int n) {
        return n > 1 ? (long) n * (n - 1) / 2 : 0;
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/139340.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

天津火爆python培训机构从哪里入手?

Python不仅被应用在职场办公中&#xff0c;还被大型互联网公司应用于大型后端开发&#xff0c;随着大数据领域的高速发展&#xff0c;这门高效的编程语言逐渐成为处理数据的最佳编程语言之一。 Python培训班优势 系统性学习&#xff1a;Python培训班会提供结构化的课程体系&a…

期中之后老师的福音

老师在期中考试后总是会有一大堆事情要做&#xff0c;批改试卷、统计分数、通知学生成绩等等。今天我就要给大家介绍一个能够减轻老师工作负担、提高工作效率的方法——查询系统 简单来说&#xff0c;成绩查询系统就是能够让学生方便的查询成绩&#xff0c;让老师快捷发布成绩的…

腾讯云优惠券如何领取?腾讯云服务器怎么买便宜?

腾讯云深知用户对价格的重视&#xff0c;因此在每年的618、双11、双12等大型促销活动中推出了大量优惠活动。这些优惠活动包括打折、满减、买赠等形式&#xff0c;让用户在购买腾讯云主机服务器时能够享受到更多的实惠。特别是在这些促销活动期间&#xff0c;用户可以通过领取优…

OpenAI发布会,看看GPT又有哪些大动作!2023.11.7【浓缩精华】

ChatGPT GPT-4 Turbo其它applications 北京时间11月7日OpenAI首届开发者大会 GPT-4 Turbo Context length 支持12.8万个上下文contextMore control JSON模式 可复制输出 未来&#xff1a;在API中查看日志Better knowledge 平台启动检索 拥有截至2023年3月的知识New modaliti…

2023年11月最新视频号下载提取工具?

视频号下载提取器教程&#xff1a; 1. 首先&#xff0c;在微信客户端中搜索并添加"下载小助手儿"并关注获取推送的消息。然后添加视频下载助手为好友&#xff0c;可以帮助你解析视频号链接。 2. 打开微信&#xff0c;并找到你想要提取链接的视频号。进入该视频页面后…

终端训练模型日志重定向

在终端中要执行模型的训练时&#xff0c;我们有时候既需要把模型执行的日志输出到终端展示&#xff0c;又想把训练日志保存到日志文件中: 假设执行的代码时trian.py python -u train.py | tee -a ./train.log-u&#xff1a;这是 Python 解释器的一个选项&#xff0c;用于强制标…

List中的迭代器实现【C++】

List中的迭代器实现【C】 一. list的结构二. 迭代器的区别三. 迭代器的实现i. 类的设计ii. 重载iii. !重载iiii. begin()iiiii. end()iiiii. operator* 四.测试五. const迭代器的实现i. 实现5.2 优化实现 一. list的结构 其实按照习惯来说&#xff0c;应该要专门出一篇博客来写…

2.1 Windows驱动开发:内核链表与结构体

在Windows内核中&#xff0c;为了实现高效的数据结构操作&#xff0c;通常会使用链表和结构体相结合的方式进行数据存储和操作。内核提供了一个专门用于链表操作的数据结构LIST_ENTRY&#xff0c;可以用来描述一个链表中的每一个节点。 使用链表来存储结构体时&#xff0c;需要…

微信小程序:仅前端实现对象数组的模糊查询

效果 核心代码 //对数组进行过滤&#xff0c;返回数组中每一想满足name值包括变量query的 let result array.filter(item > { return item.name.includes(query); }); 完整代码 wxml <input type"text" placeholder"请输入名称" placeholder-styl…

【华为OD题库-015】报文重排序-Java

题目 对报文进行重传和重排序是常用的可靠性机制&#xff0c;重传缓冲区内有一定数量的子报文&#xff0c;每个子报文在原始报文中的顺序已知&#xff0c;现在需要恢复出原始报文。 输入描述 输入第一行为N,表示子报文的个数&#xff0c;0<N < 1000。 输入第二行为N个子报…

安防监控EasyCVR视频汇聚平台运维现场无法使用Linux抓包该如何解决?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。监控视频平台EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、云存储、…

竞赛选题 深度学习的口罩佩戴检测 - opencv 卷积神经网络 机器视觉 深度学习

文章目录 0 简介1 课题背景&#x1f6a9; 2 口罩佩戴算法实现2.1 YOLO 模型概览2.2 YOLOv32.3 YOLO 口罩佩戴检测实现数据集 2.4 实现代码2.5 检测效果 3 口罩佩戴检测算法评价指标3.1 准确率&#xff08;Accuracy&#xff09;3.2 精确率(Precision)和召回率(Recall)3.3 平均精…

“大学生”返乡投身乡村建设,直播电商成为返乡创业新潮流!

数字乡村建设是新时代乡村振兴的必经之路&#xff0c;它是伴随网络化、信息化和数字化在农业农村经济社会发展中的应用&#xff0c;以及农民现代信息技能的提高而内生的农业农村现代化发展和转型进程&#xff0c;既是乡村振兴的战略方向&#xff0c;也是建设数字中国的重要内容…

vue3使用时遇到的问题

使用elementplus遇到的问题 1.el-form中input无法输入 问题描述&#xff1a;在el-form中的el-input中输入数字或字母时出现卡顿&#xff0c;输入不进去的现象 问题原因&#xff1a;el-form的ref和model的名称写成了一样的单词 问题解决&#xff1a;两个不能一样 2.input去除…

CTFhub-RCE-php://input

我们需要使用php://input来构造发送的指令 查看phpinfo&#xff0c;找到一下字段 证明是可以使用php://input 1. 使用Burpsuite抓包并转至Repeater 2. 构造包 方法&#xff1a;POST 目标&#xff1a;/?filephp://input Body&#xff1a;<?php system("ls /"…

约束条件的安全测试_报错注入

约束条件的安全测试_报错注入 基于约束的SQL攻击 报错注入

(附源码)基于SSM旅行社网站-计算机毕设 90030

SSM旅行社网站 摘 要 旅游业是一个信息密集型产业&#xff0c;传统的旅游景点门票售卖受到技术和人力的限制&#xff0c;旅行社网站则可以建立景区与游客之间的有效通道&#xff0c;能更好的满足游客便捷旅游的需求。旅行社网站的设计是基于SSM框架、Mysql数据库、JSP技术、Aja…

wireshark打开tcpdump抓的包 vwr: Invalid data length runs past the end of the record

tcpdump -i any -n -s0 > t.pcap 使用此命令在Debian系统上抓包&#xff0c;下载到PC&#xff0c;用wireshark打开时报错&#xff1a; 后来发现写入文件时使用 -w 是没问题的&#xff0c;原因还不清楚。 tcpdump -i any -n -s0 -w t.pcap

Mysql-数据类型

1.数据类型分类 2. 整形类型 说明 : 在MySQL中&#xff0c;整型可以指定是有符号的和无符号的&#xff0c;默认是有符号的。可以通过UNSIGNED来说明某个字段是无符号的。 注意&#xff1a;尽量不使用unsigned&#xff0c;对于int类型可能存放不下的数据&#xff0c;int unsign…

7个好用的可视化数据平台,让你的数据分析更高效率、高逼格

在信息爆炸的时代&#xff0c;数据是企业决策的重要依据。为了更高效率、更高逼格地进行数据分析&#xff0c;选择一个优秀的可视化数据平台至关重要。在众多可选项中&#xff0c;VeryReport报表软件脱颖而出&#xff0c;成为最好用的可视化数据平台之一&#xff0c;以下是其突…