首页 > 其他分享 >2023-5-4 #53 弥留之际仍思索如何修饰这文章

2023-5-4 #53 弥留之际仍思索如何修饰这文章

时间:2023-05-04 22:12:23浏览次数:53  
标签:log cdot 复杂度 53 子集 2023 弥留之际 omega 2n

338 loj#6296. 迷失的字符串

粘一个之前写的题解。

考虑一个串时的做法,令 \(f_{x,i}\) 为是否存在一条从 \(x\) 出发并进入 \(x\) 子树的路径为以 \(i\) 结束的前缀,\(g_{x,i}\) 为是否能匹配以 \(i\) 开始的后缀,转移为:

\[f_{x,i}\leftarrow\or_{y\in son(x)} (f(y,i-1)\and [(x,y)=s_i])\\ g_{x,i}\leftarrow\or_{y\in son(x)} (g(y,i+1)\and [(x,y)=s_i]) \]

可以使用 bitset 优化至 \(O(\frac{n|S|}{\omega})\),多个串只需拼接在一起做上述算法,复杂度一样。

再说一个 \(O(n\sqrt n)\) 的做法。

对原树进行点分治,对当前点分治到的子树大小进行根号分治:

若子树大小小于 \(B\),那么我们在询问串的 trie 上暴力标记这些串,复杂度 \(O(nB+\sum|S|)\)。

若子树大小大于 \(B\),我们可知这样的点不超过 \(\frac{n}{B}+\frac{n}{2B}+\cdots=O(\frac{n}{B})\) 个,我们预处理分治中心到每个位置的字符串存到哈希表里,然后枚举分支中心处于每个询问串的位置查一遍哈希表即可,复杂度 \(O(\frac{n}{B}\sum|S|)\)。

总复杂度 \(O(n\sqrt n)\)。(令 \(n,\sum|S|\) 同阶)

339 P9248 [集训队互测 2018] 完美的集合

不知道为啥要有前面的包装。

完美集合的处理无非钦定一个在完美集合里的点并做 dfs 序上的背包,并使用点减边容斥来修正贡献的计算。

重点在计算:

\[{n\choose k}\bmod 5^{23} \]

类似 exLucas,我们把问题转化成求 \(g(n)\)(表示 \(n!\) 中 \(5\) 的出现次数)以及 \(f(n)=\frac{n!}{5^{g(n)}}\)。

重点在后面的计算,我们记 \(F_n(x)=\prod_{i=1}^n(k+i)^{[i\perp 5]}\)(所求即 \(F_n(0)\)),有如下事实:

\[F_{10n}(0)=F_{5n}(0)F_{5n}(5n) \]

注意到若展开 \(F_{5n}(x)\),我们仅需维护多项式的前 \(23\) 次项。

于是我们每次通过手动乘 \(O(1)\) 个单项式转化为求 \(F_{10n}(0)\),再使用上述方法递归求解即可。

340 P9247 [集训队互测 2018] 完美的队列

还不会。

2023 Hubei Provincial Collegiate Programming Contest,打一半打雀去了,A 与 D 没写。

341 D Darkness II

显然只需维护长方形之间的合并,也就是做插入/删除矩形,以及查询一个与给定矩形有交的矩形编号。

对 \(x\) 维建立线段树,\(x\) 维交的限制可以用类似 P7312 [COCI2018-2019#2] Sunčanje 使用线段树处理。

对 \(y\) 维扫描线,矩形按照 \(y\) 左端点顺序插入进线段树,每个线段树结点维护一个有序区间集合,注意每次插入都是 pushback,合并是类似单调栈的,复杂度 \(O(n\log n)\)。

342 E Inverse Counting Path

首先有一个 \(2\log V\) 的构造:二进制分解,构造一些 \(2\times 2\) 的小正方形依次摆放使得到第 \(i\) 个正方形的右下角方案数为 \(2^i\),然后引一些路径到边缘,最后顺着边缘走下来。

二进制由于需要衔接小正方形,会造成一些冗余,考虑使用 \(3\times 3\) 的小正方形,左上角与右下角重合,使用六进制进行构造即可。六进制表示需要乘一个 \([1,5]\) 内的系数,在汇入边缘的位置进行一些处理即可。

343 G Guess the Polynomial

\江莉/

对着官方题解复读一下。

经典地使用倍增,我们假设已经得知 \(A=F(x)\bmod x^n\),想要推出 \(B=F(x)\bmod x^{2n}\)。

也就是将 \([x^i]A(x)\) 的系数拆成 \([x^i]B(x)\) 与 \([x^{n+i}]B(x)\),注意到系数总和不超过 \(998244353\),\(B\) 中非零的位置一定对应 \(A\) 中非零的位置,于是我们只需维护多项式非零位置。

多项式忽略掉某项贡献不好做,我们尝试通过配系数求出 \(C_k=[x^k]B(x)-[x^{n+k}]B(x)\),使用单位根反演的技巧能得到(这里我想了下,感觉能直接单位根反演提取 \([x^k]\) 系数,目前还不知道为啥要按照题解的这个做法):

\[[x^k]B(x)-[x^{n+k}]B(x)=\frac 1n\sum_{i=0}^{n-1}f(\omega_n^i\omega_{2n})\omega_n^{-ik}\omega_{2n}^{-k} \]

可以列出:

\[\begin{bmatrix}\omega_n^{0\cdot 0}&\omega_n^{0\cdot 1}&\cdots&\omega_n^{0\cdot(n-1)}\\\omega_n^{1\cdot 0}&\omega_n^{1\cdot 1}&\cdots\omega_n^{1\cdot(n-1)}\\\vdots&\vdots&\ddots&\vdots\\\omega_n^{(n-1)\cdot 0}&\omega_n^{(n-1)\cdot 1}&\cdots&\omega_n^{(n-1)\cdot(n-1)}\end{bmatrix}\times\begin{bmatrix}C_0\omega_{2n}^0\\C_1\omega_{2n}^1\\\vdots\\C_{n-1}\omega_{2n}^{n-1}\end{bmatrix}=\begin{bmatrix}f(\omega_n^0\omega_{2n})\\f(\omega_n^1\omega_{2n})\\\vdots\\f(\omega_n^{n-1}\omega_{2n})\end{bmatrix} \]

该运算明显可以保留所有有值的

344 L Game

别急。

345 CFgym102412B Alexey the Sage of The Six Paths

假设度数序列不变应该如何处理,此时代价固定,只需判定是否有解。

假设最小的最大匹配为 \(L\),最大的最大匹配为 \(R\),我们断言能构造出所有 \([L,R]\) 内的最大匹配大小,构造很简单,任取两个度数非零的非匹配点 \(a,b\),取出其连向的任意两个匹配点 \(u,v\),拆掉 \((a,u),(b,v)\) 连上 \((a,b),(u,v)\) 即可。

\(R\) 好求,左右两部非零点贪心连一下即可,重点在如何求 \(L\)。

使用 Hall 定理,最大匹配大小为 \(|X|+\min_{S\subseteq X}(|N(S)|-|S|)\)(\(X\) 为左部点集合),也就是找到一个 \(X\) 的子集满足 \(|X|+|N(S)|-|S|\) 最小。我们枚举 \(N(S)\),只需找到连边都在其内部的最大 \(|S|\),那么其只要求 \(S\) 度数和小于等于枚举的集合,可以 dp 记录左右部点集合大小,子集和进行判定。

如果度数序列不固定,我们考虑对度数序列进行 dp 的过程中记录上面的子集信息,设计一个 dp 求出数组 \(g_{i,j,k}\) 表示左部钦定了 \(i\) 个点,钦定度数和为 \(j\),有 \(c\) 个非零度数点,然后枚举两边信息 \(O(n^6)\) 合并即可。

346 CFgym102412C Steel Ball Run

带权重心一定是 dfs 序带权中点的祖先,倍增判定是否合法即可,复杂度 \(O(n\log^2 n)\)。

347 CFgym102412D The Jump from Height of Self-importance to Height of IQ Level

shift 操作要求我们使用平衡树维护,考虑怎么合并信息。

题意就是要求不存在一个点既不是前缀最小值,又不是后缀最大值,我们对于一个区间维护最小值 \(mn\),最大值 \(mx\),非前缀最小值的最小值 \(mx\),非后缀最大值的最大值 \(smx\)。

若左区间 \(mn\) 小于右区间 \(smx\),或是左区间 \(smn\) 小于右区间 \(mx\),则不合法。考虑怎么合并 \(smn\),此时由于合法,左区间 \(smn\) 大于右区间 \(mx\),于是合并后的值要么从原来的 \(smn\) 贡献而来,要么等于右区间内大于左区间 \(mn\) 的最大值,这个可以类似楼房重建线段树进行二分。

复杂度 \(O(n\log^2 n)\)。

348 CFgym102412E Minimums on the Edges

赋予权值组合意义,对于所有权值 \(x\),取出权值大于等于 \(x\) 的子集。也就是我们要取出若干互相包含的子集,所有子集大小和为 \(s\),权值是每个子集导出子图边数和,可以直接 dp 做到 \(O(2^nns)\)。

事实上可以发现,我们忽略子集互相包含限制求出的答案仍然正确,因为若答案存在两个不包含的集合 \(A,B\),将其替换为 \(A\cup B,A\cap B\) 不劣,于是每个子集大小求出权值最大子集即可,复杂度 \(O(2^nn+ns)\)。

349 CFgym102412L Yet Another Mex Problem

dp,移动右端点维护所有左端点对应的 mex 值,这是经典的颜色段均摊,不过那题我好像也没有记录,所以还是写一下!

加入一个数 \(x\) 时,我们找到 mex 为 \(x\) 的左端点连续段,我们需要分裂这个连续段,并进行 \(O(1)\) 次连续段合并。问题变为快速找到 \([l,r]\) 内的分裂位置,我们从右到左处理分裂,每次找到最小的,权值大于之前 mex 且最后一次出现位置在 \(r\) 前的某一权值(使用线段树二分),若其最后一次出现位置 \(\geqslant l\),我们就分裂一个新段并将 \(r\) 赋为这个位置继续做。

我们直接使用线段树维护凸包即可做到 \(O(n\log^2 n)\) 的复杂度。

1log 做法还不会。

350 CF1787H Codeforces Scoreboard

容易转化为分配一个排列,最小化 \(\sum\min(k_i p_i,c_i)\) 之和,最小化 \(\min\) 可以变为钦定哪些题目选择第一种,于是选择了的题目一定按照 \(k_i\) 降序依次选择 \(1,2,\cdots,t\):

\[f_{i,j}=\min(f_{i-1,j}+c_i,f_{i-1,j-1}+k_ij) \]

我们不加证明地给出两个结论:(证明可见 ez_lcw 的题解

  • 假设钦定 \(i\) 个题目的最优方案为 \(S_i\),存在一组 \(S_{0,1,\cdots,n}\) 使得 \(S_0\subseteq S_1\subseteq\cdots\subseteq S_n\)。
  • \((f_{i,j+1}-f_{i,j})-(f_{i,j}-f_{i,j-1})\geqslant k_i\)。

使用 slope trick 维护差分值,根据上面的结论,更新一定是一段前缀使用 \(+c_i\),一段后缀使用 \(+k_ij\)。使用平衡树维护差分值,修改即插入以及后缀加,复杂度 \(O(n\log n)\)。

351 HDU6973 Bookshop

树剖将问题变为 \(\log\) 条重链区间的模拟,离线对重链扫描线,我们要维护的事实上是:

  • 插入/删除某个询问;
  • 处理一个结点的影响,即将 \(\geqslant x\) 的值减去 \(x\)。

使用平衡树维护权值,将值域分为三个部分 \([0,x-1],[x,2x],[2x+1,\infty]\),第一三部分的内部顺序不改变,第二部分可以暴力取出并插入,类似倍增分块的势能分析可知复杂度 \(O(n\log n\log V)\)。

351 BZOJ2567 篱笆

先考虑链的情况,二分答案 \(mid\),考虑判定:

令 \(x_i\) 为第 \(i\) 个篱笆最后的位置,那么能列出不等式:

\[a_i-mid\leqslant x_i\leqslant a_i+mid\\ x_i-x_{i-1}\leqslant 2r\\ x_0=-r,x_{n+1}=L+r\]

我们将所有 \(x_i\) 的限制替换为 \(a_i\),于是可以变换为(特判掉 \(x_1,x_n\) 与边界的限制,其限制很好刻画):

\[\forall_{i<j}a_j-mid\leqslant a_i+mid+2r(j-i) \]

注意到满足该条件一定可以构造出一组合法的 \(x\),于是其同样是一个形如 \(mid\geqslant C\) 的限制。

注意到 \(i\geqslant j\) 一定不优,所以我们可以拆贡献,\(C\) 的计算无非两个最值相减。

环的处理只需倍长,复杂度线性或一个 \(\log\)。

标签:log,cdot,复杂度,53,子集,2023,弥留之际,omega,2n
From: https://www.cnblogs.com/xiaoziyao/p/17352943.html

相关文章

  • 2023-05-04:用go语言重写ffmpeg的scaling_video.c示例,用于实现视频缩放(Scaling)功能。
    2023-05-04:用go语言重写ffmpeg的scaling_video.c示例,用于实现视频缩放(Scaling)功能。答案2023-05-04:这段代码实现了使用libswscale库进行视频缩放的功能。下面是程序的主要流程:1.获取命令行参数,包括输出文件名和目标图像大小。2.解析目标图像大小,生成指定大小的输出文件。3.创建缩......
  • 编程一小时2023.5.4
    1.#include<iostream>usingnamespacestd;inta[501][501];intmain(){intn,sum=0;cin>>n;for(inti=1;i<=n;i++)for(intj=1;j<=n;j++)cin>>a[i][j];for(inti=n;i>=2;i......
  • 2023/05/03(矩阵+高斯+线性基)
    (点击黑色题号进入题目~~)1.矩阵$\color{#000000}{P4723}$$\color{#555555}{多项式}$->$\color{#000000}{P1939}$$\color{#FFB90F}{矩阵加速}$$\color{#000000}{CF575A}$$\color{#B23AEE}{Fibonotci}$$\color{#000000}{P2579}$$\color{#6495ED}{......
  • 2023/5/4
    6-2数组排序输出(函数模板)分数 10全屏浏览题目作者 何振峰单位 福州大学对于输入的每一批数,按从小到大排序后输出。一行输入为一批数,第一个输入为数据类型(1表示整数,2表示字符型数,3表示有一位小数的浮点数,4表示字符串,0表示输入结束),第二个输入为该批数......
  • PKUSC 2023 游记
    2023年5月4日颓了一天,收拾行李准备出发,明天一大早赶高铁。下发了pku电子餐券的使用说明。......
  • 2023冲刺清北营12
    T1出题人由于\(a\)序列中存在偶数的情况很容易构造,下面分析前提为\(a\)序列的所有数为奇数。假设当前我们已知序列\(b\),对于\(b_i,b_j\),如果存在\(k\)满足\(a_k=b_i+b_j\),那么连接\(i,j\)所对应的点,由于点数为\(n\),边数至少为\(n\),因此原图中至少存在一个环......
  • 2023AAAI_Ultra-High-Definition Low-Light Image Enhancement: A Benchmark and Tran
    一.motivition1.之前的数据集分辨率较低二.contribution1.提出两个超高清数据集UHD-4k和UHD-8k2.网络结构LLFormer(网络结构类似2022CVPR_Restormer:EffificientTransformerforHigh-ResolutionImageRestoration.)三.Network 网络架构类似于:2022CVPR_Restormer:......
  • 【2023-04-28】连岳摘抄
    23:59在这个过程中,我算是饱尝了人间的辛酸,但回过头去想想,当伙计的那六年是非常宝贵的,尽管那六年我一直重复地干着几乎没有多少技术含量的活儿,但我很清楚,那就是我的工作,是需要我认真对待、努力实践的工作。这个觉悟影响了我一生,让我无论做什么,都能百分百地投入、去实践,而不是空想......
  • 2023年5月4日周四
    计划删减代码,把它变成自己的,准备答辩学习前端知识angular框架,html语法扎实的学,css,JavaScript学习后端框架,Java语言学扎实点知道接口怎么回事,尝试或明白一个接口怎么写解决配置文件中resources中的几千个报错,不解决,无意义要搞明白数据库中的字段含义,以了解数据库表如......
  • 雷达问问 | 2023年02月第三次问题及解答汇总
    【雷达问问】是公众号平台新推出的一个文章板块,目的是搜集在雷达技术交流群、私信、知乎,以及其他地方的关于雷达的问题或信息,方便为后来人提供参考。关于问题的解答,主要是雷达行业人员的回答,并不是权威,仅供大家参考,如有疑问,欢迎交流。【雷达问问】1、初学者想问下:波束形成和DOA估计......