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. DEVIL MAY CRY V:《鬼泣5》

    “又是一个带孝子的故事”

  2. 多柱汉诺塔问题“通解”——c++

    多柱汉诺塔问题 绪言 有位同学看到了我的初赛模拟卷上有一道关于汉诺塔的数学题.大概就是要求4柱20盘的最小移动次数. 他的数学很不错,找到了应该怎样推. 如果要把n个盘子移到另一个柱子上,步骤如下: ...

  3. css常用样式背景background如何使用

    css背景background属性常用于定义HTML的背景,background简写属性作用是将背景属性设置在一个声明中,background背景属性常见为以下这些:.background-color ...

  4. Vue中vue-i18n结合vant-ui实现国际化

    (一)添加依赖模块 在package.json文件中添加vant模块的依赖,如: // package.json { "dependencies": { "vant&qu ...

  5. Spring中 @Autowired注解与J2EE@Resource注解的区别

    在开发中经常使用到@Autowired和@Resource进行装配. 不禁好奇这两个注解的差异在何处??? 相同点: @Resource的作用相当于@Autowired,均可标注在字段或属性的sett ...

  6. java课后作业10.14

    一.简单总结一下java中类的初始化的规律: 1.类的构造函数优先 2.初始化块儿和定义时候的赋值,这俩个初始化方法优先级是一样的,在程序中谁最后执行,那么程序就采用谁的初始化值. 二.在java中想 ...

  7. 对象浅拷贝Object.assign

    const target = { a: { b: { c: { d: 1 } }, e: 5, f: 6, h: 10 } } const source = { a: { b: { c: { d: 1 ...

  8. 堆排序用JavaScript实现

    class Heap { constructor (data) { this.data = data } sort () { let iArr = this.data let n = iArr.len ...

  9. typescript-环境搭建

    这个环境比较简单 搭建 TypeScript 开发环境 什么是 compiler? less 编译器:less EcmaScript 6 编译器:babel TypeScript 编译器:typesc ...

  10. LAMP(七)之编译安装php(模块化和fpm两种方式)

    安装前说明: 安装环境: CentOS6 安装应用程序:httpd2.4 + mariadb + php 安装次序: 先编译安装 httpd2.4和mariadb,最后安装php 编译安装 httpd ...