2020牛客寒假算法基础集训营2 J.求函数 (线段树 推公式 单点修改 区间查询)
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.求函数 (线段树 推公式 单点修改 区间查询)的更多相关文章
- 2020牛客寒假算法基础集训营2 J题可以回顾回顾
2020牛客寒假算法基础集训营2 A.做游戏 这是个签到题. #include <cstdio> #include <cstdlib> #include <cstring ...
- 2020牛客寒假算法基础集训营1 J题可以回顾回顾
2020牛客寒假算法基础集训营1 这套题整体来说还是很简单的. A.honoka和格点三角形 这个题目不是很难,不过要考虑周全,面积是1,那么底边的长度可以是1也可以是2, 注意底边1和2会有重复的, ...
- 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 ...
- 2020牛客寒假算法基础集训营4 J 二维跑步
https://ac.nowcoder.com/acm/contest/view-submission?submissionId=43035417 假设有i步选择不动,就有n-i步移动 假设其中又有a ...
- 2020牛客寒假算法基础集训营4-F树上博弈
链接:https://ac.nowcoder.com/acm/contest/3005/F来源:牛客网 题目描述 现有一个 n 个点,n-1条边组成的树,其中 1 号点为根节点. 牛牛和牛妹在树上玩游 ...
- 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 ...
- 2020牛客寒假算法基础集训营1 F-maki和tree
链接:https://ac.nowcoder.com/acm/contest/3002/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 牛客寒假算法基础集训营5 J 炫酷数学
链接:https://ac.nowcoder.com/acm/contest/331/J来源:牛客网 小希最近想知道一个东西,就是A+B=A|B(其中|为按位或)的二元组有多少个. 当然,直接做这个式 ...
- 2020牛客寒假算法基础集训营5 G街机争霸
题目描述 哎,又是银首,要是你这个签到题少WA一发就金了 牛牛战队的队员打完比赛以后又到了日常甩锅的时间.他们心情悲伤,吃完晚饭以后,大家相约到一个街机厅去solo.牛牛和牛能进入了一个迷宫,这个迷宫 ...
随机推荐
- 通过sql的stuff 把一列几行的记录拼接在一行一个字段
---通过sql的stuff 把一列几行的记录拼接在一行一个字段 select FID,a.FCustomerID as 工地ID , 应验收节点 = (stuff((select ',' + isn ...
- postgresql 文件布局
我们知道linux中一个思想:一切皆文件,那么在我们安装完postgresql数据库后,她长什么样呢?本文带着你一起揭开她的面纱,看看postgresql的文件布局. 说明:由于安装测试的版本是10. ...
- React HOC(高阶组件)
一.定义 高阶函数:函数接受函数作为输入,或者输出一个函数. 高阶组件:接受React组件作为输入,或是输出一个组件.即hocFactory:: W: React.Component => E: ...
- Html介绍,认识html标签
什么是网页?网页就是我们我们提前写好的代码样式经过浏览器的渲染展示出来的样式效果.其实我们常说的上网就是浏览各式各样的网页,这些网页都是由html标签组成,下面就是一个简单的网页,效果图如下: 简单看 ...
- openssl CVE-2016-2107 漏洞检测
最近在安装python3 时升级openssl 版本,在摸索openssl 升级过程中才发现centos6 默认安装的openssl 1.0.1e 版本是有一个严重的漏洞的(Padding oracl ...
- Linux进程间通信-管道深入理解(转)
原文地址:https://www.linuxidc.com/Linux/2018-04/151680.htm Linux进程通信系列文章将详细介绍各种通信方式的机制和区别 1.进程间通信 每个进程各自 ...
- 用浏览器的油猴子脚本调用IDM下载百度云盘中的资料
用浏览器的油猴子脚本调用IDM下载百度云盘中的资料(只能支持单个文件下载) 第一步需要现在浏览器中安装油猴子插件Tampermonkey.crx 安装油猴子插件插件主页:https://tamperm ...
- JN_0014:win10命令窗口以管理员方式启动
1,先打开命令窗口 2,固定到任务栏 3,右键任务栏图标 4,右键命令提示符, 5,选择以管理员方式启动.
- spark-sklearn TypeError: 'JavaPackage' object is not callable
from sklearn import svm, datasets from spark_sklearn import GridSearchCV from pyspark import SparkCo ...
- 【你不知道的javaScript 中卷 笔记1】javaScript中的类型与值
一.类型与值 1.0 javaScript 七种内置类型: 空值(null) 未定义(undefined) 布尔值( boolean) 数字(number) 字符串(string) 对象(object ...