A - 打字练习

出题:memset0

送分模拟题,按题意模拟即可。

需要注意的是对退格键的判断,如果光标已经在行首,则直接忽略被读入的退格键。

B - 小猪佩奇爬树

出题:_QAQ

维护所有相同节点颜色的链并,若不构成一条链则显然答案为 $ 0 $ 。

若仅包含 $ 1 $ 个节点,则枚举所有子树大小进行统计。

否则即为链的 $ 2 $ 个端点所对子树大小的乘积。

C - 小猪佩奇玩游戏

出题:_QAQ & SPJ:memset0

容易发现可以将 $ {1,2,\dots,n} $ 进行分组,不同组别的答案是独立的。

举个栗子,对于 $ {1,2,3,4,5,6,7,8,9} $ ,可以将数字分为 $ {1},{3,9},{2,4,8},{5},{6},{7} $

容易发现这些组别之间互不干扰且互不影响,所以只需要计算每个组别独立的期望值并进行相加即可

那么最终答案即为

\[
\sum_{i=1}^{\infty} f_i \times g_i
\]

其中 $ f_i $ 表示大小为 $ i $ 的组别个数, $ g_i $ 表示大小为 $ i $ 的组别期望删除多少次,我们分别来计算

先来计算 $ f_i $ ,显然大小至少为 $ i $ 的组别个数为 $ \sqrt[i]{n} $

对于 $ 1 $ 个大小为 $ x $ 的组别,其为在大小为 $ y $ 的组别中出现 $ \lfloor \frac{x}{y} \rfloor $ ,所以可以考虑直接容斥计算,复杂度为 $ O(\log n^2) $

显然 $ i $ 最多只能取到 $ \log n $ ,所以 $ f_i $ 便很轻松地算出来了

考虑怎么算 $ g_i $ ,其实等价于给定数列 $ {1,2,\dots,i} $ ,每次删除 $ 1 $ 个数及其倍数

我们考虑一个等价类问题,枚举所有关于 $ i $ 的排列, $ x $ 会产生贡献当且仅当 $ x $ 的前面没有 $ x $ 的因子,那么根据概率的独立性, $ x $ 产生贡献的概率为 $ \frac{1}{\sigma(x)} $ ,因此有

\[
g_i=\sum_{x=1}^i \frac{1}{\sigma(x)}
\]

总复杂度为 $ O(T \log^2 n) $

D - 赛车游戏

出题:memset0

一道有意思的图论题。

对于一个点 $ u $ ,若不存在 $ 1 \rightarrow u $ 的路径或 $ u \rightarrow n $ 的路径,那么这个点对答案没有影响,可以直接忽略。

剩下的图一定是一个 DAG。因为如果有环,必定可以形成多条起点到终点的路径,使得无解。

考虑如何给一个 DAG 赋边权:由于每条 $ 1 \rightarrow n $ 的路径长度是相同的,那么每条 $ 1 \rightarrow i (i \in [1,n]) $ 的路径长度也是相同的。设为 $ dis_i $ ,跑差分约束即可。

时间复杂度即 SPFA 的时间复杂度 $ O(nm) $ ,实际上常数因子非常小。

此题的思路和代码都非常清新,只是 SPJ 和构造数据非常恶心,出题人表示体验极差。

E - 小猪佩奇学数学

出题:_QAQ

原式等价于

\[
\sum_{i=0}^n \binom n i \times p^{i} \times \frac{i-i\bmod k}{k} \bmod 998244353
\]

\[
\sum_{i=0}^n \binom n i \times p^{i} \times \frac{i}{k} -\sum_{i=0}^n \binom n i \times p^{i} \times \frac{i \bmod k}{k}\bmod 998244353
\]

考虑前半部分式子

\[
\sum_{i=0}^n \binom n i \times p^{i} \times \frac{i}{k}
\]

根据

\[
\frac{m}{n}\binom n m = \binom {n-1} {m-1}
\]

所以该式子等价于

\[
\frac{1}{kn} \sum_{i=1}^n \binom {n-1} {i-1} \times p^{i}
\]

\[
\frac{p}{kn} \sum_{i=0}^{n-1} \binom {n-1} {i} \times p^{i-1} \times 1^{n-i}
\]

根据二项式定理,即

\[
\frac{p}{kn}(p+1)^{n-1}
\]

对于后半部分式子容易发现 $ k \leq 2^{20} $ ,显然的思路是将数字按照对 $ k $ 的模数进行讨论

\[
\frac{1}{k}\sum_{i=0}^n \binom n i \times p^{i} \times (i \bmod k) \bmod 998244353
\]

\[
\frac{1}{k}\sum_{t=0}^{k-1} t\sum_{i=0}^n \binom n i \times p^{i} \times [i \bmod k = t] \bmod 998244353
\]

由单位根反演

\[
[i \bmod k = t]=\frac{1}{k}\sum_{c=0}^{k-1} w_k^{{(i-t)} \times c}
\]

代入原式,有

\[
\frac{1}{k}\sum_{t=0}^{k-1} t\sum_{i=0}^n \frac{1}{k}\sum_{c=0}^{k-1} w_k^{(i-t) \times c}\binom n i \times p^{i} \bmod 998244353
\]

\[
\frac{1}{k^2}\sum_{t=0}^{k-1} t\sum_{c=0}^{k-1}w_k^{-t \times c}\sum_{i=0}^n \binom n i w_k^{i \times c} \times p^{i} \bmod 998244353
\]

发现后半部分很像二项式定理,即

\[
\sum_{i=0}^n \binom n i w_k^{i \times c} \times p^{i}=\sum_{i=0}^n \binom n i w_k^{i \times c} \times p^{i} \times 1^{n-i}=(w_k^cp+1)^n
\]

那么原式等价于

\[
\frac{1}{k^2}\sum_{t=0}^{k-1} t\sum_{c=0}^{k-1}w_k^{-t \times c} (w_k^cp+1)^n \bmod 998244353
\]

发现后半部分为关于 $ w_k^{-t} $ 的 $ k-1 $ 次多项式,可以暴力多项式插值,但是这样太慢了

类似我们考虑将 $ w_k^{tc} $ 看作 $ w_k^{\binom {t+c}{2}-\binom t 2 - \binom c 2} $

那么原式等价于

\[
\frac{1}{k^2}\sum_{t=0}^{k-1} t^c\sum_{c=0}^{k-1}w_k^{-\binom {t+c}{2}+\binom t 2+\binom c 2} (w_k^cp+1)^n \bmod 998244353
\]

可以看作卷积的形式,那么只需要一次 NTT 就可以带走了,复杂度为 $ O(k \log k+k \log n) $

F - 美德的讲坛

出题:Isonan

算法1

我会爆搜!

复杂度 $ O(2^nq) $ ,期望得分 $ 20' $ 。

算法2

设 $ x $ 的最高位为 $ mx $ ,即 $ mx\in \mathbb{N},2^{mx}\le x < x^{mx+1} $ 。

我们把 $ a_i $ 按照 $ \lfloor{a_i\over 2^{mx}}\rfloor $ 分组。

容易发现组内两两异或和都是 $ < x $ 的。

对于 $ x=2^k,k\in \mathbb{N}​ $ 的部分分,我们发现分完组以后跨组的异或和全是 $ \ge x $ 的。

我们只要找到最大的组输出就行了。

复杂度 $ O(n+q) $ ,期望得分 $ 20' $ 。

算法3

对于一般情况,我们发现相邻组之间是有可能产生 $ < x $ 的异或和的。

那么我们的问题变成了:

现在有两组点,左边每个点有一个权值 $ a_i $ ,右边每个点有一个权值 $ b_i $ 。现在要在左右各选出一些点,使得两两异或和 $ < x $ 。

我们发现这个东东有点二分图的味道。那么是不是可以网络流呢?!

我们用如下方法建图:

源点向左边所有点连边,流量为 $ 1 $ 。

当 $ a_i\oplus b_j\ge x $ 时,左边点 $ i $ 向右边 $ j $ 连边,流量为 $ \infty $ 。

右边所有点向汇点连边,流量为 $ 1 $ 。

我们考虑这个图的最小割的意义。

如果 $ a_i\oplus b_j\ge x $ ,那么 $ i,j $ 之中必定要删掉一个。一个割表示的就是一个删除一些数字,使得剩下数字两两异或和均 $ < x $ 的方案。

那么我们要求的就是总点数-最小割。

复杂度 $ O(n^2q) $ ,期望得分 $ 30' $ 。

算法4

我们发现连边可以用 $ trie $ 树优化。

复杂度 $ O(n\sqrt{n}lognq) $ ,实现得好能得 $ 50' $ 。

(不是很会分析复杂度,大概是这样吧)

算法5

由于最大流=最小割,我们考虑从最大流的角度入手。

我们发现这个图的最大流也就是保留 $ a_i\oplus b_j\ge x $ 的边时,该二分图的最大匹配。

我们可以把这个问题搬到 $ trie $ 树上解决。

把所有数丢到 $ trie $ 树上。

设 $ solve(a,b,dep) $ 为 $ trie $ 树上以 $ a,b $ 为根的子树之间进行匹配,两棵子树的最大深度均为 $ dep $ 。

以下用 $ a0,a1,b0,b1 $ 表示 $ a/b $ 的左 $ / $ 右子树,用 $ |a| $ 表示 $ a $ 中点数。

当 $ x $ 在 $ dep $ 这一位上是 $ 1 $ 时,只有 $ a0 $ 和 $ b1 $ , $ a1 $ 和 $ b0 $ 可以匹配。

此时答案就是 $ solve(a0,b1,dep-1)+solve(a1,b0,dep-1) $ 。

当 $ x $ 在 $ dep $ 这一位上时 $ 0 $ 时, $ a0 $ 和 $ b1 $ , $ a1 $ 和 $ b0 $ 一定可以匹配。

\[
|a0| < |b1|\\
|a1| < |b0|
\]

\[
|a0|>|b1|\\
|a1|>|b0|
\]

时,答案显然是 $ \min(|a|,|b|) $ 。

否则,以

\[
|a0| < |b1|\\
|a1|>|b0|
\]

为例。

我们发现我们只需要额外考虑 $ a1 $ 和 $ b1 $ 的匹配。

答案即为 $ \min(solve(a1,b1,dep-1),b1-a0,a1-b0)+a0+b0 $ 。

这样基本就做完了。

我们发现单次修改的时候只会有 $ log $ 个节点被改动,每次只要把这些位置上的 $ solve $ 重新计算就好了。可以类似记搜解决。

复杂度 $ O((n+q)log^2V) $ ,期望得分 $ 100' $ 。

【LGR-060】洛谷10月月赛 I的更多相关文章

  1. 【LGR-054】洛谷10月月赛II

    [LGR-054]洛谷10月月赛II luogu 成功咕掉Codeforces Round #517的后果就是,我\(\mbox{T4}\)依旧没有写出来.\(\mbox{GG}\) . 浏览器 \( ...

  2. 洛谷10月月赛II题解

    [咻咻咻] (https://www.luogu.org/contestnew/show/11616) 令人窒息的洛谷月赛,即将参加NOIp的我竟然只会一道题(也可以说一道也不会),最终145的我只能 ...

  3. 洛谷10月月赛Round.3

    Rank11:260=60+100+100 P2409 Y的积木 题目背景 Y是个大建筑师,他总能用最简单的积木拼出最有创意的造型. 题目描述 Y手上有n盒积木,每个积木有个重量.现在他想从每盒积木中 ...

  4. 洛谷10月月赛Round.1| P3398 仓鼠找sugar[LCA]

    题目描述 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而他的基友同时要从他的卧室(c) ...

  5. 洛谷10月月赛Round.1| P3400 仓鼠窝[单调栈]

    题目描述 萌萌哒的Created equal是一只小仓鼠,小仓鼠自然有仓鼠窝啦. 仓鼠窝是一个由n*m个格子组成的行数为n.列数为m的矩阵.小仓鼠现在想要知道,这个矩阵中有多少个子矩阵!(实际上就是有 ...

  6. 洛谷10月月赛Round.1| P3399 丝绸之路 [DP]

    题目背景 张骞于公元前138年曾历尽艰险出使过西域.加强了汉朝与西域各国的友好往来.从那以后,一队队骆驼商队在这漫长的商贸大道上行进,他们越过崇山峻岭,将中国的先进技术带向中亚.西亚和欧洲,将那里的香 ...

  7. 【LGR-060】洛谷10月月赛 I div.1&div.2

    Preface 一边打一边写作文打的像shit,T2失智严重特判错了233 Orz Div1 Rank2的foreverlastnig聚聚,顺便说一句显然Luogu的比赛质量比以往显著提高了啊 以下题 ...

  8. 洛谷10月月赛R2·浴谷八连测R3题解

    早上打一半就回家了... T1傻逼题不说了...而且我的写法比题解要傻逼很多T T T2可以发现,我们强制最大值所在的块是以左上为边界的倒三角,然后旋转4次就可以遍历所有的情况.所以二分极差,把最大值 ...

  9. 洛谷 4933 洛谷10月月赛II T2 大师

    [题解] f[i][j]表示最后一个数为h[i],公差为j的等差数列的个数.n方枚举最后一个数和倒数第二个数转移即可.注意公差可能为负数,需要移动为正数再作为下标. #include<cstdi ...

  10. 洛谷 4932 洛谷10月月赛II T1 浏览器

    [题解] x xor y的结果在二进制下有奇数个1,等价于x与y在二进制下的1的个数之和为奇数,因为x xor y减少的1的个数一定是偶数(两个数这一位都为1,xor的结果为0,减少了2个1) 那么答 ...

随机推荐

  1. 【shell脚本】打印九九乘法表

    打印九九乘法表 一.seq介绍 seq命令用于以指定增量从首数开始打印数字到尾数,即产生从某个数到另外一个数之间的所有整数,并且可以对整数的格式.宽度.分割符号进行控制 语法: [1] seq [选项 ...

  2. linux软链接

    这是linux中一个非常重要的命令,他的功能是为某一个文件在另一个位置建立一个同步的链接,这个命令最常用的参数是-s, 具体用法是: ln -s 源文件 目标文件 当我们需要在不同的目录,用到相同的文 ...

  3. Prism——Window 必须是树的根目录。不能将 Window 添加为 Visual 的子目录。

    这个错误就是作为Region的view添加时选成了界面,正确的应在添加时选择用户控件. 解决方法: 这俩处的Window改为UserControl即可.

  4. 三维网格补洞算法(Poisson Method)(转载)

    转载:https://www.cnblogs.com/shushen/p/5864042.html 下面介绍一种基于Poisson方程的三角网格补洞方法.该算法首先需要根据孔洞边界生成一个初始化补洞网 ...

  5. Java中配置文件的三种配置位置及读取方式

    XML 和properties properties: 1.存放于src根目录下 //获取到同包下的资源文件,将其转换成流对象 //InputStream is= PropertiesDemo.cla ...

  6. 前端开发HTML5——函数

    20.函数的调用方式(内容尚未完全,可自行百度这方面的知识) call().apply().bind() 这三个方法的作用都是改变执行环境中的this指针的指向   call()与apply() 这两 ...

  7. js 设计模式——代理模式

    代理模式 代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问. 生活中有很多的代理模式的场景.例如,明星有经纪人作为代理,老板有秘书作为代理等等,当有事情的时候,会找到经纪人或秘书,再由他 ...

  8. Spring登录实例

    Spring登录实例 项目结构 首先看一下整个项目的目录结构,如下: 导入Jar包 工欲善必先利其器,导入一下Jar包 配置文件 web.xml 配置 web.xml配置文件,如下: xmlns:xs ...

  9. 你所不知的 PHP 断言(assert)

    PHP 中的断言常用于调试,检查一个表达式或语句是否为 FALSE.本文带你重新认识 PHP assert() 函数的神(Qi)通(Yin)广(Ji)大(Qiao). 本文基于 PHP Version ...

  10. Oracle使用命令行登录提示ERROR: ORA-01017: invalid username/password; logon denied

    刚在Windows上面安装好Oracle 10g,刚开始使用PLSQLDevelop软件登录提示  not logged on ,然后使用命令行登录提示 ERROR: ORA-01017: inval ...