刷!

刷!

注:

  • 没有标数据范围的都是复杂度没啥特别的东西的题,目前会做多少写多少;
  • 👍 表示涉及比较有用的套路,可以注意一下;
  • ❓ 表示这题仅仅是口胡的,没写过代码,不保证题解正确性;

AtCoder

abc242 F

\(n \times m\) 的网格,在上面放 \(B/W\) 个黑/白棋,要求异色棋不能出现在同行同列,求方案数。\(n, m \le 50, B, W \le nm\)

Hint 关键步骤是求出一色棋子恰好占据 $i$ 行 $j$ 列的方案总数,考虑先求一个黑棋子占据了 $i$ 行 $j$ 列可以为空的方案数然后反演。

arc136 E ❓

\(n\) 个点的有向图,节点从 \(1 \sim n\) 标号,连边按照如下规则:若 \(i < j \land \left(i, j\right) > 1\),则在 \(i, j\) 之间连接一条边。点有价值,选取价值最大的一个点集,使得从任何一点开始都不能到达集合中的任意一点。

Hint 根据点编号的奇偶性分类讨论两点能到达的条件,可以发现只与最小质因子有关,这样就转化为了给定若干条线段,有各自的价值,选取一个两两不交的线段集合满足价值和最大。

abc242 Ex 👍

\(m\) 个区间,每次等概率选一个染黑,求把整个长为 \(m\) 的序列染色的期望次数。\(n, m\le 300\)

Hint 考虑到下标构成的全集的每个子集中“存在至少一个位置被染色”的期望次数很好求,做一个 dp 之后 min-max 容斥。

agc010 B

长为 \(n\) 的环状序列,每次任选一个位置开始,后面 \(1\)\(n\) 个位置分别依次 \(-1, -2, -3, \cdots, -n\),问能否全减成 \(0\)

Hint 假设合法,那么总操作次数是好求的,确定一个总次数然后 check 比 直接想办法构造操作次数最小的还原方案然后和总次数比较好做的多。

agc010 C

\(n\) 个节点的树,每次选两个叶子,将路径上的每个节点答案 \(-1\),问是否能减成 \(0\)

Hint 关键在于发现对于每个节点,子树之间互相连边的条数和传上去的条数是固定的。

CodeForces

1622E 👍

\(1 \sim m\) 中的每个数赋上权值,满足权值是一个 \(1 \sim m\) 的排列。给定 \(n\) 个集合满足数值在 \(1 \sim m\) 之间且数不重复,定义一个集合的价值是集合中所有数的权值之和,此外每个集合还有一个目标权值,最大化所有集合实际权值与目标权值的差的绝对值之和,\(n \le 10, m \le 10^4\)

Hint 可以考虑直接枚举每个集合的贡献的正负性,然后按照构造最优解的方法构造答案,即便有的限制条件不合法也没关系,因为不合法的一定不优,最优解一定合法。

CCF

bzoj 4556 👍 ❓

长为 \(m\) 的字符串,每次查询 \(l, r, a, b\),在 \(s[l : r]\) 中选取最长的一个子串使得它是 \(s[a : b]\) 的一个前缀,求这个子串最长的可能长度。

Hint 底子够了的话可以很自然的想到一个区间查询前驱后继的做法,至于有右边界的限制可以考虑二分答案。

联合省选 2022 Day2 T1

\(n\) 个数,\(q\) 次询问,每次给出一个质数集合,问有多少种从 \(n\) 个数中选取某个子集的方式,使得这些数的乘积能被给出的每个质数整除。

Hint 对值域根号分治,按照题目中出现过的大质数分组。

联合省选 2022 Day1 T2 👍 ❓

\(n\) 个节点的数,每个节点给出一个选择点权的区间,问有多少条选择一条树上路径然后给每个点赋值的方案,满足所有被赋了值的点点权极差 \(\le K\)\(n \le 300\),要求做到 \(O(n^3\operatorname{polylog})\)

Hint 据说是常见套路,答案是一个关于值域最小值的 $O(n)$ 次多项式,考虑用换根 dp 求出系数,拉插算自然数幂和统计答案。

十二省联考 2019 Day1 T2

给定一个字符串 \(S\)\(n_a\)\(S\)\(\text{A}\) 类子串,\(n_b\)\(\text{B}\) 类子串,这些子串用端点下标来描述。给定 \(m\) 个从某个 \(\text{A}\) 类子串向 \(\text{B}\) 类子串的连边,要求找到一个最长的字符串 \(T\),满足 \(T\) 可以划分为若干个连续的 \(\text{A}\) 类子串,其中每个子串都能找到一个与它有连边的 \(\text{B}\) 类子串,满足这个 \(\text{B}\) 类子串是这个划分方案中下一个 \(\text{A}\) 类子串的前缀,多测。\(|S| \le 2 \times 10 ^ 5, \sum|S| \le 2 \times 10^6\)

Hint 要是这些 $\text{A, B}$ 类字符串是输入的,给出可接受的总长度限制,那么它将是一道简单但是很优美的题,做法是考虑从 trie 出发构造一个 DAG。

我们知道trie树是支持压缩的,因为这些串都是同一个串的子串,这个压缩更好些,甚至,你可以直接建出后缀树。

posted @ 2022-03-06 11:43  zimujun  阅读(60)  评论(0编辑  收藏  举报