蓝桥杯ACwing习题

https://www.acwing.com/problem/content/4648/

// 解析

// ai ^ aj = x
// => aj = x ^ ai

// 首先  l <= i && <= r
// j <= l && j >= r
// 选择一个 i  对应的 j 要在 l 到 r 区间 还需要满足异或的条件 
// 那么就是 f[i] <= l && f[i] <= r
// 如果 i < l 的话 那么 f[i] 一定是没有答案的 
// 所以说 i 可以扩大到  1 <= i <= r 
// 那么题意就变为在 1--r中选择一个数 i 使得 f[i] 满足 异或的条件 
// 那么我们只需要预处理出 f[r] >= l 是否存在即可
// 预处理出每一个 i 前面所有满足条件的f[i]

#include <iostream>
#include <cstring>
#include <algorithm>

using namespace std;

const int N = 100010 , M = 1 << 20;

int f[N] , a[N];
int n , m , x;
int last[M];

int main()
{
    cin >> n >> m >> x;
    
    for(int i = 1 ; i <= n ; i ++)
    {
        int a;
        cin >> a;
        f[i] = max(f[i - 1] , last[x ^ a]); 
        // f[i] 存的是最大的存在下标 
        last[a] = i;
    }
    // 1 2 3 4
    while (m -- )
    {
        int l , r;
        cin >> l >> r;
        if(f[r] >= l) puts("yes"); // f[r] 一定小于 r 因为在更新的时候 last[a] = i 是在后面更新的
        else puts("no");
    }
    
    return 0;
}
 

相关推荐

  1. ACwing习题

    2023-12-06 16:36:05       33 阅读
  2. ACwing习题

    2023-12-06 16:36:05       30 阅读
  3. ACwing习题

    2023-12-06 16:36:05       32 阅读
  4. ACwing习题

    2023-12-06 16:36:05       31 阅读
  5. ACwing习题

    2023-12-06 16:36:05       31 阅读
  6. ACwing习题

    2023-12-06 16:36:05       34 阅读
  7. Acwing2024日期问题

    2023-12-06 16:36:05       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-06 16:36:05       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-06 16:36:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-06 16:36:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-06 16:36:05       20 阅读

热门阅读

  1. 被DDOS了怎么办 要如何应对

    2023-12-06 16:36:05       36 阅读
  2. Python压缩、解压文件

    2023-12-06 16:36:05       37 阅读
  3. get schema DDL

    2023-12-06 16:36:05       28 阅读
  4. MSS和MTU的关系

    2023-12-06 16:36:05       41 阅读
  5. thinkphp控制器调用脚本

    2023-12-06 16:36:05       36 阅读
  6. Three.js的THREE.LOD如何加载gltf模型

    2023-12-06 16:36:05       39 阅读