Loading

摘要: 我对 DP,完全没有理解呢…… 首先,要通过的话是要有人看门的,如果当前人数 \(\ge a_i + b_i\),那么 \(i\) 这扇门就没有意义,因为可以随便来回。然后因为可以又来又回,所以需要除掉后效性。怎么去呢,我们发现为了往前爆破,如果现在过不去,肯定要把后面的门打开,解救后面的人,然后聚 阅读全文
posted @ 2026-01-11 20:15 循环一号 阅读(1) 评论(0) 推荐(0)
摘要: 想法非常暴力的一个 *3500 计数。感觉没有 3500,但还是挺有意思的。 首先我们先来思考下怎么计算一个序列的密度:每次找到其最小的,出现过所有数的前缀删去,删除次数就是其密度,可以自己手玩一下,还是很显然的。 然后这个东西启发我们 DP:设 \(f_{i, j}\) 表示考虑到前 \(j\) 阅读全文
posted @ 2026-01-11 16:50 循环一号 阅读(3) 评论(0) 推荐(0)
摘要: 很有意思的题。 首先考虑只有操作 \(1\),则答案显然 \(\ge \sum\limits_{i=1}^{n} [a_i > a_{i + 1}]\),即划分出最少的不降子段,同时每个子段又可以被一次操作消除,所以答案为 \(\sum\limits_{i=1}^{n} [a_i > a_{i + 阅读全文
posted @ 2026-01-11 14:57 循环一号 阅读(2) 评论(0) 推荐(0)
摘要: 口胡的,挺巧妙的。 首先 \(f_{i, j, 0/1}\) 是显然的,然后注意到合法的 \(j\) 是一个区间,然后做完了。 阅读全文
posted @ 2026-01-10 16:06 循环一号 阅读(2) 评论(0) 推荐(0)
摘要: 前置知识 多重组合数 即题目中的混乱度,假设第 \(i\) 中元素有 \(a_i\) 个,那么其排列方式就是: \[\dbinom{n}{a_1, a_2, \dots a_m} = \dfrac{n!}{\prod a_i!} \]证明显然。 其有一个递推式子: \[\dbinom{n}{a_1, 阅读全文
posted @ 2026-01-09 20:45 循环一号 阅读(8) 评论(0) 推荐(0)
摘要: 很牛的计数。 正难则反,考虑图不是一个 SCC 的情况,那么缩点后就是一个有 \(> 1\) 个点的 DAG,考虑 DAG 怎么计数,由于每个 DAG 都有若干个入度为 \(0\) 的点,且拿掉这些点之后剩下的还是一个 DAG,这就有子结构了,方便我们 DP。 考虑 \(f_S\) 表示 \(S\) 阅读全文
posted @ 2026-01-09 18:55 循环一号 阅读(16) 评论(0) 推荐(0)
摘要: 首先我们有 SOSDP。 对于这题,\(\gcd\) 其实就是质因数向量上的 \(\min\),也可以看做是在取交集,也就是说先跑一遍高维后缀和,得到 \(f_i\) 表示 \(\gcd\) 为 \(i\) 的倍数的方案,然后 \(f_i \leftarrow \binom{f_i}{4}\) 就是 阅读全文
posted @ 2026-01-09 16:56 循环一号 阅读(1) 评论(0) 推荐(0)
摘要: 我们声称区间 LIS 可以做到 \(\mathcal{O}(n \log^2 n)\)。具体见 link1 和 link2。但是这里给出的是 \(\mathcal{O}(n \sqrt{n} \log n)\) 的做法。 考虑 LIS 的求法,DP 显然很倒闭,另外一种是 \(f_i\) 表示 LI 阅读全文
posted @ 2026-01-09 10:46 循环一号 阅读(6) 评论(0) 推荐(0)
摘要: 小清新 DS 题。 看到数据范围直接考虑分块,设块长为 \(B\)。 对于整块,每次显然换出来的是块内最大值,直接开个大根堆就没了。 对于散块,考虑每次换进去的那个数 \(x\) 组成的集合,\(cur\) 为其中最小值,那么对于当前块内第一个数,如果其 \(> mn\),显然在当时其会把 \(mn 阅读全文
posted @ 2026-01-08 21:55 循环一号 阅读(3) 评论(0) 推荐(0)
摘要: A 唐诗。 B 猜一手,然后考虑鸽巢原理,答案为 \(\min(\text{mex}(a), k)\)。 C 最终占领的是一个区间,枚举左端点然后双指针。 点击查看代码 #include <bits/stdc++.h> using namespace std; typedef long long l 阅读全文
posted @ 2026-01-08 20:17 循环一号 阅读(5) 评论(0) 推荐(0)