[每日一题] 4.13 Xorto

Xorto

http://www.nowcoder.com/questionTerminal/87b8d98e741b457da1df1537a64719eb

  • 题意:可以简单理解成,存在多少对不重叠的非空区间,且区间异或值相等

  • 思路:根据前缀异或和的性质,设表示的区间异或和,那么的区间异或值就等于,因为只有,双重循环遍历,枚举端点,先记录以为右端点的所有区间异或值,存到数组,然后再记录以为左端点的值,保证区间不重叠,更新答案

  • 时间复杂度:

  • 代码:

    #include <bits/stdc++.h>
    using namespace std;
    #define ll long long
    const int maxn = 1005;
    int a[maxn],pre[maxn],b[1000010];
    int main()
    {
      int n;
      ll ans = 0;
      cin>>n;
      for(int i=1;i<=n;i++)cin>>a[i],pre[i] = pre[i-1]^a[i];
      for(int i=1;i<=n;i++){
          for(int j=1;j<=i;j++)
              b[pre[j-1]^pre[i]]++;
          for(int j=i+1;j<=n;j++)
              ans += 1ll*b[pre[j]^pre[i]];
      }
      cout<<ans<<endl;
      return 0;
    }
全部评论

相关推荐

码农索隆:单休一个月少休息4天,一年就是48天,平时节假日,别人3天假期,单休的两天
点赞 评论 收藏
分享
门口唉提是地铁杀:之前b站被一个游戏demo深深的吸引了。看up主页发现是个初创公司,而且还在招人,也是一天60。二面的时候要我做一个登录验证和传输文件两个微服务,做完要我推到github仓库,还要我加上jaeger和一堆运维工具做性能测试并且面试的时候投屏演示。我傻乎乎的做完以后人家跟我说一句现在暂时不招人,1分钱没拿到全是白干
你的秋招第一场笔试是哪家
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务