09 2021 档案

摘要:题目 source 题解 方法一:多项式求逆 令$g(0)=0$,原式子可写成 \[ f_i=\sum\limits_{j=0}^{i}{f_{i-1}g_j} \] 把$f$,$g$看作多项式,等式右边即为$f\times g$,这说明有$f=f\times g$。除了$i=0$时,\((f\ti 阅读全文
posted @ 2021-09-29 00:00 limil 阅读(306) 评论(0) 推荐(0)
摘要:多项式求逆 作用 \[ f(x)g(x)\equiv 1 \mod x^n \] 那么称$g(x)$为$f(x)$的逆元,也记作$f^{-1}(x)\(。若\)\deg f^{-1} < n$,则$f^{-1}$唯一。 实现 进行一些简单的导的推: 设$f^{-1}_0$为**模$x^{\lceil 阅读全文
posted @ 2021-09-28 23:35 limil 阅读(86) 评论(0) 推荐(0)
摘要:题目 给定$n$个质数,设$S$代表这些质数的乘积所代表的数的所有正因子。对于一个有限正整数集合$D$,如果任意$a\in D$,\(b\in D\),\(a\neq b\),都满足$a\nmid b$,那么$D$就是好的。问$S$最大好子集是多大。 题解 假如这$n$个质数互不相等,显然答案就是$ 阅读全文
posted @ 2021-09-28 23:00 limil 阅读(76) 评论(0) 推荐(0)
摘要:题目 有$n$个数,每个数至多只有7个因子。问从中最少取多少个数相乘结果为完全平方数。 题解 完全平方数就是质因子数幂次都为偶数。对于每个数$p_1^{c_1}...p_k^{c_k}$,可以把幂次对2取模,这样就可以写成$p_1...p_k$。由于至多只有7个因子,所以每个数至多只有2个质因数。如 阅读全文
posted @ 2021-09-27 20:33 limil 阅读(23) 评论(0) 推荐(0)
摘要:题目 给定数列$a$,求$a_i|(a_j & a_k)$的最大值,其中$i<j<k$。 题解 很容易想到预先处理$a_j & a_k$。由于$a$的值域为$2\times 10^{6}$,所以可以求出每个数的是否能被与表示出来。对于某个值$i$,如果有$i=j&k$,那么必有$i\in j$以及$ 阅读全文
posted @ 2021-09-26 17:48 limil 阅读(84) 评论(1) 推荐(0)
摘要:题目 给定数组$a$,对于某个元素$a_i$和区间$[l,r]$满足$l\le i \le r$。如果将$a_l,a_{l+1},...a_r$排序后,原$a_i$在排序后的新位置为$j$(值相同是可以任意排序),那么$a_i$的奇异值为$|j-\lfloor\frac{l+r+1}{2}\rflo 阅读全文
posted @ 2021-09-24 20:20 limil 阅读(39) 评论(0) 推荐(0)
摘要:题目 在一维坐标轴上,有$n$个点和$m$线段。每次可以花费1移动任意点向左或向右移动一个单位距离。问让每个线段均被至少一个点访问的最小代价。只要有点和线段有交集,该线段就被访问过。 题解 有两个比较简单的处理: 如果某些点在线段内,该线段就可以被删除。 如果线段内含了更小的线段,那么较大的线段可以 阅读全文
posted @ 2021-09-23 20:13 limil 阅读(279) 评论(4) 推荐(0)
摘要:题目 两个长度为n的排列p,q,问满足以下条件的排列有多少 p的字典序小于q p中的逆序数对大于q中的逆序数对 输出答案模mod,\(n\le 500\) 题解 在easy version中,\(n\le 50\),想想怎么做。 由于p字典序小于q,可以枚举第一个p小于q的位置。然后之后的排列就可以 阅读全文
posted @ 2021-09-20 00:31 limil 阅读(62) 评论(0) 推荐(0)
摘要:题意 有一段长为$l$的线段,有$n$个区间,左右端点在$[0,l)$间均匀随机(可能不是整数) 求被至少$k$段区间覆盖的长度的期望,对998244353取膜 题解 首先先令$l=1$,最后答案再乘回去即可。 故题目变为在长度为1的线段中被至少k个随机区间覆盖的区域长度。等价于在$[0,1)$中随 阅读全文
posted @ 2021-09-17 17:26 limil 阅读(55) 评论(0) 推荐(1)
摘要:题意 定义一个图的生成树是以节点 \(s\) 为根的 BFS 树,当且仅当对任意节点$t$,图中 \(s\) 到 \(t\) 的最短路径长度等于树上 \(s\) 到 \(t\) 的最短路径长度。 对于一个图,定义 \(f(x, y)\) 为该图满足「同时是以节点 \(x\) 为根的 BFS 树和以节 阅读全文
posted @ 2021-09-16 21:41 limil 阅读(122) 评论(0) 推荐(0)
摘要:题目 有一个长度为$n$的排列$a$,$m$次操作交换顺序执行,操作$(i,j)$代表交换$a_i,a_j$的值。每次操作等概率发生或不发生。问$m$次操作后逆序数对的期望是多少。 题解 经典的转求贡献的问题。只要定义好dp状态就很容易。设$dp[i][j]$代表$a_i>a_j$的概率。然后转移方 阅读全文
posted @ 2021-09-15 20:31 limil 阅读(21) 评论(0) 推荐(0)
摘要:题目 给定一个$n\times m$的01矩阵,你每次可以翻转一行或一列任意次。问操作若干次后矩阵中最少的1是多少?\(n\le 20\),\(m \le 100000\) 题解 $n$很小,所以可以将每一列状压为$a_i$。若干次操作后,行操作集合相当于一个掩码,列操作相当于是否对掩码取反然后异或 阅读全文
posted @ 2021-09-14 20:19 limil 阅读(31) 评论(0) 推荐(0)
摘要:题目 $a_i$在范围$[l_i, r_i]\(等概率取值,求序列\){a_i}$非递增的概率。\(n\le 50\),\(l_i\le r_i \le 998244351\) 题解 即求序列非递增的方案数。 由于区间范围非常大,而区间数又很少。因此可以离散化端点,给区间分段。这样分下来总段数就是$ 阅读全文
posted @ 2021-09-14 15:26 limil 阅读(45) 评论(0) 推荐(0)
摘要:题目 交互题,你有一个${1,...,n}$的集合,你想要找出其中一个数$x$,有3个操作: A a:询问当前集合中有多少元素是$a$的倍数。 B a:询问当前集合中有多少元素是$a$的倍数,然后从集合中将$a$的倍数的数全部删去,除了$x$。$x$永远不会被删除,即使它是$a$的倍数。注意这个操作 阅读全文
posted @ 2021-09-12 15:48 limil 阅读(32) 评论(0) 推荐(0)
摘要:题目 给定一个01串,问有多少连续子串中1的个数大于0且可以整除其长度。 题解 问题等价于$r-l=k(pre[r]-pre[l])$,即$r-k\cdot pre[r]=l-k\cdot pre[l]$。假设固定一个值$T$,当$k<T$时,可以枚举$k$统计有多少相同数对,时间复杂度$O(nT) 阅读全文
posted @ 2021-09-12 08:27 limil 阅读(64) 评论(0) 推荐(0)
摘要:题意 [sourse](Problem - 1278F - Codeforces) 你有一副扑克牌,包含$m$张牌,其中只有1张鬼。每次操作会将牌打乱一次,然后查看最顶部的牌是否是鬼(打乱是完全随机打乱,即$m!$种排列中等概率选一种)。设$n$次操作后其中有$x$次是鬼,求$x^k$的期望,答案模 阅读全文
posted @ 2021-09-10 20:25 limil 阅读(138) 评论(0) 推荐(0)
摘要:题目 有$n$盏灯排成一排,初始时所有的灯是灭的。每次会等概率随机点亮一个灭的灯。如果存在连续$k$盏灯中有大于1盏灯是亮的,则结束。给定$n$和$k$,问期望的灯的数量是多少。 题解 假设有$i$盏灯被点亮,那么它们的间隔均大于等于$k$。故$i$盏灯被点亮的顺序不重要,确定了这$i$盏灯的位置, 阅读全文
posted @ 2021-09-09 12:26 limil 阅读(73) 评论(0) 推荐(0)
摘要:题目 给你一颗n个结点的树,需要执行n次以下操作: 选择一个未被删除结点u,令$a_u$等于与u相邻未被删除的结点数。 将结点u从树中删除 也就是说,n次操作完后可以得到一个序列$a={a_1,a_2,...,a_n}$。问在所有可能的序列$a$中,满足以下条件: 序列$a$可以由上述n次操作得到 阅读全文
posted @ 2021-09-08 20:24 limil 阅读(30) 评论(0) 推荐(0)
摘要:C Carrying Conundrum(思维) 方法一 直接dfs搜索,进位与不进,时间复杂度O(2^9)。 #include <bits/stdc++.h> #define endl '\n' #define IOS std::ios::sync_with_stdio(0); cin.tie(0 阅读全文
posted @ 2021-09-08 19:49 limil 阅读(79) 评论(0) 推荐(0)
摘要:所谓的亚线性筛,是指一类用低于线性复杂度求出积性函数前缀和的方法。 杜教筛 杜教筛可以在$O(n^{\frac{2}{3}})\(的时间复杂度求出\)\sqrt{n}$ 个点值,原理和实现都比较简单。 原理与实现 对于数论函数$f$,要求计算$S(n)=\sum\limits_{i=1}^{n}{f 阅读全文
posted @ 2021-09-04 20:02 limil 阅读(466) 评论(0) 推荐(0)
摘要:题目 Problem - 7116 题解 一个数最多加$\log n$次lowbit,之后只需乘2即可。因此可以结合线段树暴力,没好的暴力加,加好的直接打标记乘2。 原本我的方法是并查集维护那些区间乘2,那些区间暴力加,并查集合并。这样做时间复杂度相似,但是常数巨大。除了并查集本身的复杂度,每次更新 阅读全文
posted @ 2021-09-04 19:19 limil 阅读(40) 评论(0) 推荐(0)
摘要:题目 Problem - 7113 题解 一开始想的是dp,但是需要$dp[i][j]$代表在$n \times i$的方格中放入$j$个数使得每列都至少有一个数的方案数,这样答案就是 \[ n!(n^2-n)!\sum\limits_{i=1}^{n}{i\cdot dp[i][n] \cdot 阅读全文
posted @ 2021-09-04 19:09 limil 阅读(218) 评论(0) 推荐(0)
摘要:欧几里得算法 gcd,\(O(\log n)\) ll gcd(ll a, ll b) {return b ? gcd(b, a % b) : a;} lcm,\(O(\log n)\) // 注意数据范围,过大的数要用__int128 ll lcm(ll a, ll b) {return a * 阅读全文
posted @ 2021-09-03 13:58 limil 阅读(36) 评论(0) 推荐(0)