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

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

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

      [題解]P12651 [KOI 2024 Round 2] 最大異或

      思路

      首先應當讓位數最多,因此我們欽定 \(s_1 = S\)

      \(S\) 全零和全一都是容易解決的,那么現在只需處理 \(S\) 形如 111000111000... 的情況。

      此時為了讓最后異或的結果盡可能大,我們肯定選擇將第一段連續 0 填上。

      令第一段 1 的下標在 \([a,b]\) 上,第一段 0 在 \([c,d]\) 上。那么能夠填 \([c,d]\) 段 0 的 1 只有 \([a,b]\),容易發現最多能填 \(x = \min(b - a + 1,d - c + 1)\) 個位置。

      因此,當 \(s_2 = S_{c - x \sim n - x}\) 能讓 \(s_1 \oplus s_2\) 取到最大值。

      Code

      #include <bits/stdc++.h>
      #define re register
      
      using namespace std;
      
      const int N = 1e7 + 10;
      int n;
      char s[N],ans[N];
      
      inline int read(){
          int r = 0,w = 1;
          char c = getchar();
          while (c < '0' || c > '9'){
              if (c == '-') w = -1;
              c = getchar();
          }
          while (c >= '0' && c <= '9'){
              r = (r << 3) + (r << 1) + (c ^ 48);
              c = getchar();
          }
          return r * w;
      }
      
      inline void solve(){
          n = read();
          scanf("%s",s + 1);
          int a = -1,b = -1,c = n + 1;
          for (re int i = 1;i <= n;i++){
              if (s[i] == '1'){ a = i; break; }
          }
          if (!~a) return puts("0"),void();
          for (re int i = a;i <= n;i++){
              if (s[i] == '0'){ b = i; break; }
          }
          if (!~b){
              for (re int i = a;i < n;i++) putchar('1');
              if (a > 1) putchar('1');
              else putchar('0');
              return puts(""),void();
          }
          for (re int i = b;i <= n;i++){
              if (s[i] == '1'){ c = i; break; }
          } int len = min(b - a,c - b);
          for (re int i = n - a + 1,j = n,k = n - len;i;i--,j--,k--){
              int A = (j < a) ? 0 : (s[j] - '0'),B = (k < b - len) ? 0 : (s[k] - '0');
              ans[i] = (A ^ B) + '0';
          }
          for (re int i = 1;i <= n - a + 1;i++) putchar(ans[i]);
          puts("");
      }
      
      int main(){
          int T = read();
          while (T--) solve();
          return 0;
      }
      
      posted @ 2025-11-05 16:32  WBIKPS  閱讀(2)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久综合偷拍视频五月天| 亚洲人成网站观看在线观看| 漂亮的保姆hd完整版免费韩国| 欧美成人精品三级在线观看| 亚洲精品综合第一国产综合| 久久国产精品波多野结衣| 青青草无码免费一二三区| 2021亚洲va在线va天堂va国产| 国产高清乱码又大又圆| 日本中文一二区有码在线| 免费无码一区无码东京热| 91中文字幕一区二区| 久久99国产精品久久99| 影音先锋大黄瓜视频| 国产亚洲色婷婷久久99精品| 日本乱码在线看亚洲乱码| 亚洲av成人在线一区| 久久人人爽人人人人爽av| 国内少妇人妻偷人精品视频| 亚洲精品777| 色偷偷女人的天堂亚洲网| 国产漂亮白嫩美女在线观看| 色又黄又爽18禁免费网站现观看 | 老司机精品成人无码av| 少妇一边呻吟一边说使劲视频| 欧美人妻一区二区三区| 亚洲av成人在线一区| 京山县| 污网站在线观看视频| 久热久热中文字幕综合激情| 少妇精品亚洲一区二区成人| 亚洲av综合色一区二区| 久久波多野结衣av| 亚洲精品在线视频自拍| 无码无需播放器av网站| 亚洲成人av免费一区| 泰和县| 中文无码热在线视频| 久久碰国产一区二区三区 | 成人无码区在线观看| 最新国产精品中文字幕|