题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3074

题目大意:单点更新。维护序列乘法。mod 1000000007。

解题思路:

1000000007*1000000007~10^18<9*10^18(int64)

所以单步模P乘法可以直接计算。

(a*b)%p=[(a%p)*(b%p)]%p,PushUp维护即可。

Query的rson的时候,要先判下lson是否存在,不存在ret=Query(rson),否则ret=(Query(lson)*Query(rson))%p

#include "iostream"
#include "string"
#include "vector"
#include "cstring"
#include "fstream"
#include "cstdio"
using namespace std;
#define M 100005
#define lson l,mid,root<<1
#define rson mid+1,r,root<<1|1
#define LL long long
#define mod 1000000007
LL ans[M<<];
void PushUp(int root)
{
LL a=ans[root<<]%mod,b=ans[root<<|]%mod;
ans[root]=(a*b)%mod;
}
void build(int l,int r,int root)
{
if(l==r)
{
scanf("%I64d",&ans[root]);
return;
}
int mid=(l+r)>>;
build(lson);
build(rson);
PushUp(root);
}
void update(int p,int value,int l,int r,int root)
{
if(l==r)
{
ans[root]=value;
return;
}
int mid=(l+r)>>;
if(p<=mid) update(p,value,lson);
else update(p,value,rson);
PushUp(root);
}
LL Query(int L,int R,int l,int r,int root)
{
if(L<=l&&r<=R) return ans[root]%mod;
int mid=(l+r)>>;
LL ret=-;
if(L<=mid) ret=Query(L,R,lson);
if(R>mid)
{
LL rr=Query(L,R,rson);
if(ret!=-)
{
LL a=ret%mod,b=rr%mod;
ret=(a*b)%mod;
}
else ret=rr;
}
return ret;
}
int main()
{
//freopen("in.txt","r",stdin);
int n,q,ll,rr,p,k,v,cmd;
int T;scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
build(,n,);
scanf("%d",&q);
while(q--)
{
scanf("%d",&cmd);
if(cmd==)
{
scanf("%d%d",&k,&v);
update(k,v,,n,);
}
if(cmd==)
{
scanf("%d%d",&ll,&rr);
LL ans=Query(ll,rr,,n,);
printf("%I64d\n",ans%mod);
}
}
}
return ;
}

HDU 3074 (线段树+模P乘法)的更多相关文章

  1. hdu 3074(线段树)

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

  2. hdu 4578 线段树(标记处理)

    Transformation Time Limit: 15000/8000 MS (Java/Others)    Memory Limit: 65535/65536 K (Java/Others) ...

  3. hdu 5877 线段树(2016 ACM/ICPC Asia Regional Dalian Online)

    Weak Pair Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)Total ...

  4. hdu 3974 线段树 将树弄到区间上

    Assign the task Time Limit: 15000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  5. hdu 3436 线段树 一顿操作

    Queue-jumpers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) To ...

  6. hdu 3397 线段树双标记

    Sequence operation Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  7. hdu 4533 线段树(问题转化+)

    威威猫系列故事——晒被子 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Tot ...

  8. hdu 2871 线段树(各种操作)

    Memory Control Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  9. hdu 4052 线段树扫描线、奇特处理

    Adding New Machine Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

随机推荐

  1. 服务器知识----IIS架设问题

    1,基本配置,应用程序池,路径等. 2,权限设置  Iuser  IIS_users 只读权限 3,isapi映射  framework安装目录下  运行 aspnet_regiis.exe -i 注 ...

  2. HTML5 – 4.canvas

    1.绘制矩形 2.绘制圆形 3.绘制文字 4.保存文件 什么是 Canvas? HTML5 <canvas> 元素用于图形的绘制,通过脚本 (通常是JavaScript)来完成. < ...

  3. 重温WCF之发送和接收SOAP头(三)

    SOAP头可以理解为一种附加信息,就是附加到消息正文的内容. 既然消息头是附加信息,那有啥用呢?你可别说,有时候还真有不少用处.举个例子,WCF的身份验证是不是很麻烦?还要颁发什么证书的(当然不是荣誉 ...

  4. Delphi中exit、break、continue等跳出操作的区别

    Delphi中表示跳出的有break,continue,abort,exit,halt,runerror等 1.break 强制退出最近的一层循环(注意:只能放在循环里:而且是只能跳出最近的一层循环) ...

  5. 【131202】SQL

    SELECT TOP 2 * FROM Persons SELECT *FROM PersonsWHERE ROWNUM <= 5   SELECT * FROM Persons WHERE C ...

  6. poj 1724:ROADS(DFS + 剪枝)

    ROADS Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10777   Accepted: 3961 Descriptio ...

  7. Oracle优化 -- 关于Database Buffer Cache相关参数DB_CACHE_SIZE的优化设置

    select size_for_estimate, buffers_for_estimate ,ESTD_PHYSICAL_READ_factor,ESTD_PHYSICAL_READS from v ...

  8. 利用IdentityServer3在ASP.NET 5和Angular中实现OAuth2 Implicit Flow

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:之前介绍过的IdentityServer3虽然是基于Katana开发的,不过同样可以托 ...

  9. 注解:【无连接表的】Hibernate单向N->1关联

    Person与Address关联:单向N->1,[无连接表的] Person.java package org.crazyit.app.domain; import javax.persiste ...

  10. [转]svn常用命令

    谢谢原作者:http://blog.sina.com.cn/s/blog_963453200101eiuq.html 1.检出svn  co  http://路径(目录或文件的全路径) [本地目录全路 ...