冲刺 CSP 联训模拟 2

news/2024/10/5 7:53:00

T1 挤压

概率期望,二进制拆位

看到异或想到拆位算贡献

\[\begin{aligned} ans&=\sum_xx^2P(x)\\ &=\sum_x(b_1+b_2+...+b_{30})^2P(x)\ \ \ (b_i表示\ x\ 二进制下\ i\ 位的值)\\ &=\sum_x(b_1b_1+b_1b_2+. . .b_{30}b_{29}+b_{30}b_{30})P(x)\\ &=\sum_i^{30}\sum_j^{30}b_ib_j\sum_{b_i\in x\ and\ b_j\in x}P(x) \end{aligned}\]

后面一部分直接简单 \(DP\) 计算即可

时间复杂度瓶颈在 \(DP\) ,为 \(O(nlog^2n)\)

T2 工地难题

计数题,排列组合,容斥

发现最大恰好这一限制不好满足,考虑对答案做个前缀和,即计算最大不超过这一限制。

问题转移到计算最大不超过的方案

考虑到 \(0\) 的个数是固定的为 \(n-m\) 个,它把 \(1\) 分成了 \(n-m+1\) 个连续段(可能长度为 \(0\) )。
记限制最大不超过的值为 \(k\)\(1\) 的个数为 \(n\),连续段的个数为 \(m\)
当抛弃限制 \(k\) 的时候答案显然为 \(\dbinom{n+m-1}{m-1}\)

思考怎么处理限制 \(k\),发现抛弃限制 \(k\) 时算出的答案就是连续段的长度超过 \(k\) 至少有 \(0\) 个的个数,即等于 \(\sum_{i=0} cnt_{连续段长度超过\ k\ 恰好为 i 的个数}\) 如果能算出连续段的长度超过 \(k\) 至少有 \(1\) 个的个数,直接作差就算完了,但发现这个东西同样不好求。

我们可以钦定出多少个大于 \(k\) 的个数 \(i\),即从总数 \(n\) 中取出 \(i(k+1)\) 个来,再从剩下的 \(n-i(k+1)\) 个中做抛弃限制 \(k\) 的计算,再在其基础上塞入这 \(i\) 个长为 \((k+1)\) 的连续段即乘上 \(\dbinom{m}{i}\),但是这样计算会算重,举个例子在计算长度超过 \(k\) 至少有 \(1\) 个的个数时它会将 \(cnt_{连续段长度超过\ k\ 恰好为 2 的个数}\) 多算一遍,即会在这两个连续段中都插入一次。

考虑容斥去重,下表中至少的个数是以上述方案计算的,其中第 \(i\)\(j\) 列是以至少有 \(0\) 个中恰有 \(i\) 个超过的个数为单位 \(1\) 所算的系数。

恰有 \(i\) 个超过\ 至少有 \(i\) 个超过 \(0\) \(1\) \(2\) \(3\) \(4\) ...
\(1\) \(\binom{1}{0}\) \(\binom{1}{1}\) \(0\) \(0\) \(0\)
\(2\) \(\binom{2}{0}\) \(\binom{2}{1}\) \(\binom{2}{2}\) \(0\) \(0\)
\(3\) \(\binom{3}{0}\) \(\binom{3}{1}\) \(\binom{3}{2}\) \(\binom{3}{3}\) \(0\)
\(4\) \(\binom{4}{0}\) \(\binom{4}{1}\) \(\binom{4}{2}\) \(\binom{4}{3}\) \(\binom{4}{4}\)
...

目的是为了清除上表中所有的个数,由 \(\sum_{i=0}^{n}(-1)^i\dbinom{n}{i}=0\) 注意到上表每行满足这样一个式子,直接做即可。

时间复杂度分析,对于给定 \(k\) ,最多能有 \(\dfrac{n}{k}\) 个连续段的长度超过 \(k\),所以时间复杂度是调和级数为 \(O(nlogn)\)

T3 星空遗迹

特殊性质,栈,线段树

性质1:对于连续一段操作其实本质有用的只有一个

性质2:若一段操作两边的操作都能赢它,则可将这一段变为两边的操作

证明可以考虑操作 \(f\) 本质上是获胜者蔓延的过程

考虑询问,可以用一个单调栈去维护这样的性质,即从栈顶的第 \(i+1\) 个操作赢第 \(i\) 个操作,每次对于一个新的操作入栈时,如果相同则 \(pop\) 栈顶将自己放入,如果赢了栈顶则 \(pop\) 两次栈顶将自己放入,如果输给了栈顶则直接放入。这样是满足以上的性质,则最后的答案就是栈底元素,这样就得到了查询 \(O(n)\) 的做法。

发现不用真的去维护这样一个栈,只需要记录栈的 \(size\) 即可,记 \(f\) 为栈的 \(size\) 则得到式子

\[f_{i+1}= \begin{cases} f_i+1&win(s_i,s_{i+1})=s_i\\ f_i&s_i=s_{i+1}\\ max(f_i-1,1)&win(s_i,s_{i+1})=s_{i+1} \end{cases} \]

答案即为最后一个 \(f=1\) 时的栈中的元素,但情况 \(3\) 中对 \(1\)\(\max\) 并不好维护,发现不对 \(1\)\(\max\) 直接减到负的答案是最后一个 \(f\) 最小时的操作,但其实任意一个最小都是相同的,证明考虑 \(f\) 本质上是一个前缀和的形式

简单转化,用线段树维护即可

时间复杂度 \(O(nlogn)\)

T4 纽带

析合树

不会

p

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

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

相关文章

智慧园区管理原型

智慧园区管理系统的构建是一个复杂而系统的工程,它融合了信息化、AI、物联网等多种先进技术,旨在提升园区的管理效率、服务质量以及企业运营效率。 一、明确系统目标和需求 需求收集与分析:首先,需要对园区的实际需求进行全面分析,包括园区类型(如产业园区、办公园区、住…

读数据湖仓07描述性数据

读数据湖仓07描述性数据1. 描述性数据 1.1. 基础数据中包含不同类型的数据,而不同类型数据的描述性数据也存在显著的差异 1.2. 尽管这些描述性数据存在根本性的差异,但通过描述性数据,我们可以全面了解基础数据中的数据 1.3. 通过分析基础设施中提供的描述性数据可以获得更详…

探索JVM的堆内存分布:官方图片展示

序章 截取Java官方的 堆内存分布相关图片 到本文。Java Platform, Standard Edition HotSpot Virtual Machine Garbage Collection Tuning Guide Java 21 https://docs.oracle.com/en/java/javase/21/gctuning/preface.html下载为 pdf,搜索 Figure,截取其中的 堆内存分布相关…

快乐数学3勾股定理延伸

3 勾股定理延伸 我们一直低估了勾股定理。上一章表明它适用于任何有平方项的公式。 3.1 理解该定理在任意直角三角形中如果 a=3 和 b=4,那么 c=5。很简单吧?那么,关键的一点是 a 和 b 成直角(注意小红框)。一个方向的移动对另一个方向没有影响。 这有点像南北与东西的关系…

Docker系列-超级详细教你Linux安装并使用docker compose,如何使用docker-compose安装sqlserver

docker compose是什么? Docker Compose 和docker功能一样,为了运行容器服务,但是docker compose比docker更好的一点是:允许你在一个 YAML 文件中定义多个容器及其配置,并通过一条命令启动和管理这些容器。 为什么要使用docker compose? 通过 Compose,您可以使用 YML 文件…

手把手非常详细图文并茂教你 Docker 部署 SQL Server

前提条件linux服务器 服务器装好了Docker 引擎 1.8 及更高版本 至少 2 GB 的磁盘空间 至少 2 GB 的 RAM搜索镜像 docker search mssql-server拉取镜像 找到适合你的版本,拉取镜像,下面这个是我从官方文档里直接找到的镜像哇~ docker pull mcr.microsoft.com/mssql/server:202…

git报错集

报错集 1.打标签报错 前戏:在开发了基础的项目功能后,在推送到远端仓库后,打算给提交的版本打标签,报错了 $ git push origin --tags fatal: unable to access https://github.com/ICP-team/仓库名.git/: Failed to connect to github.com port 443 after 21072 ms: Could…

财务知识-20个常用的会计分录

财务知识——20个常用的会计分录