做题记录
Week 1
今日做题:
P8557 炼金术 组合数学。考虑每个物品可以被
P8567 Nothing 数学,判奇数个数,使用
P2181 对角线 组合数学。每个交点对应4个顶点,所以答案为
P1115 最大子段和 基础DP。
P1719 最大加权矩形 组合数学,DP。这题可以看作P1115的展开。使用压缩行的技巧,注意这只能压缩相邻的行,所以共有
P1004 方格取数 DP。考虑同时走两条路,
P1434 滑雪 DP。
Week2
B3695 集合运算3 bitset,位运算。很简单,交集为按位与,并集为按位或,对称差为按位异或。
B3666 求数列所有后缀最大值的位置 单调栈。单调栈板子,维护一个下标栈。
B3667 求区间所有后缀最大值的位置 单调队列。单调队列板子,使用deque,超出区间长度弹掉即可。
P6510 奶牛排队 单调栈。求一个左端点为区间严格最小值,右端点为区间严格最大值的最长区间的长度。维护两个单调栈,一个用于求严格后缀最大值,一个用于求严格后缀最小值。枚举右端点,左端点为右端点上一个后缀最大值之后最小的后缀最小值(符合要求中离栈底最近)。vector时不能直接跳过空栈。感谢 珂小爱。
B3693 数列前缀和 4 二维前缀和。记得开us ll 。我居然没提交。
P2865 [USACO06NOV] Roadblocks G 次短路。使用 Dijkstra 在维护最短路的同时更新次短路。逻辑时“用不上的给你挑”(也许吧,到时候忘了再看代码)。
P4568 [JLOI2011] 飞行路线 分层图。建图的时候从第0层到第k层,当前层正常走,到下一层免费,然后 Dijkstra。
P4822 [BJWC2012] 冻结 分层图。上一题的双倍经验,建图的时候改一下到下一层的费用为二分之一就行。