do_while_true

一言(ヒトコト)

02 2023 档案

摘要:如果问到 0 了那么直接用这个 0 和其它位置都问一遍就能得到所有数的值。现在问题就是怎么把 0 问出来,有 $n+173$ 次操作可以用。思考过程大概就是考虑如果现在这个位置不是 0,那么问一圈结果的 $&$ 就是这个位置的值 $x$。然后问出值是 $x$ 的一定是 $x$ 的子集,所以可以递归下 阅读全文
posted @ 2023-02-24 15:32 do_while_true 阅读(16) 评论(0) 推荐(0) 编辑
摘要:扫值域,然后考虑逐步 $a$ 通过插数给插出来。然后发现如果选,那么可以插入的位置就是 $[i-m+1,i-1]$ 里面选了的数的个数再 $+1$(它们后面都能插入 $i$,还有直接插入到最开头的一种情况) 那么就有 dp $f_{i,j,S}$ 表示考虑到了 $i$,插入了 $j$ 个数,$[i- 阅读全文
posted @ 2023-02-24 14:57 do_while_true 阅读(15) 评论(0) 推荐(0) 编辑
摘要:1408G | 2700 | D 边权从小到大插入,在某一时刻形成了一个团,那么这个连通块就可以划分成一组。 没想到的:合法的组和组之间一定是包含或者相离的关系,所以在 Kruskul 重构树上树形 dp \(\mathcal{O}(n^2)\) 树形 dp 即可。 1383E | 2800 | D 阅读全文
posted @ 2023-02-23 16:55 do_while_true 编辑
摘要:1322B | 2100 | C 看上去异或里面套了层加法不好拆位,但是依然可以对每个二进制位处理。 现在考虑第 \(k\) 位,那么产生贡献的数字对一定满足以下条件之一: 第 \(k\) 位相同且前 \((k-1)\) 位进位; 第 \(k\) 位不同且前 \((k-1)\) 位不进位。 那就按照 阅读全文
posted @ 2023-02-23 16:52 do_while_true 编辑
摘要:前传 后缀结构 全都扔到一块儿 Suffix Array (SA) 对一个字符串的所有后缀进行排序,最终得到所有后缀的排名。 采用基数排序,对于 \(k=1,2,...,\log n\),每次排序只看后缀的前 \(2^k\) 位来给后缀排序(对于一个起点如果后面不够了,补一堆最小的字符),由于上一步 阅读全文
posted @ 2023-02-21 16:34 do_while_true 阅读(59) 评论(0) 推荐(1) 编辑
摘要:三个找等差数列的方法: 倍增分块:$[1,2),[2,4),[4,8)\cdots,[2^k,2^{k+1}),\cdots$ 这么分块,然后断言每一块里面的 border 一定形成了一个等差数列。首先最后一块肯定满足,$\geq \lceil\frac{|s|}{2}\rceil$ 的 borde 阅读全文
posted @ 2023-02-20 17:30 do_while_true 阅读(42) 评论(0) 推荐(0) 编辑
摘要:orz α # dp 翻译官方题解。 ### 一 考虑 $A_i\leq A_{i+1}$ 这个条件可以将序列与可重集构成一组双射。问题就是计算包含 $N$ 个 $\leq M$ 的数的可重集 $A$ 的个数使得 xor 和为 $X$.而考虑一个值只有出现奇数次才会产生贡献,那么对这个进行计数,再算 阅读全文
posted @ 2023-02-12 07:58 do_while_true 阅读(559) 评论(0) 推荐(3) 编辑
摘要:会推 fwt 就能直接秒/jy 先考虑 B 进行个什么线性变换才能得到 A.fwt 要做的是:枚举每一维,然后固定其它维的值看作常数,然后将这一维上的值单独拎出来乘上一个矩阵。那么只需要构造 $n=3$ 的矩阵,然后每次做这样一个过程就能完成 $n=3^k$. 构造就挺简单的了: $$ \begin 阅读全文
posted @ 2023-02-07 15:06 do_while_true 阅读(43) 评论(0) 推荐(0) 编辑
摘要:克罗内克积(Kronecker Product) 大小为 $m\times n$ 的矩阵 $A$ 和大小为 $p\times q$ 的矩阵 $B$ 的克罗内克积 $A\otimes B$ 被定义为: $$ \begin{pmatrix} a_{1,1}B & \cdots & a_{1,n}B\ \ 阅读全文
posted @ 2023-02-07 15:06 do_while_true 阅读(33) 评论(0) 推荐(0) 编辑
摘要:对于离散的食物,$w$ 相同的只留下美味值最大的 $W/w$ 个,因为再多了也没用不会更优。所以一共只有 $\sum_{i=1}^n \frac{W}{i}=\mathcal{O}(W\log n)$ 这样暴力背包复杂度就是 $\mathcal{O}(W^2\log n)$. 然后考虑连续的怎么做。 阅读全文
posted @ 2023-02-07 15:06 do_while_true 阅读(51) 评论(0) 推荐(0) 编辑