不能鸽啊。
upd:咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕咕
\(\checkmark\) 表示已经完成,口 表示口胡,/ 表示没有这道题。
题目评价是 思维/代码/整体难度。
省份 | D1T1 | D1T2 | D1T3 | D2T1 | D2T2 | D2T3 |
---|---|---|---|---|---|---|
联合省选2021 A卷 | \(\checkmark\) | \(\checkmark\) | \(\checkmark\) | \(\checkmark\) | \(\checkmark\) | \(\checkmark\) |
联合省选2021 B卷 | / | / | / | / | ||
联合省选2020 A卷 | \(\checkmark\) | \(\checkmark\) | \(\checkmark\) | |||
联合省选2020 B卷 | / | / | ||||
BJOI2020 | 口 | / | / | / | / | / |
SNOI2020 | \(\checkmark\) | \(\checkmark\) | \(\checkmark\) | \(\checkmark\) | \(\checkmark\) | |
ZJOI2020 | \(\checkmark\) | \(\checkmark\) | \(\checkmark\) | |||
十二省联考2019 | 口 | 口 | 口 | |||
BJOI2019 | \(\checkmark\) | \(\checkmark\) | \(\checkmark\) | 口 | ||
GXOI/GZOI2019 | \(\checkmark\) | \(\checkmark\) | \(\checkmark\) | \(\checkmark\) | \(\checkmark\) | \(\checkmark\) |
HNOI2019 | 口 | \(\checkmark\) | ||||
JSOI2019 | \(\checkmark\) | \(\checkmark\) | 口 | / | / | / |
SDOI2019 | 口 | 口 | \(\checkmark\) | \(\checkmark\) | ||
SNOI2019 | \(\checkmark\) | 口 | 口 | / | / | |
TJOI2019 | \(\checkmark\) | |||||
YNOI2019 | / | / | / | |||
ZJOI2019 | \(\checkmark\) | \(\checkmark\) | \(\checkmark\) | 口 |
01 BJOI2019 D1T1 奥术神杖
2/3/Easy
首先这个乘积与开根明显可以取 \(\ln\) 后变为求和与除法,那么就是一个分数规划模型。
二分答案,在 ACAM 上 dp 一下即可,复杂度 \(O(ns\log (nV))\)。
02 WC2010 T? 重建计划
3/4/Medium
为啥这里会突然蹦出一个 WC 题啊/yun。
首先分数规划一手,再上个点分治,那么考虑了怎么合并子树之间的信息。
对于每棵子树,求出其每个深度的最大路径权值和,那么只需要将儿子的信息合并到自己的同时,用一个单调队列寻找一下每个儿子能匹配的最大权值和。
这样就可以两个 \(\log\) 了。
03 十二省联考2019 D2T2 春节十二响
2/2/Easy
简单题啊。
直接每个子树维护一个数组表示分出来所有段的最大值,然后启发式合并即可。
04 十二省联考2019 D1T2 字符串问题
2/5/Medium
好像没有思维难度,但是口胡出来假了。
一个暴力想法就是若 \(i,j\) 满足 \(a_i\) 后面可以接 \(a_j\) 则连一条边,那么如果最后的图是 DAG 就直接拓扑排序,否则直接 \(-1\)。
连边不好处理,由于需要 \(b_i\) 是 \(a_j\) 的前缀,我们将串翻过来建立后缀树,每个父亲向儿子连边即可,定位字符串区间直接记录每个前缀对应结点,然后树上倍增就好了。
好像假了一点点/ll。
假的原因是向一棵子树连边的时候可能根节点有长度更短的 \(A\) 类串,此时这样的连边是不合法的,那么只需要将所有 \(A\) 类串拆出来就好了。
时间复杂度 \(O(n\log n)\)。
05 TJOI2019 甲苯先生的线段树
CF750G New Year and Binary Tree Paths
4/4/Hard
不会,鸽了。
06 十二省联考2019 D1T1 异或粽子
2/2/Easy
这道题由于 \(k\) 很小,我们只需要将每个数最大的异或和放入堆中,然后每次取一个最大值,再把那个最大值对应的数找次大、三大……
这样就是 \(O((n+k)(\log n+\log a))\)。
Bonus:CF241B Friends。
二分 \(k\) 大值,直接在 trie 上计算异或大于这个值的数对个数,然后类似地统计异或值大于这个值的异或和个数即可。
第一个部分可以做到单 \(\log\),具体可以 trie 上二分 \(k\) 大值,然后维护每个指针匹配到哪里,这样就能直接 \(O(n)\) 计算贡献了。
第二个部分不太会处理,原因是类似第一部分维护指针的时候,每个位置都要 \(\log\) 拆位计算贡献。
复杂度 \(O(n\log^2 a)\)。
07 SNOI2019 D1T3 通信
2/3/Easy
下面的边 \((a,b)\) 表示流量为 \(a\),费用为 \(b\)。
首先有一个显然的费用流建图:
拆点,源点向每个哨站入点连 \((1,0)\),每个哨站入点向汇点连 \((1,W)\),每个哨站入点向之前所有哨站出点连 \((1,|a_i-a_j|)\),每个哨站出点向汇点连 \((1,0)\)。
容易发现连 \((1,|a_i-a_j|)\) 的时候边数太多,于是考虑线段树优化建图,由于是向之前所有哨站连边,所以要写一个主席树。
好像有一个更好写的方法,直接把二维偏序用一个 cdq 解决也行。
08 SNOI2019 D1T2 数论
3/2/Medium
可能是简单题,可是我不会/ll。
不妨令 \(P\leqslant Q\)。
令 \(L=\text{lcm}(P,Q)\),那么问题在模 \(L\) 下是循环的,我们令 \(R=(T-1)\bmod L\)。
我们将 \(i\) 向 \((i+P)\bmod Q\) 连边,那么会分成 \(\gcd(P,Q)\) 个环。
我们发现对于某个 \(a_i\),模 \(P\) 与 \(a_i\) 同余的数一定在环上会形成一个绕很多圈的区间,于是我们在环上标记一下在 \(b\) 内出现的数字,做一个前缀和即可。
时间复杂度 \(O(P+Q)\)。
09 SNOI2019 D2T1 纸牌
2/3/Easy
维护一下 \(f_{i,x=\{0,1,2\},y=\{0,1,2\}}\) 表示做到第 \(i\) 个位置,上一个位置剩 \(x\) 张,上两个位置剩 \(y\) 张,就拆成多个阶段,每一段之间矩阵快速幂即可,可以预处理二的幂次的矩阵,但是好像没有必要。
10 SDOI2019 D2T2 移动金币
3/2/Easy
11 GXOI/GZOI2019 D2T1 逼死强迫症
2/2/Easy
12 GXOI/GZOI2019 D1T2 宝牌一大堆
2/4/Easy
13 GXOI/GZOI2019 D1T3 特技飞行
3/4/Medium
14 SNOI2020 D2T1 字符串
2/3/Easy
15 SNOI2020 D1T2 取石子
4/1/Medium
16 ZJOI2019 D1T1 麻将
3/3/Medium
17 SNOI2020 D1T1 生成树
4/3/Hard
18 SNOI2020 D1T3 区间和
3/5/Medium
19 BJOI2019 D1T1 排兵布阵
1/2/Easy
20 BJOI2019 D2T3 删数
3/3/Medium
22 SNOI2020 D2T3 水池
2/4/Medium
23 JSOI2019 D1T1 精准预测
3/4/Hard
24 JSOI2019 D1T2 神经网络
4/3/Hard
把每棵树染上不同的颜色,那么可以根据颜色将哈密顿回路拆分成若干个链,且满足:
- 每条链都是某一棵树的导出子图;
- 相邻两条链(包括首尾)颜色不同;
- 钦定 \(1\) 号点为第一条链的起点。(防止算重)
口胡ed。