标签:pair efi include mod 细节 https 如何 分治 amp
loj #3146. 「APIO 2019」路灯
暴力的话就是查询\((l,r)\)之间是否全部是1,考虑如何优化查询
我们可以利用\(set\)来维护每一个全\(1\)区间和它出现的时间,具体的,用\((lp,rp,l,r)\)来表示\((lp,rp)\)的全\(1\)区间在时间\([l,r]\)中是存在的
那么对于一个在时间\(i\)的询问\((l_i,r_i)\),\((lp,rp,l,r)\)会对它产生贡献当且仅当\(lp\leq l_i,rp\geq r_i,i\geq l\),产生的贡献为\(min(i,r)-l+1\)
注意到限制的条件其实是类似于三维偏序的,将全\(1\)区间的四元组也当做询问,我们按照\(r\)值降序所有的询问,进行\(cdq\)分治
考虑前一半对后一半的贡献,两边分别按\(l\)升序排序,线段树维护这个类似区间长度的贡献即可
细节稍微有点小多,而且由于过度使用stl所以常数巨大
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
loj #3146. 「APIO 2019」路灯
标签:pair efi include mod 细节 https 如何 分治 amp
原文地址:https://www.cnblogs.com/encodetalker/p/11105339.html