题意:

      给你n个数,两种操作,(1) 把第b个数改成c (2)算出b-c的乘积,结果对1000000007取余。

思路:

      线段树单点更新,简单题目,不多解释,具体看代码。



#include<stdio.h>

#define lson l ,mid ,t << 1
#define rson mid + 1 ,r ,t << 1 | 1
#define MOD 1000000007

__int64
sum[50000*4+100]; void Pushup(int t)
{

sum[t] = ((sum[t<<1] % MOD) * (sum[t<<1|1] % MOD)) % MOD;
} void
BuidTree(int l ,int r ,int t)
{

sum[t] = 1;
if(
l == r)
{

scanf("%I64d" ,&sum[t]);
sum[t] %= MOD;
return;
}
int
mid = (l + r) >> 1;
BuidTree(lson);
BuidTree(rson);
Pushup(t);
} void
Update(int l ,int r ,int t ,int a ,int b)
{
if(
l == r)
{

sum[t] = b % MOD;
return;
}
int
mid = (l + r) >> 1;
if(
a <= mid) Update(lson ,a ,b);
else
Update(rson ,a ,b);
Pushup(t);
} __int64
Query(int l ,int r ,int t ,int a ,int b)
{
if(
a <= l && b >= r)
return
sum[t];
int
mid = (l + r) >> 1;
__int64
ans = 1;
if(
a <= mid) ans = Query(lson ,a ,b) % MOD;
if(
b > mid) ans *= Query(rson ,a ,b) % MOD;
return
ans % MOD;
} int main ()
{
int
t ,i ,n ,m ,a ,b ,c;
scanf("%d" ,&t);
while(
t--)
{

scanf("%d" ,&n);
BuidTree(1 ,n ,1);
scanf("%d" ,&m);
while(
m--)
{

scanf("%d %d %d" ,&a ,&b ,&c);
if(
a) Update(1 ,n ,1 ,b ,c);
else
printf("%I64d\n" ,Query(1 ,n ,1 ,b ,c) % MOD);
}
}
return
0;
}

hdu3074 线段树求区间乘积(单点更新)的更多相关文章

  1. hdoj 1166 敌兵布阵【线段树求区间最大值+单点更新】

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submis ...

  2. hdu 1754 I Hate It (线段树求区间最值)

    HDU1754 I Hate It Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u D ...

  3. 2016年湖南省第十二届大学生计算机程序设计竞赛---Parenthesis(线段树求区间最值)

    原题链接 http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1809 Description Bobo has a balanced parenthes ...

  4. xdoj-1324 (区间离散化-线段树求区间最值)

    思想 : 1 优化:题意是覆盖点,将区间看成 (l,r)转化为( l-1,r) 覆盖区间 2 核心:dp[i]  覆盖从1到i区间的最小花费 dp[a[i].r]=min (dp[k])+a[i]s; ...

  5. 【线段树求区间第一个不大于val的值】Lpl and Energy-saving Lamps

    https://nanti.jisuanke.com/t/30996 线段树维护区间最小值,查询的时候优先向左走,如果左边已经找到了,就不用再往右了. 一个房间装满则把权值标记为INF,模拟一遍,注意 ...

  6. hdu1166 敌兵布阵(线段树 求区间和 更新点)

    敌兵布阵 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submi ...

  7. 2016 Multi-University Training Contest 10 [HDU 5861] Road (线段树:区间覆盖+单点最大小)

    HDU 5861 题意 在n个村庄之间存在n-1段路,令某段路开放一天需要交纳wi的费用,但是每段路只能开放一次,一旦关闭将不再开放.现在给你接下来m天内的计划,在第i天,需要对村庄ai到村庄bi的道 ...

  8. HDU6447 YJJ's Salesman-2018CCPC网络赛-线段树求区间最值+离散化+dp

    目录 Catalog Solution: (有任何问题欢迎留言或私聊 && 欢迎交流讨论哦 Catalog Problem:Portal传送门  原题目描述在最下面.  1e5个点,问 ...

  9. poj 3264 线段树 求区间最大最小值

    Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same ...

随机推荐

  1. POJ-3281(最大流+EK算法)

    Dining POJ-3281 这道题目其实也是网络流中求解最大流的一道模板题. 只要建模出来以后直接套用模板就行了.这里的建模还需要考虑题目的要求:一种食物只能给一只牛. 所以这里可以将牛拆成两个点 ...

  2. Codeforces 1167c(ccpc wannafly camp day1) News Distribution 并查集模板

    题目: In some social network, there are nn users communicating with each other in mm groups of friends ...

  3. pytorch(10)transform模块(进阶)

    图像变换 Pad 对图片边缘进行填充 transforms.Pad(padding,fill=0,padding_mode='constant') padding:设置填充大小,(a,b,c,d)左上 ...

  4. SnowNLP——获取关键词(keywords(1))

    一.SnowNLP的获取文本关键词 前面介绍了SnowNLP的获取关键词的方法,这里再重现一下 1 from snownlp import SnowNLP 2 # 提取文本关键词,总结3个关键词 3 ...

  5. 确保某个BeanDefinitionRegistryPostProcessor Bean被最后执行的几种实现方式

    目录 一.事出有因 二.解决方案困境 三.柳暗花明,终级解决方案 第一种实现方案 第二种实现方案 第三种实现方案 四.引发的思考 一.事出有因 ​ 最近有一个场景,因同一个项目中不同JAR包依赖同一个 ...

  6. Apache配置 11. 访问控制-user_agent

    (1)介绍 user_agent是指用户浏览器端的信息.比如你是用IE的还是Firefox浏览器的.有些网站会根据这个来调整打开网站的类型,如是手机的就打开wap,显示非手机的就打开PC常规页面. ( ...

  7. [BJWC2018] Kakuro

    一.题目 点此看题 二.解法 我一开始一直想不出来,直接刚这个题实在是太复杂了,因为一开始就是不合法的. 下次遇到复杂的题一定要想 调整法 ,我再不往这个方向想我吔屎 好了言归正传,我们先找一组可行的 ...

  8. 计算机图形学中使用Turbo C++画图步骤

    一.下载安装Turbo C++ 我安装的是Turbo C++ 3.2.2.0下载链接 二.画图 1.打开Turbo C++,点击右下角start turbo C++ 2.点击file ->new ...

  9. 对接快递100&聚水潭API

    对接快递100&聚水潭API 入我相思门,知我相思苦. 简介:对接第三方平台快递100&聚水潭API的简要总结. 1.感悟 个人感觉快递100的API更友好一些,比如有SDK可以调用: ...

  10. java例题_22 用递归求阶乘 5!

    1 /*22 [程序 22 递归求阶乘] 2 题目:利用递归方法求 5!. 3 程序分析:递归公式:fn!=fn*4! 4 */ 5 6 /*分析 7 * 递归:如果其中每一步都要用到前一步或前几步的 ...