Codeforces Round 947 (Div. 1 + Div. 2) VP记录
我是唐诗,我是唐诗,我是唐。
场切:A B C E。笑点解析 D 是我不在场的 GJ 模拟赛的 T1 签到题。
A
找 \(a_i < a_{i - 1}\) 然后按数量分讨即可。
B
最小值要取,不能被最小值表示出来的数的最小值要取,暴力即可。
C
先对相邻两个值的较小值取 \(\max\),然后对相邻三个数的中位数取 \(\max\)。
D
赛时不会证明最优性觉得我的做法可能是错的所以没写,赛后发现我的贪心就是对的。
蓝色要有贡献需要走到一个红色点上。
所以最优是先两人汇合,然后蓝跟着红走就行。
显然先找到两人的距离,然后暴力跳完成第一步。
然后设相遇点为 \(x\),找到 \(x\) 的最远点即可,最终答案表达式很好推。
E
维护度数不是很可行。
判断链很头疼,考虑树上差分。
考虑构造一棵树满足每个点的子树和为这个点的颜色。
钦定 \(1\) 号点为根。那么在这种情况下,把黑点变白就是 $c_{fa_i} $ 自增,\(c_i\) 自减。把白点变黑反之。
考虑一条链在这种情况下是什么东西。
如果这条链是顺着树边往下的,那么这条链是由一个 \(1\) 和一个 \(-1\) 组成。由于整棵树如果包括 \(1\) 号点父亲的虚拟节点始终满足节点和为 \(1\),所以形成一个 \(1\) 一个 \(-1\) 的时候,\(-1\) 必然在 \(1\) 上面,所以如果整棵树存在两个点的权值是 \(-1\) 和 \(1\),并且其它点的权值为 \(0\),那么这棵树必然合法。
否则由两个 \(-1\) 和两个 \(1\) 组成。手玩一下,发现要满足,两个 \(1\) 的 \(\operatorname{lca}\) 在一个 \(-1\) 上,并且这个 \(-1\) 的父节点为 \(-1\)。
用 set 维护正数点和负数点即可。
F
考场上还剩半个小时我应该把这题做出来的。
可惜最后半个小时我都没看懂题(雾
简单来说,题目给出了 \(2^n - 1\) 个限制形如要求一个集合与当前集合的交集的大小在对应的限制集合中。然后我们要找到若干个集合,满足所有的限制。
考虑从前往后填数。当我们填完前 \(x\) 个数后,本质上限制的数量就只剩 \(2 ^{n - x}\) 个了。
所以考虑限制怎么合并。
如果不填当前数,那么对于两个集合满足这两个集合的区别仅为存不存在当前数,限制显然直接取交即可。
否则将存在当前数的集合的每个数减一后与不存在当前数的集合取交即可。
G
还没补。
H
还没补。
I
还没补。
标签:没补,947,Codeforces,即可,集合,Div,Round From: https://www.cnblogs.com/AzusidNya/p/18397634