首页 > 其他分享 >Educational Codeforces Round 134 (Rated for Div. 2)

Educational Codeforces Round 134 (Rated for Div. 2)

时间:2022-09-01 15:11:59浏览次数:83  
标签:Educational Rated int mask Codeforces 134 Div

Educational Codeforces Round 134 (Rated for Div. 2)

目录

D. Maximum AND

给定两个数组\(a\)和\(b\),可以对\(b\)进行任意排列,定义\(c_i = a_i \oplus b_i\),定义\(d = c_1 \& c_2 \& \cdots c_n\),求最大的\(d\)。

这种求按位操作之后的最值,基本上就是从高位往低位枚举即可

显然,最高位特别好计算,我们只需要判断\(a\)中\(1\)的数量和\(b\)中0的数量是否一致即可,如果一致则最高位可以为\(1\),但是如果最高位为\(1\),在求解次高位时就不能以这种方式去处理了,因为我们得考虑上一位的限制。

因此,我们可以维护一个mask代表上一位的限制,那么显然有\(a_i \& mask \oplus b_i \& mask = mask\)的情况。实际上,我们维护mask就是用来限定每个\(a\)能与哪些\(b\)进行匹配,注意,对于\(b\)来说,我们需要按位取反(考虑到异或操作)。

最后,我们可以用个map类似的数据结构来进行维护,代码如下,时间复杂度为:\(\mathcal{O}(n\log n \log (\max(a,b))\)

constexpr int B = 29;
void solve(){
    int n;
    std::cin >> n;;

    vt<int> a(n), b(n);
    R1V(a, n);
    R1V(b, n);

    auto check = [&](int bits){
        map<int, int> hsh;
        for (int x: a) ++ hsh[x & bits];
        for (int x: b) -- hsh[~x & bits];

        int ok = 1;
        for (auto &e: hsh) ok &= e.second == 0;
        return ok;
    };

    int ans = 0;
    for (int i = B; ~i; -- i){
        if (check(ans | (1 << i)))
            ans |= 1 << i;
    }
    wpr(ans);
}

E. Prefix Function Queries

给定一个字符串 \(s\),以及\(q(\le1e5)\)个查询。每次查询给出一个字符串\(t(|t|<=10)\),输出\(s + t\)的前缀函数在末尾\(|t|\)个位置的值。

这题容易想到首先计算出前\(|s|\)个的fail数组,然后基于此再对于后面这\(|t|\)个进行计算,但是在最坏的情况下可能需要跳转\(\mathcal{O}(n)\)次,所以我们需要进行优化。

这里需要用到可持久化KMP,但是目前我连KMP都没有做专题,所以我暂时放弃对于这部分的理解,补上几个链接:

好了 目前的任务先是把《算法导论》中的字符串部分全部学习完,再来补这个。

标签:Educational,Rated,int,mask,Codeforces,134,Div
From: https://www.cnblogs.com/Last--Whisper/p/16646557.html

相关文章

  • Codeforces Round #606(B-D)
     Dashboard-CodeforcesRound#606(Div.2,basedonTechnocup2020EliminationRound4)-CodeforcesB.MakeThemOdd题意:一个数组,每次选择一个数,将数组中的......
  • Codeforces Round #817 (Div. 4) ABCDEFG
    https://codeforces.com/contest/1722/problem/A#include<bits/stdc++.h>usingnamespacestd;typedeflonglongLL;typedefpair<int,int>PII;constintN=200200,......
  • Codeforces Round #817 (Div. 4)
    CF传送门因为洛谷题库未更新,所以给出的题面都是CF的。现场打真是太卡了(梯子挂了,codeforc.es也崩了),所以五六分钟才打开题目\(qwq\)A.SpellCheck萌萌题,把字符串放桶里......
  • Codeforces Round #817 (Div. 4)E Counting Rectangles
    CountingRectangles思维把所有的矩形左上角都叠在一起,就会发现是一个二维前缀和的求解问题:\(\sum_{i=h_s+1}^{h_b-1}\sum_{j=w_s+1}^{w_b-1}(i*j*cnt_{ij})\)这个显......
  • Codeforces Round #774 E
    这道题感觉没有E平时的难度首先我们感性理解一下相交的数只有可能是一个数的幂次才能相交比如248;3927;然后我们把他们行单独提出来再观察一下幂次发现其实都是......
  • Educational Codeforces Round 133 (Rated for Div. 2) ABD
    A.2-3Moves题意:从0,每次+2-2+3-3选一个,问多少次能到n由于对称性,先让n=abs(n)0只用0次,1只用1次t=n/3;如果n%3==1,说明t-1次+3,再来一次+2,就......
  • 学习随笔——codeforces题目Plus and Multiply解答
    摘要:构造算法与数论的结合,巧妙之处在于我们要自己模拟一遍计算过程然后从中找出特殊点。题目原地址如下:https://codeforces.com/problemset/problem/1542/B题目截图如下:......
  • 学习随笔——codeforces题目Color the Picture解答
    摘要:构造类题目题目原地址如下:https://codeforces.com/problemset/problem/1710/A题目截图如下:  关键词:构造算法,递归,*1500简要翻译:给予k种颜料,第i种颜料可以涂满a......
  • Educational Codeforces Round 134 (Rated for Div. 2)
    比赛链接:https://codeforces.com/contest/1721D.MaximumAND题意:给定两个序列\(a\)和\(b\),可以调整\(b\)中元素的位置,得到序列\(c\),满足\(c_i=a_i\)xor\(b......
  • Codeforces Round #287 (Div. 2) B. Amr and Pins(数学/思维)
    https://codeforces.com/contest/507/problem/B题目大意:Amr有一个半径为r、圆心在点(x,y)的圆。他希望圆心在新的位置(x',y')。在一个步骤中,Amr可以将一个大头针放在......