T1
很简单的贪心,证明略。
ps: double \text{double} double 过不了,需要用 long double \text{long double} long double
T2
啊啊啊!!!土拨鼠尖叫 . j p g .jpg .jpg
嗑了一个多小时,然后老师把题删了 ,因为题是假的。
(
O
ˊ
(\text{Ó}
(Oˊω
O
ˋ
)
\text{Ò})
Oˋ)
T3
可以先假设某渣男只脚踏两条船。
- 考虑对 A i − B i A_i-B_i Ai−Bi大到小排序, 那么选A属性的那些物品肯定在选B属性的那些物品之前。
- 那么就可以枚举分界点, 对于每个物品的前缀, 求得其最大的a个数相加的值, 放入一个堆中维护就可以。
然后考虑如何将三条船转换成两条。
- 由于总要选一个人送, 可以把 A i , B i − = C i , C i = 0 A_i,B_i-=C_i, C_i=0 Ai,Bi−=Ci,Ci=0,即将问题变成了三个。
用上面的方法即可解决问题。
T4
没有操作
3
,
4
3,4
3,4 就是裸的线段树。
数据比较小时可以暴力。
考虑正解:
R
R
R 比较小时可以用线段树维护一个
r
∗
r
r*r
r∗r 的矩阵, 用矩阵乘法转移。
R
R
R 比较大时维护一个可持久化
fhqtreap
\text{fhqtreap}
fhqtreap,把维护的矩阵拉成一个数组即可。