HDU 3074 Multiply game (线段树)
来源:互联网 发布:js给div添加id 编辑:程序博客网 时间:2024/05/16 15:49
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=3074
一道最基本的线段树。
AC代码:
#include <iostream>#include <vector>#include <list>#include <deque>#include <queue>#include <iterator>#include <stack>#include <map>#include <set>#include <algorithm>#include <cctype>#include <cstdio>#include <cstdlib>#include <cstring>#include <string>#include <cmath>using namespace std;typedef long long LL;const int N=50005;const LL II=1000000007;const int INF=0x3f3f3f3f;const double PI=acos(-1.0);int num[N];struct xh{ int l,r; LL ans;}tree[N*3];void build(int l,int r,int k){ tree[k].l=l; tree[k].r=r; if(l==r) { tree[k].ans=num[l]; return ; } int m=(l+r)>>1,a=k<<1,b=k<<1|1; build(l,m,a); build(m+1,r,b); tree[k].ans=(tree[a].ans*tree[b].ans)%II;}LL query(int l,int r,int k){ if(tree[k].l==l&&tree[k].r==r) { return tree[k].ans%II; } int m=(tree[k].l+tree[k].r)>>1; if(m<l) return query(l,r,k<<1|1); else if(m>=r) return query(l,r,k<<1); else { return query(l,m,k<<1)*query(m+1,r,k<<1|1)%II; }}void update(int loc,int val,int k){ if(tree[k].l==loc&&tree[k].r==loc) { tree[k].ans=val; return ; } if(loc<=tree[k<<1].r) update(loc,val,k<<1); if(loc>=tree[k<<1|1].l) update(loc,val,k<<1|1); tree[k].ans=(tree[k<<1].ans*tree[k<<1|1].ans)%II;}int main(){ int T,i,m,n; cin>>T; while(T--) { scanf("%d",&n); for(i=1;i<=n;i++) scanf("%d",&num[i]); build(1,n,1); scanf("%d",&m); while(m--) { int o,b,c; scanf("%d%d%d",&o,&b,&c); if(o==0) { LL ans=query(b,c,1)%II; printf("%I64d\n",ans); } else { update(b,c,1); } } } return 0;}/*161 2 4 5 6 330 2 51 3 70 2 5*/
- 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(线段树模板题) 解题报告
- 3074 Multiply game(线段树求区间乘积)
- HDU 1754 I Hate It (线段树初步point的修改)HDU 3074 Multiply game (增加同余定理)
- hdu 3074 Multiply game
- hdu 3074 Multiply game
- HDU-3074-Multiply game
- hdu 3074 Multiply game
- 大数据处在青春期
- myeclipse
- [各种面试题] 区间和相等的最大区间
- Hadoop Pig学习笔记(一) 各种SQL在PIG中实现
- BesRecording
- HDU 3074 Multiply game (线段树)
- ORA-02429: 无法删除用于强制唯一/主键的索引
- 使用powerdesigner导入mysql创建ER图
- Git remotes/origin/pr/* 分支清理,代码回退等
- 外链锚文本和url的区别
- 在博客中用latex写公式
- Visual Studio 2008 中使用NASM编译汇编文件
- 整数划分问题
- Oct 08 使用Cookie和JSON记录用户最近浏览历史