20250812

总结

今天写了一套高考英语模拟卷(除了作文和七选五),晚上(7点之后)写了高一物理习题2个小节,对了答案
英语耗时1h 13min(30+23+20),物理耗时1h

习题

P2541

总用时:1h 21min

  • 思路历程:先考虑暴力,给n个序列先排序,再维护小根堆。后面就不会了
  • 题解:进行优化,通过手推样例,发现每个状态都可能由几个不同的状态入堆,所以只需要优化前驱就能解决时间问题
    规定每个状态只能由最后一行前一个数的状态转移,如果无法选择,则从下往上找第一个可行行即可

收获:
多手推数据可以找到方法

CF1924B

总用时:2h 03min

  • 思路历程:想直接用线段树维护,初始非常简单,只需要维护前面和后面的港口相乘就行,
    对于增加港口的操作,可以把港口左右分开,算一个新的距离,乘一个权重商(w2/w1),维护区间加和区间乘,注意一下精度问题就行了,卡卡常就过了
  • 题解:和我的思路一样

P4587

总用时:2h 07min(思考花费1h+,调代码用了挺久,因为主席树某个神秘参数mid + 1变成了mid)

  • 思路历程:先考虑暴力:对于每次询问,把[l, r]区间暴力排序,从左往右扫,设当前可以表示的数为[1, x],若a[i] > x + 1,答案就出来了,否则[1, x + a[i]], 继续。
    考虑优化,继续刚才的思路,可以惊奇地发现,如果小于ans的数的和>=ans,那么肯定由没有被选的<=ans的数
    直接用主席树维护
  • 题解:第一篇题解就是这么写的,和我的一样

P7706

总用时:1h+

  • 思路历程:考虑使用线段树,对于每一个节点,都维护该区间最优解,考虑如何更新
    问题转换为求Max{Aa - Bb}, Max{Ac - Bb}
    接下来就得到了转移方式:tr[cur] = max{tr[cur << 1], tr[cur << 1 | 1], Max{a[i]} - Min{b[i]}}
    只需要一个一个合并起来维护,直接查询就行了
  • 题解:大部分都是线段树解法

CF2000H

这个题没搞完

posted @ 2025-08-12 21:01  姜树  阅读(4)  评论(0)    收藏  举报