HDU 3074 Multiply game(线段树)
单点更新,更新时先除去 原来的数,因为有去摸,可以用乘上逆元代替。
//============================================================================
// 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(线段树)的更多相关文章
- HDU 3074.Multiply game-区间乘法-线段树(单点更新、区间查询),上推标记取模
Multiply game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- hdu 5700区间交(线段树)
区间交 Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submiss ...
- Snacks HDU 5692 dfs序列+线段树
Snacks HDU 5692 dfs序列+线段树 题意 百度科技园内有n个零食机,零食机之间通过n−1条路相互连通.每个零食机都有一个值v,表示为小度熊提供零食的价值. 由于零食被频繁的消耗和补充, ...
- hdu 3074 Multiply game(模板级线段树)
离机房关门还有十分钟,这点时间能干些什么?故作沉思地仰望星空,重新捋一下一天的学习进度,或者,砍掉一棵模板级线段树. 纯模板,就是把单点更新,区间求和改为单点更新,区间求积. 1A. #include ...
- hdu 3074 Multiply game
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=3074 Minimum Inversion Number Description Tired of pl ...
- HDU 4578 - Transformation - [加强版线段树]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4578 Problem Description Yuanfang is puzzled with the ...
- HDU 5091---Beam Cannon(线段树+扫描线)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5091 Problem Description Recently, the γ galaxies bro ...
- HDU 1542 Atlantis(线段树扫描线+离散化求面积的并)
Atlantis Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total S ...
- HDU 4031 Attack(线段树/树状数组区间更新单点查询+暴力)
Attack Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others) Total Sub ...
随机推荐
- 简单的php性能注意点
什么情况,可能遇到性能问题: 1.php语法使用的不恰当 2.使用php语言做了它不擅长做的事 3.用php语言连接的服务不给力 4.php自身的短板 5.我也不知道的问题 一般情况:php性能问题不 ...
- CentOS6.x最下化安装及优化配置
一.最小化安装自定义额外包组 1.1 选择最小化安装 1.2 自定义额外的包组 Base System的选择 Development的选择 如果需要中文的支持可以在Languages中勾选中文 1.3 ...
- JavaSE复习_3 继承
△先默认初始化,在显示初始化,在构造函数初始化 △继承的弊端:代码的耦合性增加了. △子类不能继承父类的构造方法. △子类会拥有父类的私有成员变量,但是必须通过get,set方法访问. △super不 ...
- android下基本json串的生成与解析
以前就用过json串,不过是在java环境下面,如今转移到android环境下,java里面生成解析json串的jar包与android中自带的冲突,所以也只能用安卓自带的. 先前查网上的资料,感 ...
- 基础4 Android基础
基础4 Android基础 1. Activity与Fragment的生命周期. Activity生命周期 打开应用 onCreate()->onStart()->onResume 按BA ...
- linux简单配置
lsof -i lsof -i:211.判断apache查找httpd路径: ps aux | grep httpd 结果: /usr/local/apache/bin/httpd /usr/loc ...
- 【服务器防护】WEB防护 - WEBSHELL攻击探测【转载】
原文:http://www.2cto.com/Article/201511/451757.html 1. 什么是webshell? 基于b/s架构的软件部署在Internet上,那么安全性是必 ...
- datagrid实现单行的选择、取消
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- 20160815_设置静态IP
1.CentOS6.4x64里面默认没有文件"/etc/sysconfig/network-scripts/ifcfg-eth0"(还是 是有的,但是默认为空??以后再看吧...) ...
- ionic 原生日历控件不支持,改用 datepicker-for-ionic
具体参考地址 http://npm.taobao.org/package/datepicker-for-ionic