<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      李超樹淺談

      李超樹是一個可以多個分段一次函數,并取某個端點上所有一次分段函數的最值?;纠畛瑯湫枰S護兩個操作:

      • \([l,r]\) 加入一條線段。
      • 詢問在 \(k\) 處的最值。

      李超樹中,每個節點我們存儲的函數編號為在這個節點代表區間中點取得最值的函數編號。

      插入時,我們首先向線段樹一樣找到 \([l,r]\) 這個區間,如果這個區間以前的最優線段在中點處沒有我們新加入的函數優,我們就交換兩個線段編號,把原先在這個區間的線段繼續向下遞歸插入。

      繼續向下遞歸插入是這個函數有可能在左右半個區間中的一個中更優,我們可以通過分類討論來往下遞歸。

      我們查詢最值時,只要查詢這個路徑上所有的線段在這個點取得的值,取 \(\max\) 即可。

      關于復雜度,查詢顯然是 \(O(\log n)\) 的,而對于插入,\([l,r]\) 一共被拆成 \(O(\log n)\) 個區間,向下查又是一個 \(\log\),所以復雜度應該是 \(\log^2 n\)。

      下面的代碼為動態開點寫法。

      代碼:

      struct Node{
          int ls,rs,mx,mi;
      }p[N];
      int tot;
      inline LCT(){tot=0;}
      inline void ChangeMin(int &k,int l,int r,int z,int y,int id){
          if(!k){k=++tot;assert(tot<=N-1);}
          if(l==r){if(!p[k].mi||F(p[k].mi,l)>F(id,l)) p[k].mi=id;return;}int mid=(l+r)>>1;
          if(z<=l&&r<=y){
              if(!p[k].mi) p[k].mi=id;
              if(F(p[k].mi,mid)>F(id,mid)) swap(p[k].mi,id);
              (F(id,l)<F(p[k].mi,l))?ChangeMin(ls(k),l,mid,z,y,id):ChangeMin(rs(k),mid+1,r,z,y,id);
              return;
          }
          if(z<=mid) ChangeMin(ls(k),l,mid,z,y,id);if(mid<y) ChangeMin(rs(k),mid+1,r,z,y,id);
      }
      inline void ChangeMax(int &k,int l,int r,int z,int y,int id){
          if(!k){k=++tot;}
          if(l==r){if(!p[k].mx||F(p[k].mx,l)<F(id,l)) p[k].mx=id;return;}int mid=(l+r)>>1;
          if(z<=l&&r<=y){
              if(!p[k].mx) p[k].mx=id;
              if(F(p[k].mx,mid)<F(id,mid)) swap(p[k].mx,id);
              (F(id,l)>F(p[k].mx,l))?ChangeMax(ls(k),l,mid,z,y,id):ChangeMax(rs(k),mid+1,r,z,y,id);
              return;
          }
          if(z<=mid) ChangeMax(ls(k),l,mid,z,y,id);if(mid<y) ChangeMax(rs(k),mid+1,r,z,y,id);
      }
      inline void Change(int &k,int l,int r,int z,int y,int id){
          ChangeMin(k,l,r,z,y,id);ChangeMax(k,l,r,z,y,id);
      }
      inline int AskMin(int k,int l,int r,int w){
          if(!k) return 0;if(l==r) return p[k].mi;
          int mid=(l+r)>>1;int id=-1;
          if(w<=mid) id=AskMin(ls(k),l,mid,w);else id=AskMin(rs(k),mid+1,r,w);
          if(id==0) return p[k].mi;
          return (F(id,w)<F(p[k].mi,w))?id:p[k].mi;
      }
      inline int AskMax(int k,int l,int r,int w){
          if(!k) return 0;if(l==r) return p[k].mx;
          int mid=(l+r)>>1;int id=-1;
          if(w<=mid) id=AskMax(ls(k),l,mid,w);else id=AskMax(rs(k),mid+1,r,w);
          if(id==0) return p[k].mx;
          return (F(id,w)>F(p[k].mx,w))?id:p[k].mx;
      }
      inline void Clear(){mset(p,0);rt=0;tot=0;}
      
      posted @ 2023-07-13 21:17  NuclearReactor  閱讀(194)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 精品国产成人国产在线观看| 欧美精品V欧洲精品| 最近中文国语字幕在线播放| 国产免费一区二区不卡| 成人欧美日韩一区二区三区| 亚洲中文字幕第一页在线| 日产中文字幕在线精品一区| 鲁丝片一区二区三区免费| 伊人久久大香线蕉av色婷婷色| 亚洲另类欧美综合久久图片区| 一个色综合亚洲热色综合| 综艺| 九九热视频精选在线播放| 性一交一乱一伦| 农村老熟女一区二区三区| 四虎永久在线精品无码视频| 精品一区精品二区制服| 香蕉EEWW99国产精选免费| 亚洲国产成人综合精品| 亚洲AV国产福利精品在现观看| 蜜桃臀av在线一区二区| 免费又爽又大又高潮视频| 国产三级精品三级在线观看| 好了av四色综合无码| 日韩淫片毛片视频免费看| 中文国产不卡一区二区| 重口SM一区二区三区视频| 青青草国产精品日韩欧美| 成人无码h真人在线网站| 欧美牲交a欧美牲交aⅴ一| 先锋影音男人av资源| 精品一区二区三区四区激情| 草草浮力影院| 成人免费视频在线观看播放| 国产精品不卡一区二区在线| 美女又黄又免费的视频| 国产色婷婷亚洲99精品小说| 亚洲国产长腿丝袜av天堂| 国产偷自视频区视频| 亚洲av午夜福利大精品| 国产亚洲精品成人av在线|