-
Bio
#include<bits/stdc++.h> using namespace std; const int N=2e5+5,B=500,M=N/B+5; int n,m,q,a[N],b[N]; int c[N]; int s[M][N]; int lf[N*4],rf[N*4],tot; int bc(int x){ return (x-1)/B+1; } int L(int bc){ return (bc-1)*B+1; } int R(int bc){ return bc*B; } struct ds{ int s[N],t[M],sum[M]; void add(int x,int k){ int bl=bc(x),br=bc(n); if(bl==br){ for(int i=x;i<=n;i++){ s[i]+=k; sum[bl]+=k; } } else{ for(int i=x;i<=R(bl);i++){ s[i]+=k; sum[bl]+=k; } for(int i=bl+1;i<br;i++){ t[i]+=k; sum[i]+=k*B; } for(int i=L(br);i<=n;i++){ s[i]+=k; sum[bl]+=k; } } } int pre(int x){ if(x==0) return 0; int b=bc(x); int res=0; for(int i=1;i<b;i++){ res+=sum[i]; } for(int i=L(b);i<=x;i++){ res+=s[i]+t[i]; } return res; } int que(int l,int r){ return pre(r)-pre(l-1); } }t; struct ds1{ int s[N],t[M]; bool e[M]; void push_down(int bc){ if(e[bc]){ for(int i=L(bc);i<=R(bc);i++){ s[i]=t[bc]; } e[bc]=0; } } void upd(int l,int r,int k){ int bl=bc(l),br=bc(r); if(bl==br){ push_down(bl); for(int i=l;i<=r;i++){ s[i]=k; } } else{ push_down(bl); for(int i=l;i<=R(bl);i++){ s[i]=k; } for(int i=bl+1;i<br;i++){ e[i]=1; t[i]=k; } push_down(br); for(int i=L(br);i<=r;i++){ s[i]=k; } } } int que(int x){ int b=bc(x); if(e[b]) return t[b]; return s[x]; } }f; void reb(int bc){ memset(s[bc],0,sizeof(s[bc])); for(int i=L(bc);i<=R(bc);i++){ int w=f.que(i); if(w==0) continue; if(L(bc)<=lf[w]&&rf[w]<=R(bc)){ int len=rf[w]-lf[w]+1; for(int j=lf[w];j<=rf[w];j++){ s[bc][a[j]]=max(s[bc][a[j]],len); s[bc][a[j+1]]=max(s[bc][a[j+1]],len); } i=rf[w]; } } } void del_seg(int w){ f.upd(lf[w],rf[w],0); if(bc(lf[w])==bc(rf[w])){ reb(bc(lf[w])); } } void ins_seg(int w){ f.upd(lf[w],rf[w],w); if(bc(lf[w])==bc(rf[w])){ reb(bc(lf[w])); } } void del_c(int x){ int w=f.que(x); del_seg(w); if(lf[w]<=x-1){ lf[++tot]=lf[w]; rf[tot]=x-1; ins_seg(tot); } if(x+1<=rf[w]){ lf[++tot]=x+1; rf[tot]=rf[w]; ins_seg(tot); } } void add_c(int x){ int nl=x,nr=x; int wl=f.que(x-1); int wr=f.que(x+1); if(wl){ del_seg(wl); nl=lf[wl]; } if(wr){ del_seg(wr); nr=rf[wr]; } lf[++tot]=nl; rf[tot]=nr; ins_seg(tot); } void ch_c(int x,int k){ if(c[x]==0&&k==1){ add_c(x); c[x]=1; } else if(c[x]==1&&k==0){ del_c(x); c[x]=0; } } bool ck(int x){ return a[x+1]==b[a[x]]; } signed main(){ /* freopen("magic.in","r",stdin); freopen("magin.out","w",stdout);*/ ios::sync_with_stdio(0),cin.tie(0); cin>>n>>m>>q; for(int i=1;i<=n;i++){ cin>>a[i]; } for(int i=1;i<=m;i++){ cin>>b[i]; } for(int i=1;i<n;i++){ if(ck(i)) ch_c(i,1); } while(q--){ int op; cin>>op; if(op==1){ int x,k; cin>>x>>k; a[x]=k; if(x>1){ if(ck(x-1)) ch_c(x-1,1); else ch_c(x-1,0); } if(ck(x)) ch_c(x,1); else ch_c(x,0); } else{ int l,r,x; cin>>l>>r>>x; } } } -
Recent Activities
- 提高选修课第一周作业——DP基础 Assignment
- 初三英才班训练 Assignment
- 2026水题过家家 IOI
- 1231 数位DP1 IOI
- 2025保送生作业1 期望与min max容斥 Assignment
- 梦熊NOIP模拟赛1复现赛 OI
- NOIp 模拟赛 1 重置 OI
- 初一B 质数 Assignment
- NOIP模拟赛 OI
- NOIP模拟赛 OI
- 国庆提高/省选组比赛 IOI
- 模拟赛一 IOI
- 2025科技节水题过家家 IOI
- 20241203集训 IOI(Strict)
- 20241119集训 IOI(Strict)
- 赛前冲刺安排 IOI
- 20241112集训 IOI(Strict)
- 20241029集训 IOI(Strict)
- CSP难度的题目 IOI
- 国庆提高组30题(1~3号) IOI
- 20240924集训 IOI(Strict)
- 周五分享 IOI
- 保送生第九周 Kruskal重构树 Assignment
- 保送生第七周 启发式合并 Assignment
- 保送生第六周 wqs二分 Assignment
- 20240910集训 IOI(Strict)
- 保送生第五周 李超线段树 Assignment
- 保送生第四周 点分治 Assignment
- 保送生第三周 CDQ分治 Assignment
- 保送生第二周 高维前缀和 FWT Assignment
- 保送生第一周 矩阵快速幂 Assignment
- 训练 IOI
- CSP-J训练赛(一) IOI(Strict)
- [订正]多校2024第3场 第4场 Assignment
- [订正]多校2024第1场 第2场 Assignment
- 暑假集训第二阶段 XCPC
- 2023-2024第二学期初二信息竞赛组期末考 IOI
- 2023-2024下信息提高组选修课期末考 IOI
- 20240611集训 IOI
- 20240604集训 IOI
- 20240528集训 IOI
- 2024水题过家家 IOI
- 20240521集训 IOI
- 2023-2023下学期初二竞赛组期中考 OI
- 20240507集训_ IOI
- 20240409集训 IOI
- 初一竞赛组作业——区间DP Assignment
- The 2nd Yuzusoft Cup Stage 3: Gensokyo IOI
- 20240319集训 IOI
- The 2nd Yuzusoft Cup Stage 2: Zhanjiang IOI
- The 2nd Yuzusoft Cup Stage 1: Shantou IOI
- 20240312集训 IOI
- 初一竞赛组作业——背包DP Assignment
- 20240305集训 IOI
- 初一竞赛组作业——DP基础 Assignment
- 20240123 前缀和、差分、离散化难题 Ledo
- 20240120字符串专题模板 IOI
- 20240119反悔贪心选讲 IOI
- 20240118期望的线性选讲 XCPC
- 20240116杂题选讲 IOI
- 寒假集训1 Assignment
- 20240102集训 IOI
- 2023上学期初二竞赛组期末考 OI
- 2023-2024第一学期选修课期末考 OI
- 20231212集训 IOI
- 省选模拟赛(一) OI
- 初一竞赛组——贪心 Assignment
- NOIP 题目选讲(二) IOI
- 省选组-计数 Assignment
- 初二竞赛组作业——主席树 Assignment
- HFI Coding Club 2023 November Contest IOI
- NOIP 倒计时 IOI
- 20231114集训 OI
- 初二竞赛组作业——线段树合并 Assignment
- 20231107集训 OI
- NOIP 模拟赛(三) OI
- 2023上学期初二竞赛组期中考 OI
- 20231017集训 OI
- CSP-J 前两题真题汇总 Ledo
- 数据结构一 by YJL XCPC
- 20231010集训 OI
- 乐多训练赛 Ledo
- 虚假的比赛 IOI
- 国庆集训S组模拟赛3 OI
- 国庆集训S组模拟赛2 OI
- 国庆集训S组模拟赛1 OI
- 国庆集训模拟赛(普及) OI
- 初一2班从0开始学C++ Assignment
- 初二信息竞赛组——斜率优化 Assignment
- 9月19日周二晚上集训赛 IOI
- 初二竞赛组作业——DP复习 Assignment
- S组初赛模拟题 OI
- 提高A组-题目分享 Assignment
- 单调队列优化DP Assignment
- 信息选修课(普及/提高)期末考 IOI
- 水题过家家 IOI
- 状压DP堂练 Assignment
- 20230511练习 Assignment
- DP堂练20230424 Assignment
- 初一期中考 IOI
- 初一竞赛组DP堂上复习题 Assignment
- 初一竞赛组状压DP堂上练习 Assignment
- 初一竞赛组排序+DP堂上练习 Assignment
- 初一信息竞赛组kmp堂上练习 Assignment
- 初中信息竞赛组AC自动机 Assignment
- 初一下第五周作业: 二分 Assignment
- 初中竞赛组树形DP2 Assignment
- 初中信息竞赛组-Trie Assignment
- 初中竞赛组树形DP1 Assignment
- 初一下第三周作业: 函数 Assignment
- 省选模拟赛1 OI
- 编程题可看成绩 IOI
- 22年秋季 初一竞赛组期末考 OI
- 22年秋季 初一上期末考 OI
- 初一竞赛组数位DP Assignment
- 初一竞赛组作业——DP经典题 Assignment
- 初一年级数组3 Assignment
- NOIP模拟赛1 OI
- 初一竞赛组区间DP Assignment
- 初中选修课期中考 IOI
- 上学期竞赛组期中考试(初一) IOI
- 初一上学期期中考试机试(1班2班) IOI
- 初一上学期期中考试笔试(1班2班) OI
- 初一年级循环语句2 Assignment
- 初一竞赛班背包DP作业 Assignment
- 初一竞赛班动态规划作业2 Assignment
- 初一年级if语句 Assignment
- 省选模拟1 OI
- 周四提高比赛3 IOI
- 初一竞赛班作业 Assignment
- 初一2班课堂作业 Assignment
- 周四提高比赛1 IOI
- 初一1,3班第3~4周作业 Assignment