分析

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

所以直接放代码吧。

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. springboot使controller异步调用

    调用controller方法,遇到操作时间很长的情况下,不希望前端一直等待操作,而希望前端立马接收到操作启动的反馈,而真正的操作在后端执行,需要用到异步调用的方法.实现步骤如下: 一.配置异步支持: ...

  2. 【Sqlserver】查看所有数据库的大小 创建日期 名称 版本级别 状态

    EXEC  sp_helpdb

  3. Java21新特性-虚拟线程

    虚拟线程是轻量级线程(类似于 Go 中的 "协程(Goroutine)"),可以减少编写.维护和调度高吞吐量并发应用程序的工作量. 线程是可供调度的最小处理单元,它与其他类似的处理 ...

  4. ModelScope初体验

    使用环境:windows 11 前置条件:已安装 anaconda 参考文档:环境安装 step1:新建一个 conda 环境,命名为 modelscope conda create -n model ...

  5. C#笔记 picturebox功能实现(滚动放大,拖动)

    代码链接 1. picturebox上的坐标与原图中坐标的转换 (1) 由于图片的长宽比例和picturebox的长宽比例不同,所以图片不想拉伸的话,左右或者上下会有留白.将picturebox的si ...

  6. openstack考试需要的部署操作

    openstack操作大全 一,keystone 用户 1.创建用户 openstack user create --password 密码 --email邮箱 --domain 域名 用户名字 2. ...

  7. 阿里云ECS后台CPU占用100%,top却找不到

    上周公司阿里云服务器后台报警,CPU占用瞬间飙升到100%: 首先想到使用top命令查询CPU占用详情: 发现进程占用CPU都比较低,在CPU占用一栏发现只有ni的占用比较高. 先了解一下CPU相关监 ...

  8. Java求两个List集合的交集、并集、差集

    在项目中经常会求解集合的交集.并集.差集,这里做个记录.首先创建两个集合list1.list2以及添加元素. List<String> list1 = new ArrayList<& ...

  9. LeetCode 72. Edit Distance 编辑距离 (C++/Java)

    题目: Given two words word1 and word2, find the minimum number of operations required to convert word1 ...

  10. ETL工具-nifi干货系列 第五讲 处理器GenerateFlowFile

    1.今天我们一起来学习处理器GenerateFlowFile.这个处理器创建带有随机数据或自定义内容的 FlowFiles.GenerateFlowFile 对于负载测试.配置和模拟非常有用.从工具栏 ...