• 【2022March】杂题乱写


    CF1622F

    \(n=2k\),可以得到

    \[\prod_{i=1}^n i!=\prod_{i=1}^k 2i\times\left((2i-1)!\right)^2 \]

    所以要考虑的本质上是 \(2^{\lfloor\frac{n}2\rfloor}(\lfloor\frac{n}2\rfloor)!\),直接判定这两者是不是完全平方数并哪项不是删掉即可

    对于 \(n=2k+1\) 的情况,最多也只会删掉 \(n!,2!,(\lfloor\frac{n}2\rfloor)!\) 三项,那么先判定序列是不是能删掉 \(0/1/2\) 项来做到合法,否则直接给出构造

    考虑给每个质因子一个随机权值,那么合数的权值就是其所有出现次数为奇数的质因子权值异或和,判定是不是存在一个 \(x!\) 的权值是 \(n!\) 以及是不是存在一个 \(x!\) 的权值是 \(n!\ \oplus\ y!\ (y\in [1,n])\) 即可

    设随机向量长度为 \(B\) 时,一个不是完全平方数的数字被异或成了完全平方数的概率是 \(\left(\frac{1}2\right)^B\),本质上是 \(\sum\limits_{x\in\{even\}}\binom{n}x=\sum\limits_{x\in\{odd\}}\binom{n}x\),其中 \(n\) 是某个数字中出现奇数次质因子的数量

    \(|S|=n-2\)\(\frac{n!}{y!}=x!\)\((x,y)\)\(n^2\) 种,那么正确率就是 \(\left(1-\frac{1}{2^B}\right)^{n^2}\),在 \(B=64\) 而非 \(32\) 时才可以得到较高正确率

    Luogu4240

    原式进行简单的和式变换就可以得到:

    \[\sum_{i=1}^{\min(n,m)}\sum_{j|i} \mu\left(\frac{j}i\right)\frac{j}{\varphi(j)}F(i,\left\lfloor\frac{n}i\right\rfloor)F(i,\left\lfloor\frac{m}i\right\rfloor) \]

    其中 \(F(n,m)=\sum\limits_{i=1}^m\varphi(in)\)

    处理 \(F(n,m)\) 能做到 \(\Theta(Qn)\) 复杂度,但是其实 \(i\) 比较大的时候要求的东西在每个询问中都是差不多的,所以预处理 \(x\in[1,B],y\in[1,B]\) 的所有 \(F(n,x),F(n,y)\) 的乘积并前缀和,每次询问对于 \(i\le \left \lfloor\frac nB\right \rfloor\) 的部分暴力,剩下的整除分块即可

    ARC104E

    由于 \(n\) 实在是太小了,枚举其全排列,对于 \(p_i>p_{i+1}\) 那么限制是 \(a_{p_i}\ge a_{p_{i+1}}\),否则严格大于

    这时候每个位置的选值集合就是本身上界减去前面严格大于的数字,同时还要做后缀 \(\min\)

    现在限制变成了大于等于,可以使用格路计数的容斥来做,设上界分别是 \(a_1\sim a_n\)\(f_i\) 表示走到了横坐标为 \(i\) 的列的方案数(不限制纵坐标),转移就是枚举第一次超出界限的位置即可

    显然要暴力算组合数,因为 \(n\) 实在是太小了

    CF718E

    不难观察到图的直径不超过 \(15\),预处理 \(f_{i,c},g_{c_1,c_2}\) 分别表示 \(i\) 到颜色 \(c\) 最近的距离和颜色为 \(c_1\) 某点到颜色为 \(c_2\) 某点的最短路

    不难发现一对 \((i,j)[i<j]\) 的最短路就是 \(\min\limits_{c}\left\{f_{i,c}+f_{j,c}+1,j-i\right\}\)

    对于 \(j-i\le 15\) 的情况,选择的中转颜色的点可能是同一个,再 \(+1\) 可能产生错误,那么直接冲暴力

    否则观察到 \(f_{i,c}=g_{col_i,c}/g_{col_i,c}+1\)

    否则枚举 \(j\) 考虑小于之并且距离之至少为 \(16\) 的所有 \(i\),使用二进制状压他们的 \(f_{i,c}-g_{col_i,c}\),这些 \(i\) 的另外一个属性是他们的颜色

    对于两个属性都相同的 \(i\)\(j\) 是相同的,计算即可

    CF997E

    扫描线,一个区间是好区间的条件是 \(\max-\min-(r-l)=0\),使用两个单调栈分别维护最小/最大值,区间加增量即可

    要求的是历史权值之和,使用一个全局加权值的操作实现

    由于 \(i\) 处是 \(0\) 致使全局最小值也是 \(0\),那么 “加权值” 的判定就是子区间最小值是大区间最小值

    一开始并没有注意到加权值的判定条件,那么写了个暴力过掉了所有 Codeforces 数据,不得不震惊

    Luogu7515

    先给 \(A_{i,j}\) 任意赋值使得和满足条件,但是不一定在限制的值域之内

    定义一种操作 \(\pm\) 表示给行/列上奇数点加 \(1\),偶数点减一,另一种 \(\mp\) 表示给奇数点减,偶数点加,通过上面的操作不会改变 \(2\times 2\) 的正方形的权值和

    \(i\) 行上操作进行 \(c_i\) 次,\(j\) 列上 \(d_j\)

    我们给奇数行/偶数列做 \(\mp\) ,偶数行/奇数列做 \(\pm\),这样子满足了每个 \(2\times 2\) 的小矩形都是和不变的

    那么限制这时候变成了 \(0\le A_{i,j}\pm c_i\mp d_j\) 的形式,使用 ckmax 式差分约束可以在 \(\Theta(n^3)\) 复杂度里面实现

    UOJ 数据很猛,所以还是要把正环长度缩小再跑(正环长度不超过 \(50\) 就离谱)

    Luogu7516

    对于一个给定的图 \(G\) 如果 \(i\) 在正图和反图上都能经过不小于 \(i\) 的点到达 \(\ge i\) 的点 \(j\),那么 \(i\) 会对 \(f(j,G)\) 造成贡献

    使用 \(\rm Floyd\) 来算上面的东西,边权变成了每条边现在的标号,目的就是最大化 \(\rm arg\min\)

    注意根据实际含义是要倒序枚举中转点的,这时候 \(f_{i,j}(i<j)\) 是正图可达,\(f(j,i)\) 是反图可达

    Luogu7520

    定义点 \(x\) 在有向图上的受支配集为题目说的点集去掉 \(x\),一个点在支配树上的父亲是它受支配集中受支配集最大的一个

    不难先暴力算受支配集,再使用拓扑排序状物来求支配树

    每个点的受支配集变化有 其支配树上父亲受支配集变化 和 存在绕过父亲到达之的路径 两种形式

    注意不存在一个点满足 “在原图的受支配集里面所有点的受支配集不变的情况下,产生了路径满足经过父亲但是绕过受支配集中其它一个点到达之”(证明是容易的)

    那么只需要对每个点判定是不是产生了绕过 \(fa_x\) 的路径即可

    求出来 \(acc_1[x][y]\) 表示 \(x\) 禁止经过后 \(y\) 是不是从 \(1\) 可达以及 \(acc_2[x][y]\) 表示 \(fa_x\) 禁止经过后 \(y\) 是不是从 \(x\) 可达即可

  • 相关阅读:
    PVLAN 简介
    SFP光模块与SFP+、XFP、QSFP、GBIC、BIDI的区别
    IP防护等级简介
    工业交换机和普通交换机的区别
    博客园 添加 “返回顶部” 按钮
    Linux SHELL中sh和bash的区别
    vpshere6 ESXI 禁止登陆 "执行此操作的权限被拒绝"
    python icmpdnshttp监控网络各个节点状态,并记录日志
    Python Threading问题:TypeError in Threading. function takes 1 positional argument but 100 were given
    django信号
  • 原文地址:https://www.cnblogs.com/yspm/p/15933276.html
Copyright © 2020-2023  润新知