哇,好繁琐的一道数据结构题,居然有11个丧心病狂的操作。
据说正解是块状链表,但写起来特别麻烦,要接近400行才能写完,而且有些操作比较难维护。
这个时候,就要用一些黑科技了,叫odt,,全名是什么我也不太清楚,在处理随机意义下的含区间覆盖操作的数据结构有奇效,大概思路就是用STL把相同值的一串合并在一起算。
typedef pair<int,int> pii;
struct line{
pii itv;ll val;
line(){}
line(pii itv, ll val):itv(itv),val(val){}
bool operator <(const line &A)const{
return itv<A.itv;
}
};
它是这样定义的,之后的操作就十分简单了。
虽然也有300多行,但十分好写,对于这道题,跑得也十分的快了。