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 ;
}

最新文章

  1. delphi中webbrowser的用法
  2. linux下的磁盘和文件系统管理
  3. windows下安装coreseek/sphinx
  4. 如何更新Linux源
  5. JS、jqueryie6浏览器下使用js无法提交表单的解决办法
  6. unsigned int 转 RGB
  7. hdu 2304
  8. VS中Release模式下生成去掉生成pdb文件
  9. Jenkins+maven+git配置
  10. 四大组件之Service小结
  11. Vue 进阶之路(六)
  12. pandas.read_csv() 报错 OSError: Initializing from file failed,报错原因分析和解决方法
  13. Fiddler抓包请求前设置断点
  14. CentOS7 上以 RPM 包方式安装 Oracle 18c 单实例
  15. XSS安全处理
  16. OA系统启动:基础数据,工作流设计
  17. 自己喜欢用的一个初始化的common.css
  18. Smart Thread Pool (智能线程池)
  19. PL/SQL编辑数据&quot;这些查询结果不可更新,请包括ROWID或使用SELECT...FOR UPDATE获得可更新结果&quot;处理
  20. Spring 特点

热门文章

  1. ThreadPool(线程池)介绍
  2. 00-django | 01-构建博客目录
  3. 搜索练习题LETTERS
  4. .net全栈开发-c#面向对象与工控自动化分拣上位机
  5. 最新2019Pycharm安装教程,亲测!最新2019pycharm安装!如何安装Pycharm2019版本!如何安装2019Pycharm永久教程!2019Pycharm永久安装!
  6. 关于在ssm下创建项目使用阿里巴巴下的druid数据库报错,出现无法创建连接的原因
  7. swiper滑动失效问题
  8. numpy reshape -1
  9. windows 停止和启动Redis
  10. Linux进程间通信-管道深入理解(转)