思维题
洛谷 T200118 童年
考虑进入一颗子树 u u u,使得该操作不会亏损苹果,至少需要的苹果数为 f u f_u fu。
dfs 遍历每个 u u u,考虑如何求出 f u f_u fu ,维护一个优先队列 q q q 和当前苹果数 c u r cur cur,初始 f u = − a i f_u=-a_i fu=−ai,按 f v f_v fv 的大小依次 bfs 遍历 u u u 子树的每个 v v v,如果 c u r < f v cur<f_v cur<fv ,即需要更多的苹果才可能赚到, f u ← f u + f v − c u r f_u \leftarrow f_u+f_v-cur fu←fu+fv−cur,否则 c u r ← c u r − f v cur \leftarrow cur-f_v cur←cur−fv,任意时刻如果 c u r ≤ f u cur\leq f_u cur≤fu 退出循环,如果 c u r cur cur 始终小于 f u f_u fu,即赚不到苹果, f u = i n f f_u=inf fu=inf。
求出答案用类似的思路即可。
贪心 + + + DP ,将大问题化为子问题,熟练使用子状态。
CF1528B Kavi on Pairing Duty
任何不等大的匹配必为包含关系,即大的匹配包含小的匹配,设 f i f_i fi 为长为 2 i 2i 2i 的匹配集的方案数。
一种情况,将
k
k
k 个等大的匹配,放在外面,总方案数为
∑
j
=
1
i
−
1
f
i
\sum_{j=1}^{i-1}f_i
∑j=1i−1fi。
另一种情况,将
i
i
i 个匹配分组,每组均为若干个等大的匹配,总方案数为
σ
0
(
i
)
\sigma_0(i)
σ0(i)。
CF1553D Backspace
考虑影响,首位 Backspace 相当于删除一个字符,其他 Backspace 相当于删除两个字符。
观察 T T T 与 S S S 的奇偶性,若不同必须 Backspace 第一个。
其他按位贪心匹配,无法匹配就只能 Backspace。
考虑奇偶性,贪心匹配。
洛谷 P7853 「EZEC-9」进位
第一问:观察到无论以怎样的数据,答案均不会改变。
证明:按位考虑,每一位被贡献的次数是不变的。
第二问:化为求最长连续进位段的长度,即最长可以进位的段的长度。
模拟 f i = ⌊ f i − 1 2 ⌋ + b i f_i=\lfloor \frac{f_{i-1}}{2}\rfloor+b_i fi=⌊2fi−1⌋+bi,注意最高位最多进位 20 20 20 次,注意数组空间大小即可。
洛谷 P7893 『JROI-3』黑白棋
a n s = ∑ i = 0 ∞ ( − 1 ) i × ⌊ n p i ⌋ ans=\sum_{i=0}^{\infin}(-1)^i\times\lfloor\frac{n}{p^i}\rfloor ans=i=0∑∞(−1)i×⌊pin⌋
用 unsigned long long 会炸,用 __int128 会 TLE,考虑用除法代替乘法来判断上界。
CF1209D Cow and Snacks
将每个人喜欢的两个点心用并查集合并,一个大小为 c c c 的连通块能满足 c − 1 c-1 c−1 个人,记连通块数量为 C C C,因为 n = ∑ c i n=\sum c_i n=∑ci,故 a n s = k − ( n − C ) ans=k-(n-C) ans=k−(n−C)。
P7887 「MCOI-06」Existence of Truth
记 s i = ∑ j = 1 i a j s_i=\sum_{j=1}^{i}a_j si=∑j=1iaj,以下运算均在 m o d 1 0 9 + 7 \bmod 10^9+7 mod109+7 的意义下进行。
方程通项可表示为 x i s i − y i s i − 1 + y i s n = z i x_is_i-y_is_{i-1}+y_is_n=z_i xisi−yisi−1+yisn=zi
将 x i , y i , z i x_i,y_i,z_i xi,yi,zi 作为参数,观察系数矩阵,发现可用第一行的第一项消去第二行的第二项,用第二行的第一项消去第三行的第二项,最后 i = n i=n i=n 的方程只剩下一个未知数,求出回代即可。
P1975 [国家集训队]排队
考虑交换的影响。
P1966 [NOIP2013 提高组] 火柴排队
考虑 a i a_i ai 与 b i b_i bi 都为本序列第 i i i 小时是答案。
P3605 [USACO17JAN]Promotion Counting P
子树内比 p u p_u pu 强的等于遍历完后比它强的 − - − 遍历前比它强的,树状数组维护即可。
CF1213G Path Queries
离线询问,并查集统计连通块大小即可。
P2184 贪婪大陆
对每个线段开头结尾打上不同的 tag ,区间 [ l , r ] [l,r] [l,r] 不同线段个数等于 [ 1 , r ] [1,r] [1,r] 的开头 tag 数减 [ 1 , l − 1 ] [1,l-1] [1,l−1] 的结尾 tag 数。
P2789 直线交点数
当直线不平行时才会产生交点,枚举每条线段的平行状态即可,具体的,每次枚举多少条线平行即可。
P3917 异或序列
按位考虑,考虑每个数每一位被包含的次数,维护 f i , j f_{i,j} fi,j 第 j j j 位,以第 i i i 个数结尾的区间和为奇数的个数 f i , j { i − f i − 1 , j , a i and 2 j f i − 1 , j f_{i,j}\begin{cases}i-f_{i-1,j},a_i \operatorname{and}2_j\\f_{i-1,j} \end{cases} fi,j{i−fi−1,j,aiand2jfi−1,j每个 KaTeX parse error: Expected '}', got 'EOF' at end of input: f_{i,j] 的贡献为 2 j × f i , j 2^j\times f_{i,j} 2j×fi,j。
令一种做法参考 P5686 [CSP-S2019 江西] 和积和。
构造题
P7903 「DCOI」兜心の顶
以 1 1 1 为根构造大小为 5 , 3 , 1 , 1 , 1 , ⋯ 5,3,1,1,1,\cdots 5,3,1,1,1,⋯ 的子树即可, n n n 小于 9 9 9 无解。
构造菊花图。
P7902 「PMOI-0」儒略日
构造 1 , 3 , 5 , ⋯ , 2 , 2 , 4 , 4 , ⋯ , 1 , 3 , 5 , ⋯ 1,3,5,\cdots,2,2,4,4,\cdots,1,3,5,\cdots 1,3,5,⋯,2,2,4,4,⋯,1,3,5,⋯ 的数列即可,当 d > 2 × ⌊ n 2 ⌋ + ⌊ n + 1 2 ⌋ − 1 d>2\times\lfloor \frac{n}{2}\rfloor+\lfloor \frac{n+1}{2}\rfloor-1 d>2×⌊2n⌋+⌊2n+1⌋−1 无解。
P7886 「MCOI-06」Gerrymandering
两种构造方法,蛇形或分区块。
分块的证明
k
∣
n
m
⇒
∃
a
b
=
k
,
a
∣
n
,
b
∣
m
k|nm\Rightarrow \exist\space ab=k,a|n,b|m
k∣nm⇒∃ ab=k,a∣n,b∣m。
交互题
CF1534D Lost Tree
观察到为上取整 ⌈ n 2 ⌉ \lceil \frac{n}{2}\rceil ⌈2n⌉。
取 1 1 1 为根节点,深度为奇数的点集为 S S S,偶数为 T T T,遍历较小一方即可。
善用树的深度。
P7895 『JROI-3』删树
-
权值和等于叶子节点按 dfs 序排序后,两两相邻的距离和的二分之一。
-
记 i i i 的深度为 d i d_i di ,权值和等于 ∑ i = 2 , d i > 2 n d s t ( 1 , i ) ∗ d i \sum_{i=2,d_i>2}^{n}dst(1,i)*d_i ∑i=2,di>2ndst(1,i)∗di
设当前叶子数为 c c c,若需要的交互次数大于剩余交互次数时执行 del 操作即可。
这篇博客主要探讨了各类思维题和构造题的解题策略。涵盖了洛谷、CF等平台的题目,如洛谷T200118童年、CF1528B Kavi on Pairing Duty等,涉及贪心、DP、动态规划、并查集等算法。通过具体的题目分析,讲解了解题过程和关键思路,旨在帮助读者提升算法思维和解题能力。
2180

被折叠的 条评论
为什么被折叠?



