单点更新,更新时先除去 原来的数,因为有去摸,可以用乘上逆元代替。

//============================================================================
// Name : A.cpp
// Author : L_Ecry
// Version :
// Copyright : Your copyright notice
// Description : Hello World in C++, Ansi-style
//============================================================================ #include <iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#define N 50050
#define MOD 1000000007
#define LL long long
using namespace std;
LL value[N*];
int a[N];
int n;
int extgcd(int a,int b,int &x,int &y)
{
int t,d;
if(b==){
x=;y=;
return a;
}
d=extgcd(b,a%b,x,y);
t=x;
x=y;
y=t-a/b*y;
return d;
}
int invmod(int a,int n)
{
int x,y;
if(extgcd(a,n,x,y)!=)return -;
return (x%n+n)%n;
}
void build(int l,int r,int i)
{
if(l==r){
value[i]=a[l];
return;
}
int mid=(l+r)>>;
int lson=(i<<),rson=(i<<|);
build(l,mid,lson);
build(mid+,r,rson);
value[i]=(value[lson]*value[rson])%MOD;
}
void update(int l,int r,int p,int va,int i)
{
if(l==r)
{
value[i]=va;
return;
}
value[i]=(value[i]*invmod(a[p],MOD))%MOD;
value[i]=(value[i]*va)%MOD;
int mid=(l+r)>>;
if(p<=mid)update(l,mid,p,va,i<<);
else update(mid+,r,p,va,i<<|);
}
LL query(int l,int r,int pl,int pr,int i)
{
if(l==pl&&r==pr)
return value[i];
int mid=(l+r)>>;
if(mid>=pr)return query(l,mid,pl,pr,i<<);
else if(pl>mid)return query(mid+,r,pl,pr,i<<|);
else {
return (query(l,mid,pl,mid,i<<)*query(mid+,r,mid+,pr,i<<|))%MOD;
}
}
void init()
{
scanf("%d",&n);
for(int i=;i<=n;++i)
scanf("%d",&a[i]);
build(,n,);
}
void solve()
{
int q;
scanf("%d",&q);
while(q--)
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
if(x==)
{
update(,n,y,z,);
a[y]=z;
}else
{
printf("%lld\n",query(,n,y,z,));
}
}
}
int main() {
int tt;
scanf("%d",&tt);
while(tt--)
{
init();
solve();
}
return ;
}

HDU 3074 Multiply game(线段树)的更多相关文章

  1. HDU 3074.Multiply game-区间乘法-线段树(单点更新、区间查询),上推标记取模

    Multiply game Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tot ...

  2. hdu 5700区间交(线段树)

    区间交 Time Limit: 8000/4000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submiss ...

  3. Snacks HDU 5692 dfs序列+线段树

    Snacks HDU 5692 dfs序列+线段树 题意 百度科技园内有n个零食机,零食机之间通过n−1条路相互连通.每个零食机都有一个值v,表示为小度熊提供零食的价值. 由于零食被频繁的消耗和补充, ...

  4. hdu 3074 Multiply game(模板级线段树)

    离机房关门还有十分钟,这点时间能干些什么?故作沉思地仰望星空,重新捋一下一天的学习进度,或者,砍掉一棵模板级线段树. 纯模板,就是把单点更新,区间求和改为单点更新,区间求积. 1A. #include ...

  5. hdu 3074 Multiply game

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=3074 Minimum Inversion Number Description Tired of pl ...

  6. HDU 4578 - Transformation - [加强版线段树]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4578 Problem Description Yuanfang is puzzled with the ...

  7. HDU 5091---Beam Cannon(线段树+扫描线)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5091 Problem Description Recently, the γ galaxies bro ...

  8. HDU 1542 Atlantis(线段树扫描线+离散化求面积的并)

    Atlantis Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  9. HDU 4031 Attack(线段树/树状数组区间更新单点查询+暴力)

    Attack Time Limit: 5000/3000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others) Total Sub ...

随机推荐

  1. hdu5816 卡特兰数+dp

    题意:共n张无中生有,m张攻击牌.每张攻击牌攻击力已知,敌方有p点血.随机洗牌.游戏开始,己方抽取一张手牌,若是无中生有则可再抽两张牌.求能在第一回合内将敌方杀死的概率. n+m <= 20, ...

  2. Git 的origin和master分析 push/diff/head(转)

    1.origin/master : 一个叫 origin 的远程库的 master 分支 2.HEAD指向当前工作的branch,master不一定指向当前工作的branch 3.git  push ...

  3. Memcache的安装

    下载安装包: wget http://www.memcached.org/files/memcached-1.4.32.tar.gz wget https://cloud.github.com/dow ...

  4. spring.hibernate设置参数的位置问题

    1.spring的注解设置在set方法上 2.hibernate的注解设置在get方法上

  5. python操作mongodb之四cp数据库

    from pymongo import MongoClient #连接数据库 client=MongoClient('192.168.30.252',27017) #获取现有数据库的名称 client ...

  6. 配置NGReport 报告中文

    1. 测试报告的名称 在测试开始或测试监听器的类中加上下面一句代码即可: System.setProperty("org.uncommons.reportng.title", &q ...

  7. ios app 支持 ipv6-only

    最近苹果公司发布声明:自今年6月1日开始,所有提交至苹果App Store的应用申请必须要兼容面向硬件识别和网络路由的最新互联网协议--IPv6-only标准. 那么问题来了,目前的app是否支持ip ...

  8. 空心文字闪动--css3

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  9. ember

    为什么要用这种单页面应用.单页面应用就可以是一个web app ,而不是一个web site了,但是百度的大王是退mvc的,考虑到gc什么的? 所以说写组件component和mvc压根是两个完全从角 ...

  10. (08)odoo继承机制

    * 全局的引用    所有的的模型定义外,都在注册中心注册了,我们可以用全局变量来引用这些模型    self.env[mode name] 比如得到合作伙伴这个模型 self.evn['res.pa ...