这个题解。。
u1s1我没看懂,但是我觉得这里面有一个重要的思想就是对于像异或这种最终值只是看一个数位的问题,我们可以考虑分解,把每一个子问题单独解决就可以了
其实更难的应该是每个子区间的异或和之和这个方面。。

这里放上dalao的代码

#include<bits/stdc++.h>
using namespace std;
const int N = 100009, M = 400009, Mod = 4001;
int n, m, a[N];
struct tree{int l0, l1, r0, r1, sum, val0, val1;} t[M][11];
tree merge(tree x, tree y) {
tree tmp = {};
tmp.val0 = x.val0 + y.val0 + x.r0 * y.l0 % Mod + x.r1 * y.l1 % Mod;
tmp.val1 = x.val1 + y.val1 + x.r0 * y.l1 % Mod + x.r1 * y.l0 % Mod;
if (x.sum == 0) tmp.l0 = x.l0 + y.l0, tmp.l1 = x.l1 + y.l1;
else tmp.l0 = x.l0 + y.l1, tmp.l1 = x.l1 + y.l0;
if (y.sum == 0) tmp.r0 = y.r0 + x.r0, tmp.r1 = y.r1 + x.r1;
else tmp.r0 = y.r0 + x.r1, tmp.r1 = y.r1 + x.r0;
tmp.val0 %= Mod, tmp.val1 %= Mod, tmp.l0 %= Mod, tmp.l1 %= Mod, tmp.r0 %=
Mod, tmp.r1 %= Mod, tmp.sum = x.sum ^ y.sum;
return tmp;
}
void change(int p, int l, int r, int k, int u, int v) {
if (l > u || r < u) return ;
if (l == r && l == u) {
if (v == 0) t[p][k].l0 = t[p][k].r0 = t[p][k].val0 = 1, t[p][k].l1 =
t[p][k].r1 = t[p][k].val1 = 0;
else t[p][k].l0 = t[p][k].r0 = t[p][k].val0 = 0, t[p][k].l1 = t[p][k].r1
= t[p][k].val1 = 1;
t[p][k].sum = v;
return ;
}
int mid = l + r >> 1;
change(p << 1, l, mid, k, u, v);
change(p << 1 | 1, mid + 1, r, k, u, v);
t[p][k] = merge(t[p << 1][k], t[p << 1 | 1][k]);
}
tree ask(int p, int l, int r, int k, int x, int y) {
if (y < l || x > r) return t[0][0];
if (x <= l && r <= y) return t[p][k];
int mid = l + r >> 1; return merge(ask(p << 1, l, mid, k, x, y), ask(p << 1 | 1, mid + 1, r, k, x,
y));
}
int power(int a, int b) {int res = 1; for (; b; b >>= 1, a = 1LL * a * a % Mod)
if (b & 1) res = 1LL * res * a % Mod; return res;}
int main() {
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; ++ i) {
int x;
scanf("%d", &x);
for (int j = 1; j <= 10; ++ j) change(1, 1, n, j, i, x & (1 << j - 1));
}
while(m --) {
int op, x, y;
scanf("%d%d%d", &op, &x, &y);
if (op == 1) for (int i = 1; i <= 10; ++ i) change(1, 1, n, i, x, y & (1
<< i - 1));
else {
int res = 0;
for (int i = 1; i <= 10; ++ i) res = (res + 1LL * ask(1, 1, n, i, x,
y).val1 * power(2, i - 1) % Mod) % Mod;
printf("%d\n", res);
}
}
return 0;
}

QUERIES的更多相关文章

  1. 实践 HTML5 的 CSS3 Media Queries

    先来介绍下 media,确切的说应该是 CSS media queries(CSS 媒体查询),媒体查询包含了一个媒体类型和至少一个使用如宽度.高度和颜色等媒体属性来限制样式表范围的表达式.CSS3 ...

  2. SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource' 的访问

    delphi ado 跨数据库访问 语句如下 ' and db = '帐套1' 报错内容是:SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATE ...

  3. CSS3 Media Queries 实现响应式设计

    在 CSS2 中,你可以为不同的媒介设备(如屏幕.打印机)指定专用的样式表,而现在借助 CSS3 的 Media Queries 特性,可以更为有效的实现这个功能.你可以为媒介类型添加某些条件,检测设 ...

  4. 使用CSS3 Media Queries实现网页自适应

    原文来源:http://webdesignerwall.com 翻译:http://xinyo.org 当今银屏分辨率从 320px (iPhone)到 2560px (大屏显示器)或者更大.人们也不 ...

  5. SQL Queries from Transactional Plugin Pipeline

    Sometimes the LINQ, Query Expressions or Fetch just doesn't give you the ability to quickly query yo ...

  6. Media Queries 详解

    Media Queries直译过来就是“媒体查询”,在我们平时的Web页面中head部分常看到这样的一段代码:  <link href="css/reset.css" rel ...

  7. SPOJ GSS3 Can you answer these queries III[线段树]

    SPOJ - GSS3 Can you answer these queries III Description You are given a sequence A of N (N <= 50 ...

  8. SPOJ GSS1 Can you answer these queries I[线段树]

    Description You are given a sequence A[1], A[2], ..., A[N] . ( |A[i]| ≤ 15007 , 1 ≤ N ≤ 50000 ). A q ...

  9. 【Codeforces710F】String Set Queries (强制在线)AC自动机 + 二进制分组

    F. String Set Queries time limit per test:3 seconds memory limit per test:768 megabytes input:standa ...

  10. CSS3 媒体查询移动设备尺寸 Media Queries for Standard Devices (包括 苹果手表 apple watch)

    /* ----------- iPhone 4 and 4S ----------- */ /* Portrait and Landscape */ @media only screen and (m ...

随机推荐

  1. 让AI支持游戏更自然、更直观:基于情感分析的AI游戏体验和交互设计

    目录 引言 随着游戏市场的不断发展,人工智能技术的应用也越来越广泛.其中,情感分析技术在游戏中的应用,可以让游戏更加自然.直观,同时提高游戏的用户体验.本文将介绍如何让 AI 支持游戏更自然.更直观: ...

  2. Mysql基础篇(三)之多表查询

    一. 多表关系 一对多(多对一) 多对一 一对一 1. 一对多 (1). 案例:部门与员工的关系 (2). 关系:一个部门对应多个员工,一个员工对应一个部门 (3). 实现:在多的一方建立外建,指向一 ...

  3. C#中数组=out参数?

    - 结论 先上结论,答案是yes,C#中数组确实具有out参数的特性. - 疑问 最近开发一个上位机的功能,有段代码看得我一直很迷糊,我的认识,函数的执行结果,要么在函数中通过return返回,要么通 ...

  4. 【HDC.Cloud 2023】华为云区块链分论坛内容值得再读!

    摘要:在Web3时代,基础设施不仅仅是传统意义上的服务器.网络等,还包括了区块链节点.智能合约等,这些基础设施的稳定性和可信度直接影响着Web3的发展. 本文分享自华为云社区<[HDC.Clou ...

  5. Day07_Java_作业

    A:简答题 1. 构造方法的作用是什么?构造方法的特点是什么?构造方法的注意事项? 构造方法中可不可以写return语句呢? 2. 一个类的缺省构造方法可以有参数吗? 3. 静态代码块和构造代码块的特 ...

  6. Java并发(十三)----共享存在的问题

    1.小故事 老王(操作系统)有一个功能强大的算盘(CPU),现在想把它租出去,赚一点外快 小南.小女(不同的线程)来使用这个算盘来进行一些计算,并按照时间给老王支付费用 但小南不能一天24小时使用算盘 ...

  7. 2021-11-30 WPF的MVVM绑定

    主页面代码 public partial class MainWindow : Window { MainViewModel mainViewModel = null; public MainWind ...

  8. 2023-07-29:给你一个由数字组成的字符串 s,返回 s 中独特子字符串数量。 其中的每一个数字出现的频率都相同。

    2023-07-29:给你一个由数字组成的字符串 s,返回 s 中独特子字符串数量. 其中的每一个数字出现的频率都相同. 答案2023-07-29: 大体步骤如下: 1.初始化变量base为固定值10 ...

  9. git: failed to push some refs to

    错误原因 没有添加readme文件 解决方案 git pull --rebase origin master 至此问题解决

  10. tensorflow.js 视频图片多目标检测

    前言: Tensorflow.js 官方提供了很多常用模型库,涵盖了平时开发中大部分场景的模型.例如,前面提到的图片识别,除此之外还有人体姿态识别,目标物体识别,语音文字等识别.其中一些可能是 Pyt ...