你说得对,但是
  • 板块灌水区
  • 楼主PurslaneM2GA
  • 当前回复10
  • 已保存回复10
  • 发布时间2024/5/29 17:21
  • 上次更新2024/5/29 20:35:13
查看原帖
你说得对,但是
120947
PurslaneM2GA楼主2024/5/29 17:21

写 P2305。我寻思着封装一个 Segment\rm Segment 结构体,再用 vector 实现动态开点,得多舒服啊!

于是:(仅展示部分代码)

struct Node {Seg sg;int lson,rson;};
int tot=0,rt=0; vector<Node> t;
void insert(int& u,int l,int r,Seg sg) {
  if(!u) return t.push_back({sg,0,0}),u=++tot,void();
  if(l==r) {
    if(sg.f(l)<t[u].sg.f(l)) swap(sg,t[u].sg);
    return ;
  }
  if(sg.f(mid)<t[u].sg.f(mid)) swap(sg,t[u].sg);
  if(sg.k<t[u].sg.k) insert(t[u].rson,mid+1,r,sg);
  else insert(t[u].lson,l,mid,sg);
  return ;
}

怎么都调不过去,然后再倒数第三行处加了个 assert(t[u].lson);,发现 RE 了???

后来想到 vector 会动态更新内存。插入一个数之后这个地址直接作废了。

你妈的。

2024/5/29 17:21
加载中...