摘要: 简要题意 对于一个数组 $a$,给定 $Q$ 个限制条件,每个条件给出 $i,j,x$ 使得 $a_i|a_j=x$。 构造数组使其字典序最小。 Solution 以下 $ans_i$ 表示最后我们构造出来的答案数组。 考虑一个最宽松的限制条件,我们有一个 $b$ 数组,在最开始,$b$ 在二进制意 阅读全文
posted @ 2022-08-21 03:54 Qzong 阅读(57) 评论(0) 推荐(0)
摘要: 可以用矩阵快速幂得到数列的每一项,怎么得到数列的前缀和? 对矩阵增加一行一列即可。 问题描述 $a_n=xa_{n-1}+ya_{n-2}$ 求 $\sum_{i=1}^{n}{a_i^3}$ 将式子展开,矩阵快速幂求解即可。 #include<cstdio> #include<cstring> # 阅读全文
posted @ 2022-08-01 20:59 Qzong 阅读(46) 评论(0) 推荐(0)
摘要: 记 $f_i$ 表示 $[i,n]$ 中最多能不动的书。 动第 $i$ 本书,则 $f_{i+1}->f_i$ 不动的话,若这本书是最左边的这种书,则 $f_{r_{a_i}+1}+cnt_{a_i}->f_i$。 若不是,为了不影响其他区间,则 $cnt_{a_i}->f_i$。 #include 阅读全文
posted @ 2022-08-01 20:25 Qzong 阅读(31) 评论(0) 推荐(0)
摘要: 从简单往复杂推。 菊花图并且 $k=1$ 时,这是个 $Nim$ 游戏。 继续 $k=1$,奇偶分类后发现一样是奇数深度意义下的 $Nim$ 游戏。 $k > 1$ 时,深度除以 $k$ 后还是个 $Nim$ 游戏。 换根 $dp$ 求解一下即可。 #include<cstdio> const in 阅读全文
posted @ 2022-07-29 20:53 Qzong 阅读(49) 评论(0) 推荐(0)
摘要: 逐位思考的好题目。 #include<cstdio> const int H=10000010; char G[H],*_=G; int read(){ int x=0; while(*_<'0'||'9'<*_)_++; while('0'<=*_&&*_<='9')x=x*10+(*_++^'0 阅读全文
posted @ 2022-07-29 19:30 Qzong 阅读(29) 评论(0) 推荐(0)
摘要: 一个常数更小的做法。 对于 $a \oplus b + b \oplus c = a \oplus c$ ,令 $A = a \oplus b$ ,$B = b \oplus c$ ,则 $a \oplus c = A \oplus B$ 。 显然有 $A \oplus B \leq A + B$ 阅读全文
posted @ 2022-07-28 23:26 Qzong 阅读(87) 评论(0) 推荐(1)
摘要: 有向图,问点 $u$ 能否通过标号在 $l$ 与 $r$ 之间的边到达 $v$ 。 $n,q \leq 50000,m\leq 100000$ #include<cstdio> #include<cstring> const int H=40000040; char G[H],*_=G; int r 阅读全文
posted @ 2022-07-27 10:28 Qzong 阅读(43) 评论(0) 推荐(0)
摘要: 给定一个长为 $n$ 的字符串 $S$ 的 $n-m+1$ 个长位 $m$ 的连续子串,构造 $S$ 。 一开始想的是两两字符串建边然后跑最长路,然后发现这样子只能跑哈密顿回路,复杂度很大。 可以对长为 $m$ 的字符串前 $m-1$ 个与 后 $m-1$ 个子串建边,避免了重复点多的问题,同时也可 阅读全文
posted @ 2022-07-25 10:23 Qzong 阅读(33) 评论(0) 推荐(0)
摘要: 我思维真的太局限了,想了好久最后还是看了题解,大部分都想到了但是有一部分就是拐不过弯来。 组合数问题发现原问题不好想就转化,正着不好做就反着做,固定位置不好做就持续加入。 。 阅读全文
posted @ 2022-05-26 16:10 Qzong 阅读(46) 评论(0) 推荐(0)
摘要: 考虑相反对应,发现映射可能不是单射。 取字典序最大的一个就可以保证唯一。 或者按照官方题解所说,可以从大到小从左到右依次填入,能填必须填,这样的方案就保证唯一。 所以我们统计所有排列 $p$ 的数量。 然后考虑区间 dp ,再考虑限制条件,依旧按照区间 dp 的惯用做法做出 $f_{l,r}$ 后考 阅读全文
posted @ 2022-05-16 13:50 Qzong 阅读(100) 评论(0) 推荐(0)