Leetcode.1359 有效的快递序列数目

news2025/7/19 6:20:08

题目链接

Leetcode.1359 有效的快递序列数目 Rating : 1723

题目描述

给你 n笔订单,每笔订单都需要快递服务。

请你统计所有有效的 收件/配送 序列的数目,确保第 i 个物品的配送服务 delivery(i)总是在其收件服务 pickup(i)之后。

由于答案可能很大,请返回答案对 10^9 + 7取余的结果。

示例 1:

输入:n = 1
输出:1
解释:只有一种序列 (P1, D1),物品 1 的配送服务(D1)在物品 1 的收件服务(P1)后。

示例 2:

输入:n = 2
输出:6
解释:所有可能的序列包括:
(P1,P2,D1,D2),(P1,P2,D2,D1),(P1,D1,P2,D2),(P2,P1,D1,D2),(P2,P1,D2,D1) 和 (P2,D2,P1,D1)。
(P1,D2,P2,D1) 是一个无效的序列,因为物品 2 的收件服务(P2)不应在物品 2 的配送服务(D2)之后。

示例 3:

输入:n = 3
输出:90

提示:

  • 1 < = n < = 500 1 <= n <= 500 1<=n<=500

分析: 组合数学

对于第 i个服务,有配送服务 Di和 收件服务Pi。题目要求 Di要在 Pi后面,即先收件,再配送。

本题是要求 n个服务所能组成的合法方案。

对于 n个服务的方案,我们讨论能否从 n-1个服务扩展而来。

对于一个共两个服务的合法方案 P1 D1 P2 D2,我们讨论再加上第 3个服务 P3 D3的合法情况。

在这里插入图片描述
如上图,共 2 * (n - 1) + 1 = 5个位置可以添加。

  • P3 D3 当作一个整体插到这 2 * (n - 1) + 1个位置中,即 C 2 ( n − 1 ) + 1 1 = 5 C_{2(n-1)+1}^{1} = 5 C2(n1)+11=5
  • P3 D3分别插入到这 2 * (n - 1) + 1个位置中,即 C 2 ( n − 1 ) + 1 2 = 10 C_{2(n-1)+1}^{2} = 10 C2(n1)+12=10

两个服务 P1 P2 D1 D2的合法方案有 6个,所以 三个服务 P1 P2 P3 D1 D2 D3的合法方案有 6 * 15 = 90个。

即, f ( n ) = f ( n − 1 ) ∗ ( C 2 ( n − 1 ) + 1 1 + C 2 ( n − 1 ) + 1 2 ) f(n) = f(n-1) * (C_{2(n-1)+1}^{1} + C_{2(n-1)+1}^{2}) f(n)=f(n1)(C2(n1)+11+C2(n1)+12)

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

C++代码:

using LL = long long;
const int MOD = 1e9 + 7;
class Solution {
public:
    int countOrders(int n) {
        LL ans = 1;
        for(int i = 1;i <= n;i++){
            // 2 * (n - 1) + 1 
            LL a = 2 * (i - 1) + 1;
            
            LL b = a * (a - 1) / 2 + a;
            ans = ans * b % MOD;;
        }
        return ans;
    }
};

Java代码:

class Solution {
    private final int MOD = 1000_000_007;

    public int countOrders(int n) {
        long ans = 1;
        for(int i = 2;i <= n;i++){
            long a = 2 * (i - 1) + 1;
            long b = a * (a - 1)/2 + a;
            ans = ans * b % MOD;
        }
        return (int)ans;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Locally Differentially Private Protocols for Frequency Estimation论文笔记

文章目录1.Pure LDP Protocol1.1相关背景1.2支持集1.3相关定义2.Basic one-time RAPPOR3.Rappor4.Direct Encoding4.1GRR4.2RR5.Unary Encoding5.1Symmetric Unary Encoding5.1Optimized Unary Encoding6.Local Hashing6.1Binary Local Hashing6.2Local Hashing6.3Optimal Loca…

Java后端实现Excel导入和导出

文章目录前言1.1准备1.2 Excel导入1.2.1 解析为JSON1.2.2 解析为对象&#xff08;基础&#xff09;1.2.3 解析为对象&#xff08;字段自动映射&#xff09;1.2.4 解析为对象&#xff08;获取行号&#xff09;1.2.5 解析为对象&#xff08;获取原始数据&#xff09;1.2.6 解析为…

JavaScript 条件语句 If ... Else实例集合

文章目录JavaScript 条件语句 If ... Else实例集合If 语句If...else 语句随机链接Switch 语句JavaScript 条件语句 If … Else实例集合 If 语句 源码 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>梁辰兴实例</t…

stack_queue

目录&#xff1a;stack的介绍stack的使用stack的模拟实现queue的介绍queue的使用queue的模拟实现容器适配器是什么priority_queue的介绍priority_queue的使用priority_queue的模拟实现为什么要引“#include<functional>”头文件&#xff1f;回调函数仿函数stack的介绍 s…

无线蓝牙耳机佩戴舒适的有哪几款?入耳舒适的蓝牙耳机推荐

耳机已经成了现代年轻人不可缺少的东西&#xff0c;选择一款佩戴舒适的蓝牙耳机&#xff0c;使人幸福感爆棚&#xff0c;并且还能感受导音质出色声音表现力&#xff0c;下面整理了几款入耳舒适的耳机。 一、南卡小音舱蓝牙耳机 单耳重量&#xff1a;3.1g 佩戴类型&#xff1a…

FISCO BCOS(二十八)———使用java SDK与区块链交互

一、基本环境准备 1、部署配置jdk1.8 https://blog.csdn.net/weixin_46457946/article/details/1232435132、搭建单群组FISCO BCOS联盟链 https://blog.csdn.net/weixin_46457946/article/details/1225463343、配置及使用控制台 https://blog.csdn.net/weixin_46457946/art…

Vue2的基本使用

一、vue的基本使用 第一步 引入vue.js文件 <script src"https://cdn.staticfile.org/vue/2.7.0/vue.min.js"></script> 或者<script src"./js/vue.js"></script> 第二步 在body中设置一个挂载点 {{msg}} <div id"app…

Web3中的营销:如何在2023年获得优势

Mar. 2022, Daniel在过去的一年里&#xff0c;让人们对你的Web3项目或协议感兴趣已经变得越来越有挑战性。许多曾经充满希望的项目因为各种不同的原因&#xff0c;都在熊市中倒下了。然而&#xff0c;那些迄今为止幸存下来的项目都有一个共同点&#xff1a;强大的社区。Web3营销…

九龙证券“风光储锂芯”集体回暖 创业板指探低回升

周一&#xff0c;A股三大指数体现分解&#xff0c;沪指微跌&#xff0c;创业板指探低上升小幅上涨。盘面上&#xff0c;“风景储锂芯”集体反弹&#xff0c;6G概念再度大涨&#xff0c;消费股午后逆势走强&#xff0c;酒店旅游方向领涨&#xff0c;而前期热门的数字经济概念震动…

OpenCV实战(13)——高通滤波器及其应用

OpenCV实战&#xff08;13&#xff09;——高通滤波器以及应用0. 前言1. 检测图像边缘1.2 Sobel 滤波器1.2 梯度算子1.3 高斯导数2. 图像拉普拉斯算子2.1 拉普拉斯算子2.2 使用拉普拉斯算子增强图像的对比度2.3 高斯差3. 完整代码小结系列链接0. 前言 在频域分析中&#xff0c…

谷歌霸屏外推技术原理,谷歌留痕霸屏怎么做?

首先&#xff0c;让我解释一下谷歌霸屏外推技术原理 谷歌霸屏外推是指拥有一批网站资源&#xff0c;这些网站旨在通过搜索引擎优化技术提高排名&#xff0c;并将流量引导到主要网站。 这些网站通常具有相似的设计和内容&#xff0c;但使用不同的域名和IP地址。 如果您想通过…

C++中的谓词、空指针与野指针、内存四区、引用的详细介绍——C++学习记录05

文章目录1. 谓词2. 空指针与野指针3. 指针常量、常量指针与常量指针常量4.内存四区4.1 代码区&#xff1a;存放函数体的二进制代码4.2 全局区&#xff1a;4.3 栈区&#xff1a;4.4 堆区&#xff1a;5. 引用5.1基本定义5.2 引用做形参5.3 引用的本质5.4 常量引用1. 谓词 定义&a…

人群聚众行为识别系统 yolov5

人群聚众行为识别系统通过yolov5网络模型AI视频智能分析技术&#xff0c;人群聚众行为识别算法对现场人群聚众行为全天候监测&#xff0c;发现异常情况立即抓拍告警。我们选择卷积神经网络YOLOv5来进行人群聚众行为识别检测。6月9日&#xff0c;Ultralytics公司开源了YOLOv5&am…

自学c语言,有什么好的建议或方法吗?

不管背景如何&#xff0c;你都可能有以下4样技能有待提高。 读写能力 如果你平时使用IDE的话&#xff0c;尤其如此。不过大体来说我发现程序员略读的时候太多了&#xff0c;从而导致理解性阅读能力有些问题。他们将代码扫视一遍就觉得自己读懂了&#xff0c;其实不然。其他编…

数组链表【leetcode】

笔记&#xff1a;代码随想录数组概念存放在连续内存空间上相同类型数据的集合&#xff08;内存地址、字符数组、下标&#xff09;。特点数组元素不能删除&#xff0c;只能覆盖&#xff08;因为数组元素在内存中是连续的&#xff09;方法1.二分法条件&#xff1a;&#xff08;1&…

10.Clickhouse 单机部署

Clickhouse 单机部署 注意事项&#xff1a; 下载地址&#xff1a;https://packages.clickhouse.com/选择stable目录下的安装包&#xff0c;分别是这几个文件名(下面安装用的是 21.9.6.24 版本)&#xff1a;ClickHouse相关目录:1.命令目录 /usr/bin ll |grep clickhouse2.配置…

Windows安装RabbitMQ详细教程

一、RabbitMQ是什么&#xff1f;RabbitMQ 是一个由 Erlang 语言开发的 AMQP 的开源实现。 ​ AMQP &#xff1a;Advanced Message Queue&#xff0c;高级消息队列协议。它是应用层协议的一个开放标准&#xff0c;为面向消息的中间件设计&#xff0c;基于此协议的客户端与消息中…

FJWC2019 Day2 题解

T1 - 直径 思路 就类似下图的链接方法。 这其中每一条边权都是 111。 我们设以 222 为根的子树除去 222 有 aaa 个节点&#xff0c;以 333 为根的子树除去 333 有 bbb 个节点&#xff0c;以 444 为根的子树除去 444 有 ccc 个节点。 此时直径的数量就为 a⋅ba⋅cb⋅ca\cdot…

Day910.中台是什么 -SpringBoot与K8s云原生微服务实践

中台是什么 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于中台是什么的内容。 近几年针对软件开发领域&#xff0c;中台&#xff0c;这词相信大家都不会陌生。 中台&#xff08;Technology Middle Platform&#xff09;是一种基于技术架构和业务架构的中间层&…

制造业数字化转型难在哪儿?

工作岗位的原因&#xff0c;接触过很多制造业的CIO&#xff0c;也组建过几个制造业CIO的社群&#xff0c;当然也或参与或旁观过不少制造企业数字化转型的案例。 但这篇我不列举案例&#xff0c;分享一些经验和事实&#xff01; 为啥&#xff1f;我接下来说的话可能有点残酷&a…