第五届信大超越杯团体赛部分题解

第五届信大超越杯团体赛部分题解

B 时间的礼物

题目大意:

给定一个数n,通过分解n得到一个m大小的数组(数组元素可以是0)。问一共有多少种解决方案。答案对P取模。

输入三个整数 n,m,P。

样例输入:

4 2 10

样例输出:

5

题解:

看完这道题首先想到的是组合数学中的隔板法,给定的数n可以看作是n个小球排成一列,任意两个小球之间以及左右两端(共n+1个位置)都可以插入隔板。插入m-1个隔板就可以正好将这n个小球分为m份,任意一份中小球的数量就作为这个元素的值。

不过需要注意的是,每个位置都可以插入多个隔板,所以答案并不是 C n + 1 m − 1 C_{n+1}^{m-1} Cn+1m1

我们用 f(n,m) 来表示答案,推导一般规律:

f(0,2)=1 f(1,2)=2 f(2,2)=3 f(3,2)=4 f(4,2)=5

f(0,3)=1 f(1,3)=3 f(2,3)=6 f(3,3)=10 f(4,3)=15

f(0,4)=1 f(1,4)=4 f(2,4)=10 f(3,4)=20 f(4,4)=35

可以发现: f ( n , m ) = ∑ i = 0 i = n f ( i , m − 1 ) f(n,m)=\sum_{i=0}^{i=n}f(i,m-1) f(n,m)=i=0i=nf(i,m1)

由这个递推式自然而然地就可以想到杨辉三角,因为杨辉三角有个性质就与其十分相似。

通过与杨辉三角进行对比,得出结果式: f ( n , m ) = C n + m − 1 m − 1 f(n,m)=C_{n+m-1}^{m-1} f(n,m)=Cn+m1m1

问题的难点在于怎么求解 C n + m − 1 m − 1 C_{n+m-1}^{m-1} Cn+m1m1,用传统的递推方式复杂度太高,对于n<=10^6的数据量会超时。

用预处理阶乘和阶乘逆元的方法也存在问题,因为模数P不一定是素数,可能有逆元不存在的情况发生。

所以我们的求解算法是,对分子和分母进行素因子分解,然后用分子素因子的幂减去分母对应的素因子的幂,最后再使用快速幂计算结果即可。

那么如何对n!进行素因子分解?

有一个递归公式:令g(n,p)表示 n!中素因子p的幂

则有 g(n,p) = g(n/p,p)+n/p

所以我们先用线性筛算法把数据范围内所有的素数筛出来,然后枚举素数,使用g(n,p)求出其任意素因子的幂,再结合上面的思路即可得到最终答案。

C 财政大臣

题目大意:

给一颗树,每个节点都有一个价值,再给出若干操作,求最终每个节点的价值。

操作有以下两种:

  • 1 u x,以u为根的子树中所有节点价值增加 x
  • 2 u x,以u为根的子树中所有节点价值减少 x

样例输入:

3 2

1 2

1 3

3 2 1

1 1 1

2 2 1

样例输出:

4 2 2

题解:

首先对这颗树求一个dfn序,得到以任意一个节点x为根的子树的区间:[dfn[x],tail[x]]

然后基于这个dfn序建立一颗线段树,问题就转化为了线段树的区间修改、单点查询问题。

只要写线段树的时候细心一点,注意线段树节点的空间开辟,就没什么问题了。

D 实验室有多少人

题目大意:

给出n个人到实验室和离开实验室的时间,求出实验室人最多的时候有多少人。

输入样例:

4

1 2

2 5

3 5

4 5

输出样例:

3

题解:

最容易想到的思路就是维护一个差分序列,然后对每一天求一个前缀和,取最大值即为最终答案。

就比如,有一个人第L天来到实验室,第R天离开实验室,那我们就在L这个位置上+1,在R这个位置上-1,此时区间 [L,R) 上任意一点的前缀和增加了1,而区间 (0,L) 和 [R,+∞)上任意一点的前缀和都没有发生变化。

不过问题的难点在于题目给的时间范围是 t<=10^9,求前缀和的话会超时。

不过人数的范围在 n<=10^6,所以很显然需要对时间点进行离散化。

我们直接使用STL中的数据结构map<int,int>来实现即可,具体的实现方式见代码。

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

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

相关文章

每日五道java面试题之ZooKeeper篇(三)

目录&#xff1a; 第一题. 会话管理第二题. 服务器角色第三题. Zookeeper 下 Server 工作状态第四题. 数据同步第五题. zookeeper 是如何保证事务的顺序一致性的&#xff1f; 第一题. 会话管理 分桶策略&#xff1a;将类似的会话放在同一区块中进行管理&#xff0c;以便于 Zoo…

autovacuum

相关查询语句 select relname,reltuples from pg_class where relnamepgbench_accounts; show autovacuum_vacuum_scale_factor ; select count(*) from pgbench_accounts; \dt pgbench_accounts SELECT * FROM pgstattuple(pgbench_accounts); --需要开启插件 SELECT relnam…

微软云学习环境

微软公有云 - Microsoft Azure 本文介绍通过微软学习中心Microsoft Learn来免费试用Azure上的服务&#xff0c;也不需要绑定信用卡。不过每天只有几个小时的时间。 官网 https://docs.microsoft.com/zh-cn/learn/ 实践 比如创建虚拟机&#xff0c;看到自己的账号下多了Learn的…

Javascript/Node.JS中如何用多种方式避免属性为空(cannot read property of undefined ERROR)

>>>>>>问题 "cannot read property of undefined" 是一个常见的 JavaScript 错误&#xff0c;包含我在内很多人都会遇到&#xff0c;表示你试图访问一个未定义&#xff08;undefined&#xff09;对象的属性。这通常是因为你在访问一个不存在的对象…

(ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类

文章目录 相关论文摘要引言类别嵌入局限性——问题1普通ZSL模型局限性——问题2自动属性注释过程——对应问题1深度语义-视觉对齐&#xff08;DSVA&#xff09;模型——对应问题2 基于遥感多模态相似性的自动属性标注属性词汇表构造使用CLIP模型自动标注属性对CLIP模型进行训练…

Odoo中编写和执行自动化测试用例

在Odoo中&#xff0c;自动化测试是确保模块功能按预期工作的重要部分。自动化测试有助于在开发过程中快速发现和修复错误&#xff0c;提高软件质量&#xff0c;并确保代码更改不会引入新的问题。Odoo支持两种类型的测试&#xff1a;Python单元测试和YAML测试&#xff08;在较新…

YoloV8实战:使用YoloV8实现水下目标检测(RUOD)

摘要 水下目标检测技术在生态监测、管道检修、沉船捕捞等任务中发挥着重要作用。常用的检测方法包括高清视像、侧扫声呐等。光学图像检测因高分辨率和灵活性&#xff0c;在近距离检测中优势显著。但水下图像受水体吸收、衰减、光源分布等影响&#xff0c;呈现蓝绿色&#xff0…

ideaSSM 网上选课管理系统bootstrap开发mysql数据库web结构java编程计算机网页源码maven项目

一、源码特点 idea 开发 SSM 网上选课管理系统是一套完善的信息管理系统&#xff0c;结合SSM框架和bootstrap完成本系统&#xff0c;对理解JSP java编程开发语言有帮助系统采用SSM框架&#xff08;MVC模式开发&#xff09;&#xff0c;系统具有完整的源代码和数据库&#xff…

哈希-字母异位词分组

字母异位词&#xff0c;词频一样&#xff0c;但是顺序不一样&#xff0c;可以进行排序&#xff0c;获取一个key&#xff0c;放在map中即可。 class Solution {public List<List<String>> groupAnagrams(String[] strs) {Map<String, List<String>> ma…

清明的商标从已注册到不良影响的变化!

清明时节雨纷纷&#xff0c;“清明”可以申请注册商标不&#xff0c;普推知产老杨经检索发现&#xff0c;2022年还有以“清明”通过初审下证的&#xff0c;在这之前更多&#xff0c;还有“清明”在方便食品类别上是著名商标&#xff0c;那个2022年通过初审的正在无效程序中。 2…

mbti,INTJ型人格的心理问题分析

什么是INTJ型人格&#xff1f; INTJ来自mbti职业性格测试&#xff0c;16种人格类型之一&#xff0c;INTJ分别代表内向&#xff0c;直觉&#xff0c;理智&#xff0c;独立&#xff0c;而INTJ型人格是一种以冷静和理性著称的人格&#xff0c;这种人格的人总给人一种比较理智&…

Linux下I2C驱动框架: I2C驱动框架与I2C总线驱动(即I2C控制器)

一. 简介 现在&#xff0c;我们来学习一下如何在 Linux 下开发 I2C 接口器件 驱动&#xff0c;重点是学习 Linux 下的 I2C 驱动框架&#xff0c;按照指定的框架去编写 I2C 设备驱动。 本文来了解以下 Linux下 I2C 驱动框架&#xff0c;框架下的 i2C总线驱动&#x…

力扣40 组合总和Ⅱ Java版本

文章目录 题目描述代码 题目描述 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意&#xff1a;解集不能包含重复的组合。 示例 1:…

16、Lua 协同程序(coroutine)

Lua 协同程序 Lua 协同程序什么是协同(coroutine)&#xff1f;线程和协同程序区别基本语法以下实例演示了以上各个方法的用法 生产者-消费者问题 Lua 协同程序 什么是协同(coroutine)&#xff1f; Lua协同程序(coroutine)与线程比较类似&#xff1a;拥有独立的堆栈&#xff0…

图解大型网站多级缓存的分层架构

前言 缓存技术存在于应用场景的方方面面。从浏览器请求&#xff0c;到反向代理服务器&#xff0c;从进程内缓存到分布式缓存&#xff0c;其中缓存策略算法也是层出不穷。 假设一个网站&#xff0c;需要提高性能&#xff0c;缓存可以放在浏览器&#xff0c;可以放在反向代理服…

uniapp原生下拉刷新在手机上不起作用

开启原生下拉刷新时&#xff0c;页面里使用了全屏高的scroll-view&#xff0c;向下拖动内容时&#xff0c;会优先触发scroll-view滚动而不是下拉刷新。 "enablePullDownRefresh": true, 这就可能会导致下拉刷新不起作用&#xff0c;这时候就需要做到取舍&#xff0c…

设计模式(12):代理模式

一.核心作用 通过代理&#xff0c;控制对对象的访问;可以详细控制访问某个对象的方法&#xff0c;在调用这个方法前做前置处理&#xff0c;调用这个方法后做后置处理。 二.核心角色 抽象角色&#xff1a; 定义代理角色和真实角色的公共对外方法;真实角色&#xff1a; 实现抽…

【智能排班系统】雪花算法生成分布式ID

文章目录 雪花算法介绍起源与命名基本原理与结构优势与特点应用场景 代码实现代码结构自定义机器标识RandomWorkIdChooseLocalRedisWorkIdChooselua脚本 实体类SnowflakeIdInfoWorkCenterInfo 雪花算法类配置类雪花算法工具类 说明 雪花算法介绍 在复杂而庞大的分布式系统中&a…

小坤二次元导航HTML源码

源码介绍 小坤二次元导航HTML源码&#xff0c;很好看的一个htmlの引导页/导航页&#xff01;需要的上&#xff01; 源码下载 小坤二次元导航HTML源码

游戏攻略|基于Springboot和vue的游戏分享平台系统设计与实现(源码+数据库+文档)

游戏攻略分享平台 目录 基于Springboot和vue的游戏分享平台系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、前台&#xff1a; 2、后台 管理员功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a…