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

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

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

      Codeforces Round #852 (Div. 2) D - Moscow Gorillas

      https://codeforces.com/contest/1793/problem/D

      不妨枚舉 MEX(...) 的值 x。此時對于序列 [l, r],需要滿足:兩個序列的 1 到 x - 1 都在這個區間內,并且 x 都不在這個區間內。

      對于第一個條件,我們可以按照順序處理兩個序列的 1 到 x - 1 的最左邊位置和最右邊位置,顯然可以在枚舉的過程中 O(1) 處理。我們可以對 x = 1 的情況進行特殊處理,在此之后,這個區間就必須要包含至少一個值,假設此時左端點要落在 [1, L] 內,右端點要落在 [R, n] 內,那么 L <= R 成立。

      接下來考慮第二個要求:不能包括兩個位置。我們對其中一個位置 p 進行分析:

      1) L <= p <= R,此時序列一定會包含 p,方案數為 0。

      2) p < L,此時左端點不能到 p 的左邊,那么需要將左端點更新為 [p + 1, L]。 p > R 同理。

      最后只要將左右端點的區間長度相乘就是 MEX(...) 為 x 時的答案了。

      轉自 :作者:tiger_2005 https://www.bilibili.com/read/cv21786337 出處:bilibili   侵刪

       

      int A[200010], B[200010], N;
      int idxA[200010], idxB[200010];
      long long cnt1 (int p) {
          return 1ll * p * (p + 1) / 2;
      }
      int main(){
          cin >> N;
          readI(1, N, A);
          readI(1, N, B);
          long long ans = 1; // whole array
          for (int i = 1; i <= N; i ++) {
              idxA[A[i]] = i;
              idxB[B[i]] = i;
          }
          int L = N, R = 1;
          for (int i = 1; i <= N; i ++) {
              int p = idxA[i], q = idxB[i];
              if (p > q)
                  swap(p, q);
              if (i == 1) {
                  if (p == q)
                      ans += cnt1(p - 1) + cnt1(N - p);
                  else
                      ans += cnt1(p - 1) + cnt1 (q - p - 1) + cnt1(N - q);
              }
              else {
                  L = min(L, idxA[i-1]);
                  R = max(R, idxA[i-1]);
                  L = min(L, idxB[i-1]);
                  R = max(R, idxB[i-1]);
                  // consider l in [1, L] ans r in [R, N]
                  // printf("- %d %d %d\n", i, L, R);
                  int lr = L, rl = R;
                  int ll = 1, rr = N;
                  if ((L <= p && p <= R) || (L <= q && q <= R))
                      continue;
                  if (p < L)
                      ll = max(ll, p + 1);
                  if (p > R)
                      rr = min(rr, p - 1);
                  if (q < L)
                      ll = max(ll, q + 1);
                  if (q > R)
                      rr = min(rr, q - 1);
                  ans += 1ll * (lr - ll + 1) * (rr - rl + 1);
                  // printf("* [%d %d] [%d %d]\n", ll, lr, rl, rr);
              }
          }
          printf("%lld\n", ans);
          return 0;
      } 

       

      posted @ 2023-02-15 10:44  摸魚選手LLF  閱讀(85)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产精品爽爽久久久久久竹菊| 精品人妻伦九区久久aaa片69| 国外av片免费看一区二区三区| 午夜精品极品粉嫩国产尤物| 97久久超碰国产精品2021| 日本深夜福利在线观看| 99人中文字幕亚洲区三| 黑人巨大精品oideo| 97视频精品全国免费观看| 久久香蕉欧美精品| 国产精品色内内在线播放| 新乡市| 亚洲av乱码一区二区| 亚洲愉拍一区二区三区| 日韩有码av中文字幕| 成人小说亚洲一区二区三区| 欧洲精品色在线观看| 区。| 国产99视频精品免费视频6| 国产午夜精品福利视频| 南投市| 亚洲精品乱码久久久久久按摩高清 | 四虎成人在线观看免费| free性开放小少妇| AV喷水高潮喷水在线观看COM| 99re热视频这里只精品| 国产精品国产高清国产av| 日韩精品永久免费播放平台| 免费AV片在线观看网址| 日本熟妇乱一区二区三区| 狂野欧美性猛交免费视频| 少妇人妻偷人精品无码视频| 欧美成本人视频免费播放| 国产精品中文字幕视频| 亚洲精品综合一区二区在线| 亚洲国产精品成人精品无码区在线| 中文字幕国产精品第一页| 日韩精品人妻av一区二区三区| 丰满爆乳一区二区三区| 久久夜色国产噜噜亚洲av| 成人无套少萝内射中出|