qbxt2023国庆刷题 Day4 ~ Day5
本帖涉及以下内容:
- 超长内容
- 感性理解
- 思路引导
- 屑排版
- 恶意卖萌
Day4
没考,因为感觉题全是码农题,感觉有点烂
T1
然后你就
因为答案要取模,
因此我们要质因数分解,取最大质因子,复杂度
T2
爆搜即可
老师曰:一个题求从一个状态到另一个状态的最小步数的话,一般情况用
这题直接暴力对每个糖看往哪走,走几步就行
但有一个问题,你要怎么把这个状态记下来,防止搜到重复情况
一个非常暴力的做法就是把一张图记下来,但显然还有更优的做法。因为注意到所有的糖果,只能在一行或一列上移动,他的行或列是固定的,我么你只需要记录他会移动的一项即可,用一个二元组
T3
如果没有修改,这是一个非常显然的区间的子区间问题,可以扫描线+线段树历史区间和解决
但有了修改,而且
最常见的,我们记
但我们发现一个问题,
最终复杂度
还有一个做法:
- 若
时,只要看最后一位即可 - 若
时,看最后两位和三位 - 若
时,看和能否被 整除 - 若
时,缝合一下方法 1,2 - 若
时,缝合方法 1,3 - 若
时,把数从低到高三三分成一位,奇数位之和 偶数位之和 - 若
时,缝合方法 1,6
T4
考虑
老师曰:数位
都有一个非常共通的特点:都会记录一个考虑到第 位
设
可能不理解,举个例子就懂了:
糖: 23
顾客: 99
和: 122
22是回文,向高位进位了 1,因此 ++dp[2][1][0]
糖: 22
顾客: 99
和: 121
发现21并不是回文,但如果最低位之前往前进位一个 1 ,则变成22,是一个回文,因此 ++dp[2][1][1]
转移枚举左右两边填什么数,考虑进位
然后
然后还能怎么想?矩阵即可
前导零怎么办?算到
杂题选讲
图论四大板块:最短路,生成树,强连通,二分图
-
HDU4786
无向图,边黑白,求生成树,选的白边数量是斐波那契数列中的某项
tip1: 这题并不难
tip2: 对于生成树问题,通常要先求生成树,然后再改一改。但这题没有边权,因此我们给他定边权这题既然有黑边和白边,我们让黑边边权为
,白边边权为 ,求一遍最小生成树,能得到一个白边最多的生成树。设这棵树有 条白边。再做一次最大生成树,能得到白边最少的生成树,有 条白边。则 之间的所有斐波那契数都可取到
为什么呢?因为我们想让白边个数 ,我们肯定是让一条白边替换一条黑边,所以区间 都可以取到
复杂度线性。 -
如果白边少了,说明白边兴致不高,要奖励一下
如果改变多了,说明白边不乖,要惩罚一下
因此我们不妨对白边弄一个“惩罚值”,具体的,二分一个数 ,让所有白边的边权加上这个“惩罚值”,然后求最小生成树,判断白边数量是否为 即可
据说这个东西叫 二分 -
把和
相连的当做白边,没有的当做黑边,不就是上题吗?
但要输出方案。这会导致你惩罚值为 时答案为 , 时 ,显然你知道有 条白边的答案,但你无法恰好 条白边的方案
方法1:和出题人斗智斗勇。出题人卡你的原因是读入顺序搞怪,因此
方法2:还是随机,我们考虑随机扰动,对于第 条白边,令 ,只需要在实数二分答案即可
方法3:让相同的数分清严格大小,对于第 条白边,令 ,不会出现相同的值了 -
有一张无向图,边有权值但你不知道,但你知道
表示 经过的边权最小值最大是多少。让你找到一种给边附权的方法,使其满足 的性质走路径最小值最大,你一定走最大生成树,否则你的最大生成树就是假的了(
货车运输就是用的这个性质,非常重要,需要记住)
可你边权不知道,你没法求最大生成树,这是一个反向的思路。
对于一条 的边,附其权值为 ,跑最大生成树,检查赋值后能否满足这些数,是则 ,否则
因为对于 ,可以知道 ,否则就违反了条件
而如果 ,则在 的所有路径中,必然有一遍 满足 。如果 我们发现 也可以递归找到 满足 ,等等等等
但我们发现我们并不需要递归,因为如果直接让 使 ,这样其他路径就直接不用考虑了,因此这么干是正确的。 -
好像可做到数据范围很大,但超纲了
可能数据范围非常神奇, ,且只要保留两位小数,说明有一些奇技淫巧
枚举平均数,复杂度 ,发现一条边 求最小生成树即可
虽然最小生成树的平均数不一定是 ,但如果不是,一定不优
复杂度 -
里面有一个点让卡
和 优化
其中 会被卡到 -
矩阵,每次可以选一行或一列随便乘以一个实数,问能否使得所有数都在 之间tip1:刚讲了查分约束,因此这个题是一个查分约束题
tip2:唯一和大小关系有关的是**所有数在 内,因此我们考虑写出来,
tip3:查分约束是 的形式对于这题,我们把
变成 ,然后我们可取 即可差分约束可以解决的问题是不等式,因此我们对于不等式问题就要首先思考差分约束
-
有两种判负环做法- 常规做法:一个入队列
次 - 非常规做法:在判负环时,为了防止卡到
,我们跑到 就返回 即可
- 常规做法:一个入队列
-
设
表示从起点 恰好走 步方案数
,其中 的算法题目已经给出,复杂度
然后今天 也是矩阵优化,还是 ,因此矩阵优化老师曰:和
没关系,数据范围还很大的 一般都是矩阵优化但还没完,矩阵
是 的,复杂度 ,还是不可过
对邻接矩阵做矩阵乘法是一个非常经典的问题,既然这个做法做不了,我们就要思考题目的特殊性质,因为我们 没有用到复杂度里,也不知道为什么题目要求 ,因此我们要想尽办法把他于 关联
我们发现 ,我们发现 长得好丑,我们交换一下两个下标也无妨。
而矩阵 的第 项就是 ,因此
你以为我要用交换律吗?不! ,其中 得到的矩阵是 的,人类智慧
复杂度就变成了 ,足够通过 -
无向图,问有哪些边,在删掉它后图变为二分图
看图是否只由一个奇环构成,如果是,这个奇环上所有边都可以
然后你就错了
因为环套环,两个环的交边也是答案
我们参考 的思路,先跑 序,对于非树边,把树上与这条边相连的路径上标记 ,然后找标记有奇环个数的边即可
树上差分
非树边呢? -
二分图的最大独立集
二分图最大独立集 = 总点数 - 最大匹配
跑匈牙利老师曰:图的最大独立集是
问题,如果看到最大独立集问题,要想是否图为二分图 -
最大团:选尽可能多的点,使子图是完全图
求二分图最大团最大团和最大独立集是互补的问题
因此最大团 = 补图的最大独立集老师曰:图的最大团 是
问题,如果看到最大团 问题,要想是否补图图为二分图 -
被作为练习题
-
平面上
个点,找到最小距离 ,使存在 个点,他们两两距离
刚讲了最大团,发现这个就是找一个最小的
,使得存在 的团
显然答案有单调性,二分答案,建图,发现这个图和二分图没关系,遂寄掉
最大团中一定有两个最远的点,距离 ,因此我们不妨放弃二分答案,枚举这两个点 ,说明 且 ,说明我们要找的点一定在以 为圆心的圆内(注意这里并不是充要条件),我们连接 ,发现两个圆和直线往上的点是完全图,往下的点也是,而上下两两相连的点就有些 ,这个图的补图是一个二分图
Day5
T1
题目要求的即为把
细节1: 不能有前导零
细节2: 判断数时不可以超过桶的范围
T2
对于
对于
T3
从左到右 考虑(注意这个思路不只是适用于
根据
我们考虑
,这个显然 ,因为我们从低到高位取数,后面的一定不会影响低位的答案,而令 的条件就是
这两个性质有什么用呢?说明
最终复杂度
T4
若
考虑将图的每个点放到二维平面上。对于二维平面上坐标为
于是:
•
•
•
这是一个类似网格图的形式
考虑按
考虑按
我们需要额外枚举
根号分治,时间复杂度
下午数学讲解
-
的素数个数为 -
素性测试:对于测试的数 ,每次选在 之间的随机数,根据费马小定理 和 二次探测定理 判断
费马小定理:若 为质数, ,则
二次探测定理:若 为质数,则 的解为
虽然这两个定理存在一些数在 不为质数时依然成立,但当两个方法结合一起时出现概率极低
做法如下: 是偶数或 直接判断。 为大于 的奇数时,选取一个在区间 之间的随机数 a。- 计算
,不为 根据费马小定理直接判断 不是质数。 - 将
分解为 的形式,随机一个 ,计算 (0 ≤ k ≤ t) (先计算 再不断平方即可)。若在平方过程中发现一个不为 或 的数的平方为 ,则根据二次探测定理直接判断 不是质数。 - 若多次回到步骤
后还没有判断 不是质数,则认为 是质数。
-
- 先用
判素数,如果 不是质数,找一个因子 ,递归分成 和 - 简单的想法是随机一个
,暴力判断,期望 - 优化一下,如果
,则也找到了,期望 ,比直接分解质因数还要慢 - 考虑一个伪随机序列
,其中 ,注意,如果不是这个随机序列,反而可能会更慢,目前没有严谨证明。 - 因为这个随机数之和上一个数相关,因此很容易出现循环,循环期望长度为
,证明根据生日悖论 - 设
为 的最小质因子,显然 。由于 ,设 ,显然 ,期望循环长度 - 找到一对数
满足 且 ,则取 为 的因子 - 找
的过程可以用 判环算法 (注意和 没什么关系) ,让 ,每次让 走一步, 走两步,由于存在循环, 会在约循环节长度步后与 相等。当 与 在模 意义下相等(同余),且在模 意义下不同时,即找到了符合条件的 。若直到 a 与 b 在模 意义下相等时还没找到,则退出,重新选取 与 的值 - 复杂度期望
,其中 来自 - 我们也可以把
给去掉。在 移动过程中,不需要每次都求一遍 ,可以把 次 的值乘起来,再一起与 求 。当然,乘起来之后为 要特判。
- 先用
-
质因数分解多个小范围数:欧拉筛处理最小质因子,复杂度
-
可以用归纳法证明 ,因此不会爆 -
欧拉函数:
- 设
,则
-
光速幂:
- 对于底数和模数相同的情况,我们可以用分块的技巧,按
分块,计算出
- 对于底数和模数相同的情况,我们可以用分块的技巧,按
-
扩展欧拉定理:
- 阶乘逆元:
- 递推逆元:把
,显然有
变形知 , ,再把 真实的值带进去即可
- 阶乘逆元:
-
数论分块:
- 求
,若 的前缀和可以快速计算,就数论分块 - 考虑
有很多重复,因此可以分成 块 - 右端点
:也有 的情况,复杂度 (注意是加法)
- 求
-
原根:
- 一个数
,满足 ,而 - 如果
,则 。感性理解一下,对于一个数 ,每次我们让他 ,然后他就会一直在绕圈圈,最后绕到 ,因此环长一定是 的因数
求法没有听懂,好像要用 , 次剩余之类的高科技 - 原根数量是
- 例子:有多少个
满足- 不会
- 一个数
-
作业:
- NOIP2012 同余方程
- 洛谷 P1516 青蛙的约会
- 洛谷 P2568 GCD
- SDOI2012 Longge 的问题
- TJOI2009 猜数字
- SDOI2008 仪仗队
- NOI2002 荒岛野人
- CQOI2007 余数求和
- 洛谷 P6583 回首过去
- 洛谷 P4139 上帝与集合的正确用法
- CF594D REQ
- CF1202F You Are Given Some Letters...
- NOI2018 屠龙勇士
-
组合数:
- 范德蒙卷积(下指标卷积):
时: - 上指标卷积:
- 详情见这里
-
生成函数:
- 把一个序列变成一个函数,函数
。其中 为核函数。 普通生成函数; 指数型生成函数- 一些对序列的变换可以用生成函数的运算表示,从而进行一些推到,达到优化复杂度的做法
- 注意运算时要注意核函数相同
:
,其中 为指数型生成函数
计算 。(呃呃,老师讲不下去了)
- 把一个序列变成一个函数,函数
-
点带标号 计数,先考虑一个
:设 表示有 个点的 的方案数。我们可以枚举所有度数为 的点,然后向别处连边但这个
是错误的,因为我们发现如果我们某一次没有把度数为 的点全部钦定的话,那钦定 的度数的顺序会被多次计入答案。例子:2 1 3 1
其中
先连是一种方案, 先连是一种方案, 同时考虑也是一种方案
多算了怎么办。我们有两种办法:- 考虑在
中多记录状态 - 考虑容斥原理
此为后者
我们考虑现在我们算的其实是钦定了 个点度数为 ,而我们想要恰好 度数为 ,因此我们只需要给这个 乘上一个容斥系数即可。如果没有
的限制,显然插板子。有的话容斥,当钦定有 个板子超过时先把 先取出来即可,不要忘记乘上组合数 和容斥系数
:如果限制 的话,要 - 考虑在
-
考虑第
次操作对答案的贡献:&k!(K - k)!\binom{H+W-k}{K-k} \sum_{i=0}^{k} \binom{H}{i} \binom{W}{ k - i} (i + 1) (k-i+1) \
=&(k+1) \sum_{i=0}^{k} \binom{H}{i} \binom{W}{ k - i }+\sum_{i=0}^{k} i(k-i)\binom{H}{i} \binom{W}{ k - i } \
=&(k+1)\binom{H+W}{k} + HW\binom{H+W-2}{k-2} \
\end{align}复杂度
-
假如我们知道每行最小值
和每列 ,答案为:设
表示填了 中小于等于 的值,且已经填的行数为 ,列数为 时已填的位置对答案的贡献。
转移需要枚举加入的不被容斥的行数、不被容斥的列数、容斥的行数、容斥的列数,一起枚举复杂度过高,只要依次枚举,分四次转移即可。
复杂度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?