codeforces 比赛记录

CF2023 div2

赛时: ABCD,rk 402,做的挺慢

A. Profitable Interest Rate

小分讨。

B. Buying Lemonade

简单贪心,每次找出整个数组最小值,可以无损买水,然后需要找出没有水的地方,要有些损耗,可以用优先队列维护。

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

傻逼区分度,不好评价...

posted @ 2024-10-20 09:43  oXUo  阅读(21)  评论(0编辑  收藏  举报
网站统计