HDU-3074-Multiply game-单点更新
来源:互联网 发布:买车贷款和全款 知乎 编辑:程序博客网 时间:2024/06/05 14:24
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3074
这个也是个线段树的单点更新的模板题;要是不懂的话可以去看看我写的这篇单点更新的,我的HDU1166敌兵布阵代码有详解;
链接:http://blog.csdn.net/wlxsq/article/details/46897219
#include<iostream>#include<string>#include<cstdio>#include<cstring>#include<queue>#include<map>#include<set>#include<vector>#include<algorithm>#define LL long longusing namespace std;struct node{ int l,r; LL v;}node[50005<<2];void PushUp(int numb) // 向父节点更新数据;{ node[numb].v=(node[numb<<1].v%1000000007)*(node[numb<<1|1].v%1000000007)%1000000007;}void build(int l,int r,int numb) // 建树;{ node[numb].l=l; node[numb].r=r; node[numb].v=0; if(l==r) return; int mid=(l+r)>>1; build(l,mid,numb<<1); build(mid+1,r,numb<<1|1);}void Insert(int numb,int t,LL v) // 插入数据;{ int l=node[numb].l,r=node[numb].r; if(l==r&&l==t){ node[numb].v=v; return; } int mid=(l+r)>>1; if(t>mid) Insert(numb<<1|1,t,v); else if(t<=mid) Insert(numb<<1,t,v); PushUp(numb);}LL query(int l,int r,int numb) // 查询数据;{ if(node[numb].l==l&&node[numb].r==r){ return node[numb].v; } int mid=(node[numb].l+node[numb].r)>>1; if(l>mid) return query(l,r,numb<<1|1); else if(r<=mid) return query(l,r,numb<<1); else{ return (query(l,mid,numb<<1)*query(mid+1,r,numb<<1|1))%1000000007; }}int main(){ int t,n,q,a,b; scanf("%d",&t); while(t--){ scanf("%d",&n); build(1,n,1); for(int i=1;i<=n;i++){ scanf("%d",&a); Insert(1,i,a); } scanf("%d",&q); for(int i=0;i<q;i++){ scanf("%d",&a); if(a==0){ scanf("%d%d",&a,&b); cout<<query(a,b,1)<<endl; }else{ scanf("%d%d",&a,&b); Insert(1,a,b); } } } return 0;}
0 0
- HDU-3074-Multiply game-单点更新
- HDU 3074 Multiply game(线段树 单点更新)
- HDU 3074-Multiply game(线段树:单点更新,区间求积)
- HDU 3074 Multiply game(线段树区间乘积,单点更新)
- HDU - 3074 - Multiply game (线段树-单点更新,区间求积)
- hdu 3074 Multiply game
- hdu 3074 Multiply game
- HDU-3074-Multiply game
- hdu 3074 Multiply game
- HDU 3074 Multiply game
- HDU 3074 Multiply game
- hdu 3074 Multiply game
- hdu 3074 Multiply game
- hdu 3074 Multiply game
- hdu 3074 Multiply game
- HDU 3074 Multiply game
- HDOJ 题目3074 Multiply game(线段树单点更新,区间求乘积)
- HDU 3074 线段树 Multiply game
- 网络检错MBProssHUD库的使用
- POJ 1432 Decoding Morse Sequences
- hdu1254推箱子
- css基础学习之--inline-block
- K-means算法
- HDU-3074-Multiply game-单点更新
- poj 3468 A Simple Problem with Integers 线段树
- int,bigint,smallint、tinyint、varchar
- POJ 1661 Help Jimmy
- 编程式使用IoC容器
- 欧拉函数+费马定理 POJ3358
- Linux下编译并使用ZeroMQ
- 动态调试so中init段下断点问题
- 特殊布局