#线段树,矩阵乘法#LOJ 3264「ROIR 2020 Day 2」海报
分析
设\(dp[i][0/1/2/3]\)表示以\(i\)结尾1的长度为0/1/2/3的最大值,
那么
\]
发现这个环只要保证开头和结尾的\(0/1/2/3\)相同即可,单点修改直接在线段树上维护广义矩阵乘法
代码
#include <cstdio>
#include <cctype>
#define rr register
using namespace std;
typedef long long lll;
const lll inf=1e15;
const int N=40011;
int n,Q,a[N];
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline void print(lll ans){
if (ans>9) print(ans/10);
putchar(ans%10+48);
}
inline lll max(lll a,lll b){return a>b?a:b;}
struct maix{
lll p[4][4];
inline void Clear(){
for (rr int i=0;i<4;++i)
for (rr int j=0;j<4;++j)
p[i][j]=-inf;
}
inline maix operator *(const maix &B)const{
rr maix C; C.Clear();
for (rr int i=0;i<4;++i)
for (rr int j=0;j<4;++j)
for (rr int k=0;k<4;++k)
C.p[i][j]=max(C.p[i][j],p[i][k]+B.p[k][j]);
return C;
}
}w[N<<2];
inline void build(int k,int l,int r){
if (l==r){
rr maix C; C.Clear();
C.p[0][0]=C.p[1][0]=C.p[2][0]=C.p[3][0]=0;
C.p[0][1]=C.p[1][2]=C.p[2][3]=a[l],w[k]=C;
return;
}
rr int mid=(l+r)>>1;
build(k<<1,l,mid);
build(k<<1|1,mid+1,r);
w[k]=w[k<<1]*w[k<<1|1];
}
inline void update(int k,int l,int r,int x){
if (l==r){
w[k].p[0][1]=w[k].p[1][2]=w[k].p[2][3]=a[l];
return;
}
rr int mid=(l+r)>>1;
if (x<=mid) update(k<<1,l,mid,x);
else update(k<<1|1,mid+1,r,x);
w[k]=w[k<<1]*w[k<<1|1];
}
inline void query(maix A){
rr lll ans=0;
for (rr int i=0;i<4;++i)
ans=max(ans,A.p[i][i]);
print(ans),putchar(10);
}
signed main(){
n=iut();
for (rr int i=1;i<=n;++i) a[i]=iut();
build(1,1,n),query(w[1]);
for (rr int Q=iut();Q;--Q){
rr int x=iut(),y=iut(); a[x]=y;
update(1,1,n,x),query(w[1]);
}
return 0;
}
#线段树,矩阵乘法#LOJ 3264「ROIR 2020 Day 2」海报的更多相关文章
- 【Codeforces718C】Sasha and Array 线段树 + 矩阵乘法
C. Sasha and Array time limit per test:5 seconds memory limit per test:256 megabytes input:standard ...
- hdu 5068(线段树+矩阵乘法)
矩阵乘法来进行所有路径的运算, 线段树来查询修改. 关键还是矩阵乘法的结合律. Harry And Math Teacher Time Limit: 5000/3000 MS (Java/Others ...
- 【对不同形式矩阵的总结】WC 2009 最短路径问题(线段树+矩阵乘法)
题意 题目链接:https://www.luogu.org/problem/P4150 一个 \(6\times n\) 的网格图,每个格点有一个初始权值.有两种操作: 修改一个格子的权值 求 ...
- MAZE(2019年牛客多校第二场E题+线段树+矩阵乘法)
题目链接 传送门 题意 在一张\(n\times m\)的矩阵里面,你每次可以往左右和下三个方向移动(不能回到上一次所在的格子),\(1\)表示这个位置是墙,\(0\)为空地. 现在有\(q\)次操作 ...
- CF718C Sasha and Array 线段树 + 矩阵乘法
有两个操作: 将 $[l,r]$所有数 + $x$ 求 $\sum_{i=l}^{r}fib(i)$ $n=m=10^5$ 直接求不好求,改成矩阵乘法的形式: $a_{i}=M^x\times ...
- Wannafly Winter Camp Day8(Div1,onsite) E题 Souls-like Game 线段树 矩阵乘法
目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog @ Problem:传送门 Portal 原题目描述在最下面. 简单的 ...
- LOJ2980 THUSC2017大魔法师(线段树+矩阵乘法)
线段树每个节点维护(A,B,C,len)向量,操作即是将其乘上一个矩阵. #include<iostream> #include<cstdio> #include<cma ...
- HDU 5068 Harry And Math Teacher 线段树+矩阵乘法
题意: 一栋楼有n层,每一层有2个门,每层的两个门和下一层之间的两个门之间各有一条路(共4条). 有两种操作: 0 x y : 输出第x层到第y层的路径数量. 1 x y z : 改变第x层 的 y门 ...
- [tsA1490][2013中国国家集训队第二次作业]osu![概率dp+线段树+矩阵乘法]
这样的题解只能舔题解了,,,qaq 清橙资料里有.. #include <iostream> #include <cstdio> #include <cstdlib> ...
- SP1716 GSS3(线段树+矩阵乘法)
Code: #include <bits/stdc++.h> #define N 50001 #define ll long long #define lson now<<1 ...
随机推荐
- 学习go语言编程之流程控制
Golang支持如下4种流程控制语句: 条件语句:if,else和else if 选择语句:switch,case和select 循环语句:for,range 跳转语句:goto 条件语句 示例代码: ...
- Docker实践之09-高级网络配置
目录 一.Docker网络原理及默认配置 二.Docker网络定制配置参数 三.容器访问控制原理 1.容器访问外部网络 2.容器之间访问 3.访问所有端口 4.访问指定端口 5.映射容器端口到主机端口 ...
- 2021-10-25 css中零值0后面是否要省略单位
原理 在css中如果值为0,可以省略单位. 在css应用场景中,有可能是多端多人维护.即可能维护的人有A及B及C-,应用场景中有电脑端及手机端及小程序及打印机之类的. 结论 个人认为不要省略单位,不要 ...
- 【LeetCode哈希表】前k个高频词,利用哈希表+vector进行排序操作
前k个高频词 https://leetcode.cn/problems/top-k-frequent-words/ 给定一个单词列表 words 和一个整数 k ,返回前 k 个出现次数最多的单词. ...
- 网络流与各种建模(I)
网络流与各种建模(I) 网络流基础 这里默认读者学习过网络流和MCMF,这里仅作复习 网络流解决的问题是给一个源点和汇点,每个边有最大流量,最大化从源点放水到汇点的速率. 网络流的时间复杂度是 \(O ...
- Android学习之SQLite数据库存储
•引言 概念 SQLite数据库,和其他的SQL数据库不同, 我们并不需要在手机上另外安装一个数据库软件,Android系统已经集成了这个数据库: 特点 SQLite是一个轻量级的关系型数据库,运算速 ...
- vue peek 解决了 vue-template 加载 相对目录 ./components 组件内容 vscode
点击组件跳转,vue-helper 带@的能跳转,相对目录的不能跳转.vue peek 解决了这个问题.
- iview 部分表单验证
引用:https://github.com/ElemeFE/element/issues/3686 zxmantou commented on 25 Feb 2019 @Murraya-panicul ...
- 日常办公——Word中重复标题的设置
在Word中,遇到表格分页时,可以设置重复标题,如下图所示:
- 基于泰凌微TLSR8258芯片的智能安全头盔解决方案开发之自制IOT微型OS操作系统
一 前记 泰凌微的芯片在国内应用非常广泛,825x作为一个出货的主力芯片,该芯片有着性价比高,功耗低,功能强大等特色. 非常适合做一些比较小的穿戴式设备,比如,手环,智能安全帽等.笔者对这颗芯片用了长 ...