codeforces 比赛记录
CF2023 div2
赛时: ABCD,rk 402,做的挺慢
小分讨。
简单贪心,每次找出整个数组最小值,可以无损买水,然后需要找出没有水的地方,要有些损耗,可以用优先队列维护。
C. Concatenation of Arrays *1300
e...傻逼贪心。
首先每个数组内部是没有影响的,我们考虑临项交换,将每个数组形象成一个区间。
- 若两区间相离,显然小的在前更优。
- 若两区间相互包含,交换后贡献不变,即前后位置没有影响。
- 若两区间相交,则有更小的区间在前更优。
所以我们得出一个方案,按照区间左端点从小到大排序,若相等则按右端点从小到大排序。
D. Skipping *1800
简单 DP,我们考虑 \(f_i\) 表示从 \(1\) 到达 \(i\) 的最小损耗,则有 \(f_i = \min\limits_{j = 1,b_j \geq i}^{i-1} f_j + a_j\)
显然可以数据结构优化,答案即为 \(\max s_i - f_i\)。
复杂度 \(\mathcal{O}(n\log{n})\)。
有一个更简单的方法,是建图,跑 dijkstra。
E. C+K+S *2400
傻逼区分度,不好评价...