这场比较平凡吧 .

省流:

http://zhengruioi.com/contest/1087

目录

时间复杂度瞎算的 .

A. Gene

题面

俩字符串 \(s,t\),在 \(s\) 中加点字符,使 \(t\) 是 \(s\) 的子串 .

插字符 \(ch\) 有代价 \(c_{ch}\) .

字符集 \(\{\texttt A,\texttt C,\texttt G,\texttt T\}\) .

题解

算法一(正解)

考虑 dp,令 \(dp_{i,j}\) 表示 \(s\) 以 \(i\) 结尾的后缀与 \(t\) 相等的最小代价 .

转移考虑丢掉(换一个)或接续即可 .

时间复杂度 \(O(|S||T|)\),可以滚动数组 .

算法二

扫一遍 \(s\),暴力匹配 \(t\),如果失配了就加字符 .

是不是非常简单,和那个 dp 时间复杂度一模一样 .

时间复杂度 \(O(|S||T|)\) .

B. Fight

题面

为了争夺金坷垃, \(n\) 个人要打 \(m\) 场架,第 \(i\) 场是第 \(a_i\) 个人和第 \(b_i\) 个人打。

主办方突然想把这些人分成日日阵营和非非阵营(每个人都属于某一个阵营),使得只有阵营间的人会打架。但是安排已经决定,要更改安排需要时间。

你需要求出在最优的阵营划分方案中,出现两个相同阵营的人的战斗最晚是在哪一场。(数据保证一定会出现这种情况)

题解

算法一(正解)

种类并查集,非常容易 .

时间复杂度 \(O(n\alpha(m))\) .

算法二

考虑二分答案,于是问题变成判定是否可以划分阵营 .

等价于二分图判定,黑白染色即可 .

时间复杂度 \(O((n+m)\log m)\) .

算法三

依然二分答案 .

然后可以 2-SAT 做,有个老哥这么干 \(80pts\) 超时了(悲) .

时间复杂度 \(O((n+m)\log m)\) .

C. Pastry

题面

\(n\) 个宽度相同的块相邻摆放 .

将第 \(i\) 个块 \(a_i\) 等分,问有多少个本质不同的分界点 .

题解

算法一(SoyTony)

令 \(m =\max\{a_i\}\)

拆一下 .

考虑 \(f(x)\) 表示 \(x\) 与 \(x\) 的所有约数的分界点不同的个数 .

然后可以枚举因子 \(O(m\log m)\) 递推 .

然后对于每个 \(a_i\) 把她和她的约数(去重)的 \(f\) 全加起来就好了 .

这一步枚举因子是 \(O(m\log m)\) .

总时间复杂度 \(O(m\log m)\) .


关于 \(f\) 的一些研究

这个 \(f\) 的表达式是

\[f(n)=\begin{cases}0&i=1\\n-1+\sum_{d\mid n, d\neq n}f(d)\end{cases}
\]

通过打表得到 \(f(n)=\varphi(n)-[n=1]\),回代也发现成立

过程

众所周知 \(\displaystyle \sum_{d\mid n}\varphi(n)=n\) .

于是带入,得

\[\varphi(n)-[n=1]=n-1+\sum_{d\mid n, d\neq n}(\varphi(n)-[n=1])
\]

这个 \(\sum\) 有两个非常鬼畜的东西,一个是 \(d\neq n\),一个是 \([n=1]\) .

把 \(1,n\) 单独处理得

\[\begin{aligned}\varphi(n)-[n=1]&=n-1-(n-\varphi(n)-[n=1])\\&=\varphi(n)-1+[n=1]\\&=\varphi(n)-[n=1]\end{aligned}
\]

恒成立 .

能否从递推式直接得到通项还是未解之谜 .

破案了,从 Dirichlet 卷积的角度看 .

FZ 神仙的做法

令 \(g(x) = f(x)-[n=1]\) .

于是

\[g(n)=n-\sum_{d\mid n,d\neq n}g(d)
\]

\[\sum_{d\mid n}g(d) = n
\]

即 \(g*I=\mathrm{id}\),显然 \(g=\varphi\) .

从而 \(f(x)=\varphi(x)-[n=1]\) .

wangrx 神仙的做法

直接写成 Dirichlet 卷积形式,

\[f = \mathrm{id}-I-(I*f-f)
\]

化简得

\[I*f=\mathrm{id}-I
\]

因为 \(I^{-1}=\mu\),于是

\[\begin{aligned}f&=I^{-1}(\mathrm{id}-I)\\&=\mu* \mathrm{id}-I^{-1}*I\\&=\varphi - \varepsilon\end{aligned}
\]

即 \(f(x)=\varphi(x)-[x=1]\) .

其他

《贝尔级数》

《狄利克雷生成函数》

于是似乎就可以线性筛了(?)然而复杂度不变 qwq .

大概这种含 \(\displaystyle\sum_{d\mid n}\) 的东西就向 Dirichlet 卷积靠吧 .

D. Conference

题面

给一个序列 \(\{a_n\}\) .

对于每个 \(1\le s\le n\) 回答询问:

  • 最小的使得序列 \(\left\{\left\lfloor \dfrac{a_i}k\right\rfloor\right\}\) 存在 \(s\) 个重复元素(最多)的 \(k\)(若不存在输出 -1

题解

算法一(SoyTony)

众所周知 \(\left\lfloor \dfrac nk\right\rfloor\) 只有 \(O(\sqrt n)\) 个取值 .

然后整除分块出每个 \(a_i\) 的取值块左端点并丢到一个 std::set 里 .

然后遍历那个 std::set 算一下情况下有多少个相同元素就完了 .

时间复杂度 \(O(玄学_1\sqrt{玄学_2}\log 玄学_3)\) .

丽泽普及2022交流赛day16 社论的更多相关文章

  1. 丽泽普及2022交流赛day21 社论

    A 暴力 . greater<double> -> greater<int> \(100\) -> \(50\) 代码丢了 . B dp . 考场上代码抢救一下就过 ...

  2. 丽泽普及2022交流赛day18 社论

    A 暴力扫一遍 B 算法 0 似乎是二分 算法 1 随便贪心 C 算法 1 枚举一个点作为最大值 / 最小值,用单调栈维护其作为答案的左右端点即可轻易计算 . 时间复杂度 \(O(n)\) . 算法 ...

  3. 丽泽普及2022交流赛day17 社论

    http://zhengruioi.com/contest/1088 SoyTony 重新 rk1 . stO SoyTony Orz 省流:俩计数 . 目录 目录 A 题面 题解 Key 算法 1( ...

  4. 丽泽普及2022交流赛day15 社论

    前言 link 太牛逼了,补完我一定放代码 . orz 越看越牛逼 orz . 时间复杂度都是口胡,不要信 . 以下是目录 目录 目录 前言 A 题面 题解 代码 B 题面 题解 代码 C 题面 题解 ...

  5. 丽泽普及2022交流赛day20 1/4社论

    目录 T1 正方形 T2 玩蛇 T3 嗷呜 T4 开车 T1 正方形 略 T2 玩蛇 略 T3 嗷呜 (插一个删一个?) 找出相同的,丢掉循环节 . 感觉非常离谱,,, 正确性存疑 正确性问 SoyT ...

  6. 丽泽普及2022交流赛day22 无社论

    开始掉分模式 . T3 有人上费用流了???(id) 不用 TOC 了 . T1 暴力 T2 没看见 任意两圆不相交,gg 包含关系容易维护,特判相切 . 单调栈即可 T3 贪心 T4 神秘题

  7. 丽泽普及2022交流赛day19 半社论

    目录 No Problem Str Not TSP 题面 题解 代码 Game 题面 题解 代码 No Problem 暴力 Str 存在循环节,大力找出来即可,长度显然不超过 \(10^3\) . ...

  8. 丽泽普及2022交流赛day14

    目录 A 题面 题解 B 题面 题解 C 题面 题解 D 题面 题解 A 题面 一个 \(1\dots n\) 的排列 \(p\) 和一个 \(1\dots n-1\) 的排列 \(q\) 满足 对排 ...

  9. 记:青岛理工ACM交流赛筹备工作总结篇

    这几天筹备青岛理工ACM交流赛的过程中遇到了不少问题也涨了不少经验.对非常多事也有了和曾经不一样的看法, ​一直在想事后把这几天的流水帐记一遍,一直没空直到今天考完C++才坐下来開始动笔.将这几天的忙 ...

随机推荐

  1. 用简单的 Node.js 后台程序浅析 HTTP 请求与响应

    用简单的 Node.js 后台程序浅析 HTTP 请求与响应 本文写于 2020 年 1 月 18 日 我们来看两种方式发送 HTTP 请求,一种呢,是命令行的 curl 命令:一种呢是直接在浏览器的 ...

  2. django 备件管理系统

    views 1 class limit: 2 3 def limit(self,res,obj): 4 limit = int(res.GET.get('limit',1)) 5 pagelimit ...

  3. 219. Contains Duplicate II - LeetCode

    Question 219. Contains Duplicate II Solution 题目大意:数组中两个相同元素的坐标之差小于给定的k,返回true,否则返回false 思路:用一个map记录每 ...

  4. 一文带你搞懂 Kafka 的系统架构(深度好文,值得收藏)

    Kafka 简介 Kafka 是一种高吞吐.分布式.基于发布和订阅模型的消息系统,最初是由 LinkedIn 公司采用 Scala 和 java 开发的开源流处理软件平台,目前是 Apache 的开源 ...

  5. 好客租房45-react组件基础综合案例-6边界问题

    边界问题 //导入react import React from 'react' import ReactDOM from 'react-dom' //导入组件 // 约定1:类组件必须以大写字母开头 ...

  6. 学习Java的第十六天——随机数

    学习内容:随机数 1.GetEvenNum()方法 实例代码: package 数字处理类; public class MathRondom {public static int GetEvenNum ...

  7. git bisect:让你闭眼都能定位疑难 bug的利器

    摘要:git bisect命令使用二分搜索算法来查找提交历史中的哪一次提交引入了错误.它几乎能让你闭着眼睛快速定位任何源码导致的问题,非常实用. 本文分享自华为云社区<利用好 git bisec ...

  8. sort是不稳定排序

    今天才知道sort是不稳定的,WA了一个点. sort()排序不是稳定排序,sort是主要用到了快速排序(平均时间复杂度为O(nlogn)),还结合了插入排序(时间复杂度为O(n2))和堆排序(时间复 ...

  9. 【抬杠C#】如何实现接口的base调用

    背景 在三年前发布的C#8.0中有一项重要的改进叫做接口默认实现,从此以后,接口中定义的方法可以包含方法体了,即默认实现.不过对于接口的默认实现,其实现类或者子接口在重写这个方法的时候不能对其进行ba ...

  10. 测试人生 | 薪资翻倍涨至50W是种什么样的体验?

    本文为霍格沃兹测试开发学社优秀学员跳槽笔记,测试开发进阶学习文末加群. 本人已经工作7年了,做的都是功能测试以及写一些简单的自动化脚本,加上之前没有学习的意识,导致专业技术水平与工作年限不匹配,在上家 ...