https://ac.nowcoder.com/acm/contest/3003/J

题解:

 #include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const ll mod = 1e9+;
const int maxn = 2e5+;
struct segT{
ll l,r;
ll dat;
}t1[maxn*],t2[maxn*]; //两棵线段树
ll k[maxn],b[maxn];
ll ans;
void build1(ll p,ll l,ll r){
t1[p].l = l,t1[p].r = r;
if(l == r) { t1[p].dat = k[l]%mod;return;}
ll mid = (l+r)/;
build1(p*,l,mid);
build1(p*+,mid+,r);
t1[p].dat = ( t1[p*].dat * t1[p*+].dat) %mod ;
}
void build2(ll p,ll l,ll r){
t2[p].l = l,t2[p].r = r;
if(l == r) { t2[p].dat = b[l]%mod;return;}
ll mid = (l+r)/;
build2(p*,l,mid);
build2(p*+,mid+,r);
t2[p].dat =( (t1[p*+].dat * t2[p*].dat)%mod+ t2[p*+].dat )%mod ;
}
void upd1(ll p,ll L,ll R,ll v){
if(t1[p].l == L &&t1[p].r == R ) {t1[p].dat = v;return;}
int mid = (t1[p].l + t1[p].r )/;
if (L<=mid) upd1(p*,L,R,v);
else upd1(p*+,L,R,v);
t1[p].dat = ( t1[p*].dat * t1[p*+].dat )%mod;
}
void upd2(ll p,ll L,ll R,ll v){
if(t2[p].l == L&&t2[p].r == R ) {t2[p].dat = v;return;}
int mid = (t2[p].l + t2[p].r )/;
if(L<=mid) upd2(p*,L,R,v);
else upd2(p*+,L,R,v);
t2[p].dat =( (t1[p*+].dat * t2[p*].dat)%mod+ t2[p*+].dat )%mod ;
} void query(ll p,ll l,ll r){
if(l<=t2[p].l && r>=t2[p].r ) {
ans = (ans*t1[p].dat + t2[p].dat)%mod; //前面的区间*后面区间的t1[p].dat + 后面区间的t2[p].dat
return ;
}
int mid = (t2[p].l + t2[p].r )/;
if(l<=mid) query(p*,l,r);
if(r>mid) query(p*+,l,r);
}
int main()
{
int n,m;
scanf("%d%d",&n,&m);
for(int i = ;i<=n;i++) {
scanf("%lld",&k[i]);
}
for(int i = ;i<=n;i++){
scanf("%lld",&b[i]);
}
build1(,,n);
build2(,,n);
while(m--){
int f;
scanf("%d",&f);
if(f == ) {
ll pos,tk,tb;
scanf("%lld%lld%lld",&pos,&tk,&tb);
upd1(,pos,pos,tk);
upd2(,pos,pos,tb);
// printf("de %d %d\n" ,t1[1].dat,t2[1].dat);
}
if(f == ){
int l,r;
scanf("%lld%lld",&l,&r);
ans = ;
query(,l,r);
printf("%lld\n",ans%mod);
}
}
return ;
}

2020牛客寒假算法基础集训营2 J.求函数 (线段树 推公式 单点修改 区间查询)的更多相关文章

  1. 2020牛客寒假算法基础集训营2 J题可以回顾回顾

    2020牛客寒假算法基础集训营2 A.做游戏 这是个签到题. #include <cstdio> #include <cstdlib> #include <cstring ...

  2. 2020牛客寒假算法基础集训营1 J题可以回顾回顾

    2020牛客寒假算法基础集训营1 这套题整体来说还是很简单的. A.honoka和格点三角形 这个题目不是很难,不过要考虑周全,面积是1,那么底边的长度可以是1也可以是2, 注意底边1和2会有重复的, ...

  3. 2020牛客寒假算法基础集训营1 J. 缪斯的影响力 (矩阵快速幂/费马小定理降幂)

    https://ac.nowcoder.com/acm/problem/200658 f(n) = f(n-1) * f(n-2) * ab ,f的第一项是x,第二项是y. 试着推出第三项是x·y·a ...

  4. 2020牛客寒假算法基础集训营4 J 二维跑步

    https://ac.nowcoder.com/acm/contest/view-submission?submissionId=43035417 假设有i步选择不动,就有n-i步移动 假设其中又有a ...

  5. 2020牛客寒假算法基础集训营4-F树上博弈

    链接:https://ac.nowcoder.com/acm/contest/3005/F来源:牛客网 题目描述 现有一个 n 个点,n-1条边组成的树,其中 1 号点为根节点. 牛牛和牛妹在树上玩游 ...

  6. 2020牛客寒假算法基础集训营4-I 匹配星星【贪心】

    链接:https://ac.nowcoder.com/acm/contest/3005/I来源:牛客网 示例1 输入 复制 2 1 1 0 2 2 1 2 1 1 0 2 2 1 输出 复制 1 1 ...

  7. 2020牛客寒假算法基础集训营1 F-maki和tree

    链接:https://ac.nowcoder.com/acm/contest/3002/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  8. 牛客寒假算法基础集训营5 J 炫酷数学

    链接:https://ac.nowcoder.com/acm/contest/331/J来源:牛客网 小希最近想知道一个东西,就是A+B=A|B(其中|为按位或)的二元组有多少个. 当然,直接做这个式 ...

  9. 2020牛客寒假算法基础集训营5 G街机争霸

    题目描述 哎,又是银首,要是你这个签到题少WA一发就金了 牛牛战队的队员打完比赛以后又到了日常甩锅的时间.他们心情悲伤,吃完晚饭以后,大家相约到一个街机厅去solo.牛牛和牛能进入了一个迷宫,这个迷宫 ...

随机推荐

  1. 洛谷 P4298: bzoj 1143: [CTSC2008]祭祀

    题目传送门:洛谷 P4298. 题意简述: 给定一个 \(n\) 个点,\(m\) 条边的简单有向无环图(DAG),求出它的最长反链,并构造方案. 最长反链:一张有向无环图的最长反链为一个集合 \(S ...

  2. 6.python设置代理和添加镜像源介绍

    为什么要修改镜像源? 一般使用python安装库,会用到pip install xxx 指令或者conda install xxx指令,因为pip和conda默认国外镜像源,这时会在Python的官方 ...

  3. java面对对象入门(4)-程序块初始化

    Java实例初始化程序是在执行构造函数代码之前执行的代码块.每当我们创建一个新对象时,这些初始化程序就会运行. 1.实例初始化语法 用花括号创建实例初始化程序块.对象初始化语句写在括号内. publi ...

  4. 02-flink时间语义 与 Window 基础概念与实现原理

    Flink 多种时间语义对比 Flink 在流应用程序中支持不同的 Time 概念,就比如有 Processing Time.Event Time 和 Ingestion Time.下面我们一起来看看 ...

  5. 初识Idea,部署Maven项目常见问题解决方案

    一.idea 中项目右键没有run命令选项,没有maven的clean与install选项 解决方案:安装Maven Helper插件 二.Idea不识别java文件(类文件显示橙色) 解决方案: 第 ...

  6. 解决 Windows 编译 Fast R-CNN 的 bbox 和 nms 出现的错误 error: Unable to find vcvarsall.bat

    在 Windows 下安装一个底层的 Python 包时(Fast R-CNN 的 bbox 和 nms),遇到 error: Unable to find vcvarsall.bat 错误,看到这个 ...

  7. Android实战项目——家庭记账本(二)

    今天主要是对昨天做的添加账单信息的功能做了完善,实现了数据库的相关操作,如图是对已添加的账单信息的总结显示. 目前实现了通过日期进行汇总的功能,如上图中的各项item就是通过对所有账单信息进行按日期汇 ...

  8. Spring Boot源码(八):Spring AOP源码

    关于spring aop的应用参见:Spring AOP-基于@AspectJ风格 spring在初始化容器时就会生成代理对象: 关于创建bean的源码参见:Spring Boot源码(六):Bean ...

  9. P1345 [USACO5.4]奶牛的电信Telecowmunication【最小割】【最大流】

    题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流.这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相 ...

  10. ABP前端-关于不同按钮调用同一事件传入的参数变为相同的数据

    现象: 在一个含有的Tab标签的页面,两个标签页的新增按钮调用同一个新增事件并传入不同的参数,但实际在调用的的时候传入的参数都变成了最后一个按钮传入的值,即,不论点击哪个Tab按钮的新增事件,最终传入 ...