[THUPC2022 决赛] rsraogps

题目描述

给序列 \(a_1,\dots,a_n\),\(b_1,\dots,b_n\),\(c_1,\dots,c_n\),

定义区间 \([l,r]\) 的价值为 \(a_l,\dots,a_r\) 按位与,\(b_l,\dots,b_r\) 按位或,\(c_l,\dots,c_r\) 的最大公因数,这三者的乘积;

\(m\) 次查询,每次查询给出区间 \([l,r]\),查询满足 \(l\le l'\le r'\le r\) 的 \([l',r']\) 的价值之和。

提示

\(1\le n\le 10^6\)

\(1\le m\le 5\times 10^6\)

\(1\le a_i,b_i,c_i\le n\)

\(1\le l\le r\le n\)

建议使用高效的输入输出方式。

考虑扫描线,当 \(r\) 固定后,维护 \(w_l=[l,r]\) 的价值。

发现对于一个 \(w_i\),他最多会改变 \(\log n\) 次,因为或,与,gcd 都是至多变动 \(\log n\) 次的。

而且 \(w_i\) 会改变的一定是一段后缀,而扫描线下来后,我们要求 \(w\) 的历史版本和 的区间和。

像吉司机线段树一样维护一个 \(t_i\) 表示 \(w_i\) 上一次改变时间是什么时候,以及这一个版本前的历史版本和 的前缀和。

由于改变的是后缀,我们可以直接修改前缀和,询问时用前缀和回答。

维护除了之前版本的历史版本和,还要维护当前版本的历史版本和,也就是 \(\sum_{j=l}^r(i-t_j+1)w_j\),维护 \(t_jw_j\) 的前缀和和 \(w_j\) 的前缀和即可。

#include<bits/stdc++.h>
using namespace std;
#define int unsigned
const int N=1e6+5;
vector<int>qr[N];
int l[N*5],ans[N*5],a[N],b[N],c[N],d[N],f[N],g[N],h[N],n,m,t[N];
int gcd(int x,int y)
{
if(!y)
return x;
return gcd(y,x%y);
}
int read()
{
int s=0;
char ch=getchar();
while(ch<'0'||ch>'9')
ch=getchar();
while(ch>='0'&&ch<='9')
s=s*10+ch-48,ch=getchar();
return s;
}
signed main()
{
n=read(),m=read();
for(int i=1;i<=n;i++)
a[i]=read();
for(int i=1;i<=n;i++)
b[i]=read();
for(int i=1;i<=n;i++)
c[i]=read(),t[i]=1;
for(int i=1;i<=m;i++)
l[i]=read(),qr[read()].push_back(i);
for(int i=1;i<=n;i++)
{
int ls=0;
for(int j=i-1;j;j--)
{
if((a[j]&a[i])==a[j]&&(b[j]|b[i])==b[j]&&c[i]%c[j]==0)
ls=j,j=1;
}
for(int j=ls+1;j<=i;j++)
{
if(j^i)
{
f[j]+=(i-t[j])*a[j]*b[j]*c[j];
a[j]&=a[i];
b[j]|=b[i];
c[j]=gcd(c[j],c[i]);
}
g[j]=g[j-1]+f[j];
h[j]=h[j-1]+a[j]*b[j]*c[j];
d[j]=d[j-1]+(t[j]=i)*a[j]*b[j]*c[j];
}
for(int j=0;j<qr[i].size();j++)
{
int l=::l[qr[i][j]];
ans[qr[i][j]]=g[i]-g[l-1]+(i+1)*(h[i]-h[l-1])-d[i]+d[l-1];
}
}
for(int i=1;i<=m;i++)
printf("%u\n",ans[i]);
}

[THUPC2022 决赛] rsraogps的更多相关文章

  1. P8421 [THUPC2022 决赛] rsraogps

    \(\text{Solution}\) 肯定扫描线在考虑维护什么东西,假设 \(r\) 右移时可以暴力得到所有新值,发现需要维护区间历史版本和以及区间当前值之和 这三个操作对于一个数来说变化次数都是 ...

  2. SCNU 2015ACM新生赛决赛【F. Oyk闯机关】解题报告

            题目大意:一个$N$$\times$$N$的阵列,每个格子有$X_{ij}$个调和之音,若每次只能选择走右边或下边,从左上角出发走到右下角,问最多能收集到多少个调和之音?       ...

  3. 【CCCC天梯赛决赛】

    cccc的天梯赛决赛,水题一样的水,中档题以上的还是没做出来.补了一下题,觉得其实也不是很难,主要是练的少. L2-1:红色预警 并查集 我做的时候想不到并查集,想到了也不一定做的出来,都是其实不难. ...

  4. APICloud请你看英特尔智能硬件大赛决赛直播

    英特尔智能硬件大赛由英特尔硬享公社(CCE)发起,联合了全国各地50余家产业链优秀合作伙伴,旨在集合全国硬创资源,携手寻找中国最具代表性的硬件创业项目,并通过技术支持.资源对接.产品推广等方式助力项目 ...

  5. 2013第四届蓝桥杯决赛Java高职高专组题目以及解法答案

    2013第四届蓝桥杯决赛Java高职高专组题目以及解法答案 不知不觉离决赛都过去一个月了,一直忙于各种事情,都忘记整理一份试题.当作回忆也好. 1. 标题:好好学习 汤姆跟爷爷来中国旅游.一天,他帮助 ...

  6. 记2014“蓝桥杯全国软件大赛&quot;决赛北京之行

    5月29,30日 最终到了这一天.晚上有数据结构课,10点多的火车,我们就没有去上课,下午在宿舍里收拾东西,晚上8点左右从南校出发,9点半多到达火车站和老师学长学姐们会和. 第一次去北京,第一次买的卧 ...

  7. 2016广东工业大学新生杯决赛网络同步赛暨全国新生邀请赛 题解&源码

    Problem A: pigofzhou的巧克力棒 Description 众所周知,pigofzhou有许多妹子.有一天,pigofzhou得到了一根巧克力棒,他想把这根巧克力棒分给他的妹子们.具体 ...

  8. 2017年全国大学生物联网设计竞赛(TI杯)华东分赛区决赛总结

    全国大学生物联网设计竞赛(TI杯)是由教育部高等学校计算机类教学指导委员会主办.上海交通大学电子信息与电气工程学院承办.德州仪器半导体技术公司(TI)协办的赛事,自2014年设立以来,一直是物联网领域 ...

  9. 记cccc天梯赛第三届决赛

        首先我很想知道,为什么我没有参加初赛,就可以去决赛,这个究竟有没有初赛,这真是未解之谜.     其次,会长说得不错,菜是原罪.不知道这次的表现能不能把我送去湘潭挑战赛....     我身边 ...

  10. 第十届Mockplus ▪ UXPA用户体验西南赛区决赛成功举行

    九月的重庆,秋意渐浓. 伴随着凉爽的秋风,第十届Mockplus·UXPA国际用户体验创新大赛(UXD Award2018)西南赛区决赛于9月16日下午在四川美术学院-虎溪校区成功举办.来自西南区域各 ...

随机推荐

  1. Ubuntu 安装部署Kubernetes(k8s)集群

    目录 一.系统环境 二.前言 三.Kubernetes 3.1 概述 3.2 Kubernetes 组件 3.2.1 控制平面组件 3.2.2 Node组件 四.配置节点的基本环境 五.节点安装doc ...

  2. 三维模型OSGB格式轻量化压缩点云处理技术探讨

    三维模型OSGB格式轻量化压缩点云处理技术探讨 点云是一种常用的三维模型表示方法,由于其具有高精度.高保真度.易处理等优点,因此在很多领域都得到了广泛应用.但是,点云数据的存储量通常比较大,为了使点云 ...

  3. 手写raft(三) 实现日志压缩

    手写raft(三) 实现日志压缩 在上一篇博客中MyRaft实现了日志复制功能,按照计划接下来需要实现日志压缩. 手写raft(一) 实现leader选举 手写raft(二) 实现日志复制 1. 什么 ...

  4. QA|Pycharm中的git分支提交冲突问题和解决|GIT

    前天,Pycharm中的git分支提交冲突了,原因是我PC上改了文件没有提交,笔记本又本地改代码,笔记本提交时就出现报错:提交拒绝,但pull也被拒绝,网上试了rebase等方法,均没得到解决,最终自 ...

  5. 第1章 Git概述

    第1章 Git概述 Git 是一个免费的.开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目. Git 易于学习,占地面积小,性能极快. 它具有廉价的本地库,方便的暂存区域和多个工作流 ...

  6. The Missing Semester - 第五讲 学习笔记(二)

    第五讲(二) SSH入门 介绍完命令行环境后,这半节主要介绍的是ssh的有关入门知识.SSH是Secure Shell的简称. 课程视频地址:https://www.bilibili.com/vide ...

  7. @Async注解详解 以及 可能遇到的各种问题

    一.简介1)在方法上使用该@Async注解,申明该方法是一个异步任务:2)在类上面使用该@Async注解,申明该类中的所有方法都是异步任务:3)方法上一旦标记了这个@Async注解,当其它线程调用这个 ...

  8. CocoaPods 在iOS开发中养活了这么多项目,它到底是个啥?

    对于iOS开发者而言,CocoaPods并不陌生,通过pod相关的命令操作,就可以很方便的将项目中用到的三方依赖库资源集成到项目环境中,大大的提升了开发的效率.CocoaPods作为iOS项目的包管理 ...

  9. k8s 自动扩缩容HPA原理及adapter配置详解👑

    大家好,我是蓝胖子,都知道,k8s拥有自动扩缩容机制HPA,我们能够通过配置针对不同的扩缩容场景进行自动扩缩容,往往初学者在面对其中繁多配置的时候会学了又忘记,今天我将会以一种不同的视角,结合api ...

  10. Vue之监听数据变化

    1.轻度监视 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...