题解:B3646 数列前缀和 3
分析
板子题,线段树维护矩阵区间积,除了难写没什么思维难度。
所以直接放代码吧。
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的更多相关文章
- bzoj2431: [HAOI2009]逆序对数列(前缀和优化dp)
2431: [HAOI2009]逆序对数列 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 2312 Solved: 1330[Submit][Stat ...
- LeetCode Continuous Subarray Sum 题解 同余前缀和 Hash表
文章目录 题意 思路 特殊情况k=0 Source Code 1 Source Code 2 题意 给定一个数组和一个整数k,返回是否存在一个长度至少为2的连续子数组的和为k的倍数. 思路 和上一篇博 ...
- 题解——loj6281 数列分块入门5 (分块)
分块 若块内最大值为0或1,则不用再开方 然后暴力修改 可以证明,如果开方后向下取整,则最多开方4次一个数就会变成0或1 #include <cstdio> #include <cm ...
- 题解——loj6280 数列分块入门4 (分块)
分块维护一个区间和 然后记得更新的时候左边角块的tag不要打错到右边角块 #include <cstdio> #include <algorithm> #include < ...
- 题解——loj6279 数列分块入门3 (分块)
用set维护有序序列 或许sort也可以,但这题的前驱定义是严格小于 所以要去重 然后就是记得自己打的加法tag在query的时候一定要算上 话说这题数据有点fake啊忘了查询算上自己的标记了还有70 ...
- 题解——loj6278 数列分块入门2 (分块)
查询小于k的值 注意lower_bound一定要减去查找的起始位置得到正确的位置 调了快两天 淦 #include <cstdio> #include <algorithm> ...
- 题解——loj6277 数列分块入门1(分块)
分块裸题 然后就是记得左右边界处理和分块的初始化 忘了初始化会被卡成暴力 #include <cstdio> #include <algorithm> #include < ...
- 【BZOJ2821】作诗 题解(分块+前缀和)
前言:世间还有这么卡常的题…… ------------------ 题目链接 题目大意:给定长度为$n$的序列${a_i}$.有$m$次询问,问$[l,r]$内出现正偶数次的数字有多少个. 这题跟蒲 ...
- POJ3581:Sequence——题解
http://poj.org/problem?id=3581 给一串数,将其分成三个区间并且颠倒这三个区间,使得新数列字典序最小. 参考:http://blog.csdn.net/libin56842 ...
- CSP2019题解
CSP2019题解 格雷码 按照生成的规则模拟一下即可. 代码 括号树 看到括号匹配首先想到用栈,然后又在树上就可以想到可追溯化栈. 令\(a_i=1\)表示\(i\)号节点上的括号为(,否则为), ...
随机推荐
- C# npoi追加写入时报错 因为文件格式或文件扩展名无效。
造成原因:workbook对象打开后,没有手动close造成的. 使用的npoi版本:2.6.0 ,环境 win10 .net core 5.0
- 排查Python卡慢神器
如果遇到Python正在运行中的进程卡住,找不到原因.可以试试以下工具方法, 对于python就像jstack对于java一样. 法一 使用pystack-debugger 安装方式如下: yum i ...
- ABP邮件发送
ABP Vnext发邮件要使用AbpMailKitModule的实现IEmailSender,要检查添加了Volo.Abp.MailKit,其dependon 要添加typeof() 它使用Sett ...
- iOS性能优化-内存泄漏
一.现象 最近直播助手在iOS11 ReplayKit上面经常出现进程使用内存超过50MB被系统杀掉,并且这种进程被杀掉不会有任何crash log留下来,只能在Console中留下一点消息. 二.使 ...
- (JAVA)设计模式-适配器模式
模式的定义和特点: 适配器模式(Adapter)是一种将一个类的接口转换成客户希望的另外一个接口的设计模式,可以提高代码的复用性和灵活性. 结构与实现: 定义一个适配器类来实现业务接口,再继承现有组件 ...
- 国产大模型参加高考,同写2024年高考作文,及格分(通义千问、Kimi、智谱清言、Gemini Advanced、Claude-3-Sonnet、GPT-4o)
大家好,我是章北海 今天高考,上午的语文结束,市面上又要来一场大模型参考的文章了. 我也凑凑热闹,让通义千问.Kimi.智谱清言一起来写一下高考作文. 公平起见,不加任何其他prompt,直接把题目甩 ...
- Linux扩展篇-shell编程(八)-shell字符串截取
shell字符串截取,一般包含从指定位置和从指定字符截取. 一.从指定位置截取 1) 从字符串左边开始计数 格式: ${string: start :length} 从 string 字符串的左边第 ...
- List<Map<String, Object>> 按照时间排序
// 准备一个集合 List<Map<String, Object>> resList= Lists.newArrayList(); Map<String, Object ...
- output打印ElasticSearch搜索条件searchSourceBuilder对象 toString方法
打印搜索条件:log.info(searchSourceBuilder.toString());log.info("es搜索条件:[{}]", searchSourceBuilde ...
- Elasticsearch如何聚合查询多个统计值,如何嵌套聚合?并相互引用,统计索引中某一个字段的空值率?语法是怎么样的?
目录 Elasticsearch聚合查询说明 空值率查询DSL Elasticsearch聚合基础知识扩展 Elasticsearch聚合概念 Script 用法 Elasticsearch聚合查询语 ...