CSP模拟赛 #39

news/2024/10/18 21:19:08

A

\(n\) 个木块和一个挡板,他们的初始位置分别为 \(a_1,a_2,\dots, a_n, P\),满足这 \(n + 1\) 个数严格单调递增。有 \(q\) 次操作,每次:

  1. 给定 \(x\),加入或删除位于 \(x\) 处的木块。

  2. 对于 \(i = 1...n - 1\),把第 \(i\) 个木块推到第 \(i + 1\) 个木块前一个位置,最后把第 \(n\) 个木块推到 \(P - 1\) 处。

\(1\le n, q\le 2\times 10^5\)

考虑每次进行 2 操作,会使得 \(a_1' \gets a_2 - 1, \ a_2' \gets a_3 - 1, \dots, a_{n - 1}' \gets a_n - 1, a_n \gets P - 1\)

维护一个位置集合 \(S\),相当于令 \(S\) 中所有数 \(-1\),然后删除最小值,加入 \(P - 1\)

用 set 维护,记录全局 \(-1\) 标记即可。

B

三个变量 \(P,S,D\) 初始为 \(0\)。有 \(n\) 次操作,第 \(i\) 次给出 \(x_i, y_i, z_i\),可以执行三个之一:\(P \gets P + x_i + S\)\(S\gets S + y_i\)\(D\gets D + z_i\)。每次操作完后,令 \(S \gets S + D\)

求最终 \(P\) 的最大值。

\(1\le n\le 80\)

直接算肯定不行,考虑拆贡献。

对于一次操作 \(i\),其中第 \(i\) 次操作为 \(S \gets S + y_i\),令 \(c\) 为后续 \(P\) 操作的次数,那么对答案的贡献为 \(c\cdot y_i\)

对于一次操作 \(i\),其中第 \(i\) 次操作为 \(D \gets D + z_i\),令 \(c_{1\dots m}\) 为后续 \(P\) 操作的时刻,那么对答案的贡献为 \(z_i\sum\limits_{j = 1} ^ m (c_j - i)\)

从后往前 DP,设 \(f[i, j, k]\) 表示考虑了操作 \(i\sim n\),满足 \(P\) 操作的次数为 \(j\),每次 \(P\) 操作的位置减去 \(i - 1\) 的总和为 \(k\),最大的总贡献。

时间复杂度 \(\mathcal O(n^4)\)

C

有很多盒子,编号为 \(1\sim 10^{115} - 1\)。你按编号从小到大打开所有盒子,打开每个盒子里有 \(A\) 根火柴并收入口袋中。打开第 \(i\) 个盒子后,你需要用口袋里的火柴拼出数字 \(i\)。拼出数码 \(j(0\le j\le 9)\) 需要花费 \(a_j\) 根火柴,求第一个不能拼出的数字,或者输出 \(-1\)

\(0\le A, a_i\le 100\)

\(b_i\) 为拼出盒子 \(i\) 的所需要的火柴数,设 \(s_i = \sum\limits_{j = 1} ^ i (b_j - A)\),那么我们相当于求出第一个满足 \(s_i > 0\) 的位置 \(i\)

考虑处理出 \(f[i,j]\) 表示对于 \([0, 10^i - 1]\) 中的盒子,每个盒子中火柴数为 \(A - j\) 时的 \(s_{10^i - 1}\)\(g[i, j]\) 表示对于 \([0, 10^i - 1]\) 中的盒子,每个盒子中的火柴数为 \(A - j\) 时的 \(\max\limits_{k = 0} ^ {10^i - 1} s_k\)

每次合并两对 \((f,g)\) 时,就和线段树维护前缀最大值一样。

考虑贪心填写答案,先枚举答案位数 \(bit\)。接下来从大到小枚举每一位,枚举这一位填写的数码,然后利用 \((f, g)\) 判断合法性,需要使用高精度。

D

一张无向图,你需要给每条边赋一个 \(0/1/2\) 的权值,满足任意一个简单环的边权之和为奇数,且每个点连接的任意两条边权值和 \(\bmod 3 \not = 1\)

\(1\le n, m\le 10^5\)

当两个环有交时,一定不合法,所以每个连通块必须是一个边仙人掌。

考虑建立园方树,第二个条件相当于 \(0\)\(1\) 不能同时在一个点出现,且 \(2\) 在一个点至多出现一次,简单 dp 即可。

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

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

相关文章

浅谈 tarjan

就是记录两个数组:dfn[]和low[] 其中dfn[]表示访问的顺序,low[u]用来存储 \(u\) 不经过其父亲能到达的最小时间戳。。。 搬一下 wiki 的图。。。我们发现 \(low[v]\ge dfn[u]\) 可以表示不能回到祖先,则 \(u\) 点位割点。。。 直接上代码P3388------> #include <bits/…

正点原子新起点V2开发板FPGA关于SDRAM代码解读

正点原子新起点V2开发板FPGA关于SDRAM代码解读 1. SDRAM 概述 SDRAM(Synchronous Dynamic Random Access Memory)是一种同步动态随机存储器,广泛用于FPGA项目中。通过SDRAM控制模块,可以实现数据读写、刷新等操作。本文对SDRAM的控制模块进行详细解读,分析代码中的命令控制…

面试题速刷 - 实战会碰到的一些问题

页面如何进行首屏优化?路由懒加载服务端渲染SSR只获取HTML就可以,里面包含data。 APP预取(啥东西)APP结合H5、结合JS bridge 分页图片懒加载 lazyloadHybrid总结:后端一次性返回10w条数据,你会如何渲染? 本身后端设计方案的设计就不合理!非要的话......自定义中间层:虚…

氏发

这个作业属于哪个课程 2024高级语言程序设计 (福州大学 - 计算机与大数据学院)这个作业要求在哪里 高级语言程序设计课程第三次个人作业学号 102400117姓名 廖逸轩

二、STM32F103C8T6-定时器

STM32F103C8T6 定时器概述 STM32F103C8T6 作为一款广泛使用的微控制器,内置多个定时器,能够支持多种计时和控制功能,如精确延时、脉冲宽度调制(PWM)、捕获比较(Capture/Compare)、输入捕获 和 输出比较 等。这些功能在电机控制、信号测量、周期性事件触发等应用中非常常…

Sparse Table

Sparse Table 可用于解决这样的问题:给出一个 \(n\) 个元素的数组 \(a_1, a_2, \cdots, a_n\),支持查询操作计算区间 \([l,r]\) 的最小值(或最大值)。这种问题被称为区间最值查询问题(Range Minimum/Maximum Query,简称 RMQ 问题)。预处理的时间复杂度为 \(O(n \log n)\…

MinIO

1.概述一个开源的用于存储文件的分布式文件存储系统2.官网http://docs.minio.org.cn/docs/3.相关概念bucket – 类比于文件系统的目录 Object – 类比文件系统的文件 Keys – 类比文件名4.搭建 docker run -p 9000:9000 --name minio -d --restart=always -e "MINIO_ACCES…

计量经济学(十一)——联立方程模型的估计

img { display: block; margin-left: auto; margin-right: auto } table { margin-left: auto; margin-right: auto } 联立方程模型(Simultaneous Equations Model, SEM)是一类包含多个相互依赖变量的统计模型,用来描述这些变量之间的相互关系。在传统的单一方程模型中,通常…