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

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

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

      Loading

      「學(xué)習(xí)筆記」二維數(shù)點(diǎn)

      P2163 [SHOI2007] 園丁的煩惱 - 洛谷 | 計(jì)算機(jī)科學(xué)教育新生態(tài) (luogu.com.cn)

      這個(gè)是二維數(shù)點(diǎn)的板子題,二維數(shù)點(diǎn)這一類題目就是上面的題所描述的,我們用樹(shù)狀數(shù)組 + 離散化來(lái)解決這個(gè)問(wèn)題。

      這里就不解釋了,記錄此篇博文的目的主要就是提醒自己曾經(jīng)學(xué)過(guò)這個(gè),看看代碼,方便回憶起來(lái)。

      這題其實(shí)不用離散化,離散化會(huì) T,開(kāi) O2 才能過(guò)。

      //The code was written by yifan, and yifan is neutral!!!
      
      #include <bits/stdc++.h>
      using namespace std;
      typedef long long ll;
      #define bug puts("NOIP rp ++!");
      typedef pair<int, int> pii;
      #define lowbit(x) (x & (-x))
      
      template<typename T>
      inline T read() {
          T x = 0;
          bool fg = 0;
          char ch = getchar();
          while (ch < '0' || ch > '9') {
              fg |= (ch == '-');
              ch = getchar();
          }
          while (ch >= '0' && ch <= '9') {
              x = (x << 3) + (x << 1) + (ch ^ 48);
              ch = getchar();
          }
          return fg ? ~x + 1 : x;
      }
      
      const int N = 1e6 + 5;
      
      int n, m, lim;
      ll t[N << 3];
      ll ans[N];
      pii v[N];
      vector<int> s;
      
      struct vt {
          int x, y;
      } V[N];
      
      struct ASK {
          int xl, yl, xr, yr;
      } Ask[N << 2];
      
      struct Query {
          int x, y, opt, id;
      } ask[N << 2];
      
      void add(int x, int v) {
          while (x <= lim) {
              t[x] += v;
              x += lowbit(x);
          }
      }
      
      ll query(int x) {
          ll ans = 0;
          while (x) {
              ans += t[x];
              x -= lowbit(x);
          }
          return ans;
      }
      
      int main() {
          n = read<int>(), m = read<int>();
          s.emplace_back(-100);
          for (int i = 1; i <= n; ++ i) {
              int x = read<int>(), y = read<int>();
              V[i] = vt{x, y};
              s.emplace_back(x), s.emplace_back(y);
          }
          for (int i = 1; i <= m; ++ i) {
              int xl = read<int>(), yl = read<int>(), xr = read<int>(), yr = read<int>();
              Ask[i] = ASK{xl, yl, xr, yr};
              s.emplace_back(xl), s.emplace_back(yl);
              s.emplace_back(xr), s.emplace_back(yr);
          }
          sort(s.begin(), s.end());
          s.erase(unique(s.begin(), s.end()), s.end());
          for (int i = 1; i <= n; ++ i) {
              int x = lower_bound(s.begin(), s.end(), V[i].x) - s.begin() + 1;
              int y = lower_bound(s.begin(), s.end(), V[i].y) - s.begin() + 1;
              v[i] = {x, y};
              // cout << x << ' ' << y << '\n';
          }
          for (int i = 1; i <= m; ++ i) {
              int xl = lower_bound(s.begin(), s.end(), Ask[i].xl) - s.begin() + 1;
              int yl = lower_bound(s.begin(), s.end(), Ask[i].yl) - s.begin() + 1;
              int xr = lower_bound(s.begin(), s.end(), Ask[i].xr) - s.begin() + 1;
              int yr = lower_bound(s.begin(), s.end(), Ask[i].yr) - s.begin() + 1;
              ask[i] = Query{xl - 1, yl - 1, 1, i};
              ask[i + m] = Query{xl - 1, yr, -1, i};
              ask[i + 2 * m] = Query{xr, yl - 1, -1, i};
              ask[i + 3 * m] = Query{xr, yr, 1, i};
          }
          sort(v + 1, v + n + 1);
          sort(ask + 1, ask + 4 * m + 1, [](Query a, Query b) -> bool {
              return a.x < b.x;
          });
          int cur = 1;
          lim = s.size();
          for (int i = 1; i <= 4 * m; ++ i) {
              Query it = ask[i];
              while (v[cur].first <= it.x && cur <= n) {
                  add(v[cur].second, 1);
                  ++ cur;
              }
              ans[it.id] += it.opt * query(it.y);
          }
          for (int i = 1; i <= m; ++ i) {
              cout << ans[i] << '\n';
          }
          return 0;
      }
      
      posted @ 2023-08-06 19:43  yi_fan0305  閱讀(142)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 韩国无码AV片午夜福利| 精品一区二区三区不卡| 国产成人精品国内自产色| 黄色舔女人逼一区二区三区| 国产a在亚洲线播放| 老司机午夜精品视频资源| 国产精品黄色片| 国产一区二区四区不卡| 国产成人av三级在线观看| 国产叼嘿视频一区二区三区| 亚洲鸥美日韩精品久久| 日韩无人区码卡1卡2卡| 色婷婷亚洲精品综合影院| 欧美巨大巨粗黑人性aaaaaa| 久久亚洲精品无码播放| 丰满熟妇乱又伦在线无码视频| 欧美自拍另类欧美综合图片区| 久久se精品一区精品二区| 人人玩人人添人人澡超碰| 免费看欧美日韩一区二区三区| 国产精品视频午夜福利| 国产精品久久久久鬼色| 国产精品中文字幕观看| 开心五月婷婷综合网站| 在线a级毛片无码免费真人| 国产在线无码不卡播放| 亚洲欧美综合人成在线| 国产精品第一二三区久久| 成人嫩草研究院久久久精品| 午夜高清福利在线观看| 亚洲乱码日产精品一二三| 中文字幕日韩欧美就去鲁| 国产盗摄xxxx视频xxxx| 人人妻人人澡人人爽人人精品av| 国产香蕉尹人在线视频你懂的 | 国产对白老熟女正在播放| 少妇一边呻吟一边说使劲视频| 国产成人亚洲无码淙合青草| 毛片网站在线观看| 亚洲精品一区二区天堂| 中文字幕色偷偷人妻久久|