首页 > 其他分享 >leetcode 2564. 子字符串异或查询[题解]

leetcode 2564. 子字符串异或查询[题解]

时间:2023-03-02 17:14:53浏览次数:51  
标签:res val int 题解 ll 2564 异或 ans

链接子字符串异或查询
思路:题目说 \(val \oplus first=second\)

可得\(val = second \oplus first\)

题目变成从\(0-1\)串中找到最先出现的\(val\)的二进制表示,注意是\(10^5\)次询问。原来认为是\(AC\)自动机类的东西,但仔细一想,数字最多\(30\)位,那么字符串\(s\)存在的数字数量仅为\(10^5\)级别,那么我们可以预处理出所有数字的所在位置。

\(Code\)

class Solution {
public:
    vector<vector<int>> substringXorQueries(string s, vector<vector<int>>& queries) {
        #define ll int 
        map<ll,pair<int,int > >S;
        int sz = s.size() - 1;
        for(int len=1;len<=30;++len){
            for(int i=0;;++i){
                if(s[i] == '0' and len != 1)continue;
                if(i+len-1>sz)break;
                ll now = 0;
                for(int j=i;j<=i+len-1;++j){
                    now <<= 1;
                    if(s[j] == '1')now += 1ll;
                }
                if(S.count(now))continue;
                S[now] = {i,i+len-1};
            }
        }
        vector<vector<int> > ans;
        int tot = -1;
        for(auto i:queries){
            ll res = (ll)i[0] ^ i[1];
            if(S.count(res)){
                ans.push_back({S[res].first,S[res].second});
            }else {
                ans.push_back({-1,-1});
            }
        }
        return ans ;
    }
};

标签:res,val,int,题解,ll,2564,异或,ans
From: https://www.cnblogs.com/violentbear/p/17172409.html

相关文章

  • leetcode2565. 最少得分子序列[题解]
    最少得分子序列给你两个字符串s和t。你可以从字符串t中删除任意数目的字符。如果没有从字符串t中删除字符,那么得分为0,否则:令left为删除字符中的最小下标。......
  • 洛谷P4051 [JSOI2007]字符加密 题解 后缀数组sa的应用
    题目链接:https://www.luogu.com.cn/problem/P4051题目大意:给定一个长度为\(n\)的字符串\(s\),每次将\(s\)的首字符取出放到末尾……这样能得到\(n\)个字符串。将......
  • iframe sanbox 造成附件下载问题解决
    问题场景,iframe通过src加载三方website,同时三方website调用api生成web页面,页面中会包含click链接(打开新页面)之后会包含文件下载参考图如下  问题对于通过a......
  • VUE前端请求跨域问题解决
    解决方法:vue.config.js文件配置:module.exports={devServer:{open:true,host:'192.168.1.193',port:8080,https:fals......
  • Failed to run MSBuild command 错误问题解决
    场景:提示:这里简述项目相关背景:CMake报错CMakeERRORFailedtorunMSBuildcommand:MSBuild.exe。如下图所示: 问题描述提示:这里描述项目中遇到的问题:①cmake报错......
  • LOJ 3276 JOISC 2020 Day2 遗迹 题解 (计数DP)
    LOJ链接UOJ链接观察一下n次地震的过程,发现最后会有n个石柱高度为0,\(1,2\cdotsn\)高度的石柱各有一个。假设现在已经确定了一种初始高度状态,我们来看看最后哪些石柱高度......
  • P8631 [蓝桥杯 2015 国 AC] 切开字符串 题解
    P8631[蓝桥杯2015国AC]切开字符串题解前言看到这题没有人写题解,就打算写一篇。这也是蒟蒻的第一篇题解。前置知识\(manacher\),\(SA\)。如果不会可以转至mana......
  • ABC275D-Yet-Another-Recursive-Function题解
    题目传送门题意:定义一个\(\mathbb{N}\to\mathbb{N}\)的函数\(f(x)=\begin{cases}1&x=0\\f(\lfloor\frac{x}{2}\rfloor)+f(\lfloor\frac{x}{3}\rfloor)&\text{otherwis......
  • CF71D-Solitaire题解
    题目传送门题意:一副扑克牌由54张牌组成,包括52张基本牌和两张“王”。在本题中每张牌用两个字符表示:对于基本牌,第一个字符为点数,有'2''3''4''5''6''7''8''9......
  • CF118C-Fancy-Number题解
    题目传送门题意:有一个\(n\)位的数字串,每位为\(0-9\)。每次操作可以更改一位的数字,代价为新旧两位数字之差。问使字符串存在某一个数的出现次数超过\(k\)的最小代价......