分析

板子题,线段树维护矩阵区间积,除了难写没什么思维难度。

所以直接放代码吧。

Code

#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
return x*f;
}
const int maxn=1e6+10;
const int mod=1145141;
int n,Q,ans=0,k;
struct no
{
int num[4][4];
int* operator [] (int i)
{
return num[i];
}
no()
{
memset(num,0,sizeof num);
for(int i=1;i<=k;i++)
{
num[i][i]=1;
}
}
inline void _read()
{
for(int i=1;i<=k;i++)
{
for(int j=1;j<=k;j++)
{
num[i][j]=read();
}
}
}
inline void clear()
{
memset(num,0,sizeof num);
}
inline friend no operator * (no aa,no b)
{
no c;
c.clear();
for(int i=1;i<=k;i++)
{
for(int j=1;j<=k;j++)
{
for(int q=1;q<=k;q++)
{
c[i][j]=(c[i][j]+aa[i][q]*b[q][j]%mod)%mod;
}
}
}
return c;
}
inline int xor_()
{
int res=0;
for(int i=1;i<=k;i++)
{
for(int j=1;j<=k;j++)
{
res=res^num[i][j];
}
}
return res;
}
}a[maxn];
struct Segment_Tree
{
int l,r;
no d;
}t[2001000];
void build(int p,int l,int r)
{
t[p].l=l,t[p].r=r;
if(l==r)
{
t[p].d=a[l];
return ;
}
int mid=(l+r)>>1;
build(p*2,l,mid);
build(p*2+1,mid+1,r);
t[p].d=t[p*2].d*t[p*2+1].d;
}
no ask(int p,int l,int r)
{
if(t[p].l>=l&&t[p].r<=r)return t[p].d;
int mid=(t[p].l+t[p].r)>>1;
no ans;
if(mid>=l)ans=ans*ask(p*2,l,r);
if(mid<r)ans=ans*ask(p*2+1,l,r);
return ans;
}
signed main()
{
cin>>n>>k>>Q;
for(int i=1;i<=n;i++)
{
a[i]._read();
}
build(1,1,n);
while(Q--)
{
int l=read(),r=read();
no z=ask(1,l,r);
ans=ans^z.xor_();
}
cout<<ans;
return 0;
}

题解:B3646 数列前缀和 3的更多相关文章

  1. bzoj2431: [HAOI2009]逆序对数列(前缀和优化dp)

    2431: [HAOI2009]逆序对数列 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 2312  Solved: 1330[Submit][Stat ...

  2. LeetCode Continuous Subarray Sum 题解 同余前缀和 Hash表

    文章目录 题意 思路 特殊情况k=0 Source Code 1 Source Code 2 题意 给定一个数组和一个整数k,返回是否存在一个长度至少为2的连续子数组的和为k的倍数. 思路 和上一篇博 ...

  3. 题解——loj6281 数列分块入门5 (分块)

    分块 若块内最大值为0或1,则不用再开方 然后暴力修改 可以证明,如果开方后向下取整,则最多开方4次一个数就会变成0或1 #include <cstdio> #include <cm ...

  4. 题解——loj6280 数列分块入门4 (分块)

    分块维护一个区间和 然后记得更新的时候左边角块的tag不要打错到右边角块 #include <cstdio> #include <algorithm> #include < ...

  5. 题解——loj6279 数列分块入门3 (分块)

    用set维护有序序列 或许sort也可以,但这题的前驱定义是严格小于 所以要去重 然后就是记得自己打的加法tag在query的时候一定要算上 话说这题数据有点fake啊忘了查询算上自己的标记了还有70 ...

  6. 题解——loj6278 数列分块入门2 (分块)

    查询小于k的值 注意lower_bound一定要减去查找的起始位置得到正确的位置 调了快两天 淦 #include <cstdio> #include <algorithm> ...

  7. 题解——loj6277 数列分块入门1(分块)

    分块裸题 然后就是记得左右边界处理和分块的初始化 忘了初始化会被卡成暴力 #include <cstdio> #include <algorithm> #include < ...

  8. 【BZOJ2821】作诗 题解(分块+前缀和)

    前言:世间还有这么卡常的题…… ------------------ 题目链接 题目大意:给定长度为$n$的序列${a_i}$.有$m$次询问,问$[l,r]$内出现正偶数次的数字有多少个. 这题跟蒲 ...

  9. POJ3581:Sequence——题解

    http://poj.org/problem?id=3581 给一串数,将其分成三个区间并且颠倒这三个区间,使得新数列字典序最小. 参考:http://blog.csdn.net/libin56842 ...

  10. CSP2019题解

    CSP2019题解 格雷码 按照生成的规则模拟一下即可. 代码 括号树 看到括号匹配首先想到用栈,然后又在树上就可以想到可追溯化栈. 令\(a_i=1\)表示\(i\)号节点上的括号为(,否则为), ...

随机推荐

  1. Smart - Luogu —— 智能的洛谷

    @ 目录 安装 Stylus 谷歌 Edge 安装 Smart - Luogu 使用 尾声 安装 Stylus link 点击推荐下载,获取 crx 文件 谷歌 先点击右上角三个点,再点击扩展程序,然 ...

  2. jQuery——链式操作

    链式操作,即连续操作. 例如: <!DOCTYPE html> <html> <head> <script src="https://cdn.boo ...

  3. 从Newtonsoft.Json迁移到 System.Text.Json不简单

    一.写在前面# System.Text.Json 是 .NET Core 3 及以上版本内置的 Json 序列化组件,刚推出的时候经常看到踩各种坑的吐槽,现在经过几个版本的迭代优化,提升了易用性,修复 ...

  4. 第一次线上 OOM 事故,竟和 where 1 = 1 有关

    这篇文章,聊聊一个大家经常使用的编程模式 :Mybatis +「where 1 = 1 」. 笔者人生第一次重大的线上事故 ,就是和使用了类似的编程模式 相关,所以印象极其深刻. 这几天在调试一段业务 ...

  5. MySQL学习笔记-索引

    索引 索引(index)是帮助MySQL高效获取数据的数据结构(有序).在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现 ...

  6. react mock数据

    为什么要做假数据,因为后端开发接口没有哪么快,此时就需要自己来模拟请求数据. 模拟的数据字段,需要和后端工程师沟通. 创建所需数据的json文件 json-server 此命令可以帮助我们快速创建一个 ...

  7. win10无线网卡不会自动连接

    usb接口的网卡.win10无线网卡不会自动连接. 解决方法: 第一步:在控制面板\网络和 Internet\网络连接中,禁用再启用一次无线网络. 第二步:在 控制面板\硬件和声音\电源选项\选择电源 ...

  8. 贝壳找房: 为 AI 平台打造混合多云的存储加速底座

    贝壳机器学习平台的计算资源,尤其是 GPU,主要依赖公有云服务,并分布在不同的地理区域.为了让存储可以灵活地跟随计算资源,存储系统需具备高度的灵活性,支持跨区域的数据访问和迁移,同时确保计算任务的连续 ...

  9. Vue 3深度探索:自定义渲染器与服务端渲染

    title: Vue 3深度探索:自定义渲染器与服务端渲染 date: 2024/6/14 updated: 2024/6/14 author: cmdragon excerpt: 这篇文章介绍了如何 ...

  10. 哎,被这个叫做at least once的玩意坑麻了。

    你好呀,我是歪歪. 前几天遇到一个生产问题,同一个数据在数据库里面被插入了两次,导致后续处理出现了一些问题. 当时我们首先检讨了自己,没有做好幂等校验.甚至还发现了一个低级错误:对应的表,针对订单号, ...