noip 以后 CF 题选录

contests

Educational Codeforces Round 117

D. X-Magic Pair

发现能够凑出的数都是这样形成的:
比如 \(a>b\),那么一直让 \(a\)\(b\),如果 \(a<b\) 那么交换
然后模拟 \(gcd\) 的过程即可,即求 \(gcd\) 的过程 \(x\%b==a\%b\) 则满足条件


E. Messages

利用期望的线性性,那么总期望等于各信的期望之和
假如目前选择 \(t\) 封信,那么对于一个信的主人 \(i\),如果 \(k_i\ge t\),那么获得 \(1\) 的期望,否则获得 \(k_i/t\) 的期望
考虑 \(t\) 的范围,结论是 \(t\le max\{k_i\}\)

证明:假设 \(t\)\(21\) 的最有情况,即前 \(21\) 大的信都有 \(x\) 个人,每个人的 \(k\) 都是 \(20\),那么减少的为 \(\frac{1}{21}F* 20x\),增加的是 \(\frac{20}{21}Fx\),发现最有情况正好相等,那么意味着 \(t\) 变成更大一定不优


F. Armor and Weapons

首先暴力的想法是直接 \(bfs\) 二元组 \((a,b)\)
然而一个很好的条件是特殊点对的加成为 \(1\),那么发现 \(x\)\(y\) 越大一定越优
可以按照层数来 \(dfs\),那么对于每层来说如果存在点对 \((x,y)\)\((x',y')\),满足 \(x\ge x',y\ge y'\),那么 \((x',y')\) 可以说是没有用的了
那么这样每层的状态实际上非常少,最多 \(m\) 个,而 \(bfs\) 到答案最多大约 \(log\) 层,那么复杂度 \(mlogn\)

这道题启示我们进行类最短路 \(bfs\) 时要尽量地对状态进行优化与剪枝


G. Max Sum Array

首先是这样一个结论:一开始两端点一个定放个数最多的那种数,证明省略
那么就出现了可以递归的子问题,然后递归处理即可
发现出现不同方案数可能由于每一层同时有多个个数最多的数,假设有 \(k\)
通过同样的方式可以证明摆放顺序没有关系,那么有 \((k!)^2\) 种方案
利用桶排 \(O(m)\) 处理即可


Codeforces Round 709

C. Skyline Photo

写出来 \(dp\) 方程:\(f[i]=max\{f[j]+b_{min\{a_i\}}\}\)
发现转移是成段的,即每个 \(i\) 管理一段
那么可以直接用单调栈来解决这个问题,每个单调栈里记录栈中这个元素到上一个元素之间的最优转移即可


D. Useful Edges

首先是暴力的想法,枚举每一条边,枚举每一个三元组,如果满足 \(dis[u][x]+w(x,y)+dis[y][v]\le l\) 则满足条件
移项得 \(dis[u][x]+w(x,y)\le l- dis[y][v]\)
两边都有的是 \(u,y\),那么对于固定的 \(u,y\),枚举一边更新另一边即可


杂题

数据结构

CF1136E Nastya Hasn't Written a Legend

我也不知道正解是怎么想到这道题中的不变量的……
发现 \(a_i\ge a_{i-1}+k_{i-1}\ge …… \ge a_1+sum_{i-1}\)
那么设 \(u_i=a_i-sum{i-1}\)
那么带入得到 \(u_i\ge u_{i-1}\),即是单调的
操作一相当于单点加,配合线段树上二分与区间覆盖来维护单调新
操作二相当于区间和,减去前缀和的前缀和

注意可能区间赋值为零,\(lazy\) 标记要初始化为 \(-inf\)

posted @ 2021-12-06 21:25  y_cx  阅读(44)  评论(0编辑  收藏  举报