Pinely Round 2 (Div. 1 + Div. 2)

news/2025/1/15 13:05:47/文章来源:https://www.cnblogs.com/rlc202204/p/18412995

A. Channel

题意: 最开始网上有 \(a\) 个人,共 \(q\) 次改变,每一次有一个人加入或离开。总共 \(n\) 个人,求这 \(n\) 个人是否都上过网,有没上过网的,都有可能。

思路:

贪心地每次选取尽可能多和少的人即可。

提交记录

B. Split Sort

题意: 给定一个排列,每次可以选取一个数 \(x\),将排列划分成小于 \(x\) 部分组成的子序列和大于等于 \(x\) 部分组成的子序列。求最少多少次操作排列会变成 \(1 \sim n\)

思路:

如果 \(i\)\(i+1\) 后面则必须有一次操作 \(x = i + 1\),显然这也是充分的。

提交记录

C. MEX Repetition

题意: 给定一个 \(n\) 长度序列 \(a_1 \sim a_n\) 两两不同且都在 \([0, n]\),一次操作是按照 \(i = 1 \sim n\) 的顺序每次让 \(a_i = \text{MEX}(a_1, a_2, \dots, a_n)\),求 \(k\) 此操作后的序列。

思路:

最重要的是读题,我们注意到恰好一个数没有被使用,这意味着第一次操作第一个数会变成这个数,第二个数变成第一个数。

所以实际上就是在数组前面加上这个数然后求一个循环位移。

提交记录

D. Two-Colored Dominoes

题意: 一个 \(n \times m\) 的棋盘上面有一些多米诺骨牌,现在将每一个牌的两个格子染成黑色和白色,要求每一列和每一行黑格子白格子数量相等。构造方案或判断无解。

思路:

首先我们发现竖着的对列没有影响,所以实际上就是要求每一列只考虑横着的有偶数个,行同理。

所以判断加构造即可。

提交记录

E. Speedrun

题意: 现在有 \(n\) 个任务,第 \(i\) 个任务需要在某一天第 \(h_i\) 小时完成,一天有 \(k\) 个小时,还有 \(m\) 对限制(不构成环),要求 \(a_i\)\(b_i\) 之前完成。

现在求最后一个任务完成时间减去第一个任务完成时间的最小值。

\(n,m \le 2 \times 10^5, k \le 10^9\)

思路:

显然如果确定第一个任务是什么就能拓扑排序求出最后任务的最早时间。

但是样例提示我们所有入度为 0 的点不一定就是最小的开始。

我们观察发现应该是一个前缀错后一天,我们考虑其会造成什么影响。

如果一个点出发能到终点且是最长路,那么如果这个点错后一天就会导致终点的答案错后一天。

于是我们倒着求一遍得出每个点能到达的最长路的终点,这样就可以枚举判断了。

提交记录

G. Swaps

题意: 给定序列 \(a_1, a_2, \dots, a_n\),一次操作定义为交换 \(a_i, a_{a_i}\)。求进行任意次操作后的所有可能的序列个数,对 \(10^9 + 7\) 取模。

\(n \le 10^6, 1 \le a_i \le n\)

思路:

最后一题永远是作业,而且都是被我看过一遍然后鸽了的题

转化成基环树,让 \(i \to a_i\) 连边。

现在操作变成 \(a \to b \to c\) 变成 \(a \to c, b \to b\),这里要求 \(b \not = c\)。也就是如果是自环就不能操作。

显然一次操作中间的点变成自环,可以看成删去了这个点。

现在我们考虑如何计数,由于是在基环树上,我们可以先把每个环上的点的对应子树计算出来。

不妨设 \(f(i,0/1)\) 表示 \(i\) 的子树内,\(i\) 是否被删去,我们不难得出转移:

\[\begin{aligned} f(i,0) &= \prod_u(f(u,0) + f(u,1))\\ f(i,1) &= \sum_u (f(u,0) + f(u,1)) \prod_{v \not = u} (f(v,0) + f(v,1)) \end{aligned} \]

\(i\) 的儿子个数是 \(sz_i\),则其实 \(f(i,1) = sz_if(i,0)\)

不难发现二者成对出现,记 \(f(i) = f(i, 0) + f(i, 1)\) 我们加起来就会得到 \(f(i) = (sz_i+1)\prod_uf(u)\)

现在不妨考虑环上的问题,我们还是进行一个 dp,不妨设 \(g(i,0/1)\) 表示考虑到环上第 \(i\) 个点,是否被删去,设 \(c_i\) 表示环上的第 \(i\) 个点,转移如下:

\[\begin{aligned} g(i,0) &= (g(i - 1, 0) + g(i - 1, 1))f(c_i, 0)\\ g(i,1) &= (g(i - 1, 0) + g(i - 1, 1))(f(c_i, 0) + f(c_i, 1))\\ \end{aligned} \]

同理,加起来就能得到:

\[g(i) = g(i - 1)(sz_{c_i} + 2)f(c_i, 0) \]

但是这样会导致可能一个点转了一圈把自己也删了,所以我们需要减去这种情况,方案数为:

\[\sum_i f(c_i)\prod_{j \not = i}f(c_j, 0) \]

考虑到 \(f(c_i) = (sz_{c_i} + 1)f(c_i, 0)\),所以如果设 \(T = \prod_i f(c_i, 0)\),贡献就是 \(\sum_i (sz_i + 1)T\)

这样就可以在 \(O(n)\) 时间解决这个问题。

官方题解的组合意义是考虑打标记,有点人类智慧。

提交记录

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

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

相关文章

九月

arc131 C考虑奇数情况,只有一个时先手必胜,设当前异或和为 \(S\),必输的情况是 \(\forall S \oplus a_i \in a\),这些数是一一对应的,但一共有奇数,此时先手必胜。偶数是,若第一回合无法结束游戏则变为后手,同上。 E若一个点所有边颜色相同,包含该点的环便不可能三边颜…

微信小程序开发系列10----页面配置--事件冒泡和阻止

下图点击里面,外面的事件也触发 场景:广告 点击先看广告,之后跳转到功能页面 会冒泡的事件源码获取方式(免费):(1)登录-注册:http://resources.kittytiger.cn/(2)签到获取积分(3)搜索:8-wxmleventMp事件冒泡和阻止

椭圆的第二定义

平面内到定点 \(F(c,0)\)的距离和到定直线 :\(\displaystyle l:x=\frac{a^{2}}{c}\)( 点\(F\)不在\(l\)上)的距离之比为常数\(\displaystyle \frac{a}{c}\)(即离心率\(e\),\(0<e<1\))的点的轨迹是椭圆。(即点\(P\)轨迹) 其中定点\(F\)为椭圆的焦点,定直线\(l\)称…

微信小程序开发系列9----页面配置--事件-参数传递

图点击里面,外面的事件也触发 场景:广告 点击先看广告,之后跳转到功能页面 会冒泡的事件 源码获取方式(免费):(1)登录-注册:http://resources.kittytiger.cn/(2)签到获取积分(3)搜索:7-wxmleventparameter事件-参数传递

NSSM使用方法/使用NSSM把.Net Core部署至 Windows 服务

使用NSSM把.Net Core部署至 Windows 服务 NSSM使用简介1、官网http://www.nssm.cc/,下载地址http://www.nssm.cc/download 2、下载后解压到自己喜欢的目录如:F:\work\nssm-2.24\win643、以管理员权限打开命令行工具,切换到nssm.exe所在路径,运行 nssm install,打开程序配置…

使用NSSM把.Net Core部署至 Windows 服务

使用NSSM把.Net Core部署至 Windows 服务 NSSM使用简介1、官网http://www.nssm.cc/,下载地址http://www.nssm.cc/download 2、下载后解压到自己喜欢的目录如:F:\work\nssm-2.24\win643、以管理员权限打开命令行工具,切换到nssm.exe所在路径,运行 nssm install,打开程序配置…

PC算法详解

基于约束的方法(PC(Peter-Clark)算法) 基于约束的方法大多数是在经验联合分布上测试条件独立性,来构造一张反映这些条件独立性的图。通常会有多个满足一组给定的条件独立性的图,所以基于约束的方法通常输出一个表示某个 MEC(边缘计算) 的图(例如,一个 PAG)。 最有名的…

第十九讲:幻读是什么,幻读有什么问题?

第十九讲:幻读是什么,幻读有什么问题? 简概:引入 ​ 在上一篇文章最后,我给你留了一个关于加锁规则的问题。 ​ 今天,我们就从这个问题说起吧。为了便于说明问题,这一篇文章,我们就先使用一个小一点儿的表。 ​ 建表和初始化语句如下(为了便于本期的例子说明,我把上篇…

网络计划技术——关键路线法精解

网络计划技术最早由美国杜邦公司于1957年开发的“关键路径法(CPM)”和美国海军在1958年发明的“计划评审技术(PERT)”推动。网络计划技术(Network Planning Techniques)是一种用于项目管理和调度的科学方法,其核心思想是通过构建网络图来描述项目中各个任务之间的逻辑关…

Rust使用Actix-web和SeaORM开发WebAPI通过Swagger UI查看接口文档

本文将介绍Rust语言使用Actix-web和SeaORM库,数据库使用PostgreSQL,开发增删改查项目,同时可以通过Swagger UI查看接口文档和查看标准Rust文档 开始项目 首先创建新项目,名称为rusty_crab_api cargo new rusty_crab_apiCargo.toml [dependencies] sea-orm = { version = &q…

JOI Open 2016

T1 JOIRIS你在玩俄罗斯方块,游戏区域是一个宽度为 \(n\),高度足够大的矩形网格、初始时第 \(i\) 列有 \(a_i\) 个方块。 给定参数 \(k\),你可以做不超过 \(10^4\) 次操作,来将这个网格中的所有方块全部消除,一次操作形如:在网格的最顶端落下一个 \(1 \times k\) 或者 \(k…

章12——异常exception

异常 快捷键 ctrl + alt + t 选中 try-catch 如果进行异常处理,即使出现了异常,程序可以继续执行。异常介绍 开发过程中的语法错误和逻辑错误不是异常。 执行过程中所发生的异常事件可分为如下两大类:异常体系图小结:常见的运行时异常没有关联的类不能进行上下转型 异常处理…