摘要: RT 阅读全文
posted @ 2024-07-04 13:24 Qzong 阅读(18) 评论(2) 推荐(0) 编辑
摘要: 考虑两种方式。 由于字典序最小我们必然希望有尽量小的数出现在开头。 我们枚举最小的可以出现在开头的数,这意味着假如这个数的位置是 $x$,则 $n-x+1 \leq k$。 接下来,我们将这一整个子序列挪到序列之前,花费 $n-x+1$ 的代价,并且不再进行挪到前面的这种操作。 接下来便只需要进行删 阅读全文
posted @ 2022-09-17 09:57 Qzong 阅读(30) 评论(1) 推荐(1) 编辑
摘要: 套路题。 先不考虑额外的边跑一次最短路。 然后考虑一下额外的边,单独拿出来转移一次。 式子为 $dis_u=min{olddis_v+(u-v)^2,1\leq v \leq n}$。 简单的,把凸包建出来,二分最优点转移即可。 也就是做一次斜率优化 $dp$。 然后继续跑最短路,最短路可以同时 $ 阅读全文
posted @ 2022-08-21 03:55 Qzong 阅读(54) 评论(0) 推荐(2) 编辑
摘要: 简要题意 对于一个数组 $a$,给定 $Q$ 个限制条件,每个条件给出 $i,j,x$ 使得 $a_i|a_j=x$。 构造数组使其字典序最小。 Solution 以下 $ans_i$ 表示最后我们构造出来的答案数组。 考虑一个最宽松的限制条件,我们有一个 $b$ 数组,在最开始,$b$ 在二进制意 阅读全文
posted @ 2022-08-21 03:54 Qzong 阅读(38) 评论(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 阅读(34) 评论(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 阅读(23) 评论(0) 推荐(0) 编辑
摘要: 从简单往复杂推。 菊花图并且 $k=1$ 时,这是个 $Nim$ 游戏。 继续 $k=1$,奇偶分类后发现一样是奇数深度意义下的 $Nim$ 游戏。 $k > 1$ 时,深度除以 $k$ 后还是个 $Nim$ 游戏。 换根 $dp$ 求解一下即可。 #include<cstdio> const in 阅读全文
posted @ 2022-07-29 20:53 Qzong 阅读(30) 评论(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 阅读(19) 评论(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 阅读(67) 评论(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 阅读(35) 评论(0) 推荐(0) 编辑