BZOJ 4597: [Shoi2016]随机序列
4597: [Shoi2016]随机序列
Time Limit: 20 Sec Memory Limit: 256 MB
Submit: 255 Solved: 174
[Submit][Status][Discuss]
Description
Input
Output
Sample Input
9384 887 2778 6916 7794
2 8336
5 493
3 1422
1 28
4 60
Sample Output
252923708
942282590
228728040
608998099
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <iostream>
#define ll long long
#define MAXN 100100
#define mod 1000000007
using namespace std;
struct tree{
int l,r;ll lz,sum;
}a[MAXN*];
ll v[MAXN],vv[MAXN],pw[MAXN];
int n,q; void pushup(int xv){
a[xv].sum=a[xv*].sum+a[xv*+].sum;
//a[xv].sum%=mod;
if(a[xv].sum>=mod) a[xv].sum-=mod;
} void build(int xv,int l,int r){
if(l==r){
a[xv].l=l,a[xv].r=r,a[xv].lz=;
if(l==n) a[xv].sum=v[l];
else a[xv].sum=*v[l]*pw[n--l]%mod;
return;
}
a[xv].l=l,a[xv].r=r,a[xv].lz=;
int mid=(l+r)/;
build(xv*,l,mid),build(xv*+,mid+,r);
pushup(xv);
} ll ni(ll bas,ll ti){
ll ans=;
while(ti){
if(ti&) ans=(ans*bas)%mod;
bas=(bas*bas)%mod;ti>>=;
}
return ans;
} void pushdown(int xv){
if(a[xv].lz==) return;
a[xv*].sum=(a[xv*].sum*a[xv].lz)%mod;
a[xv*+].sum=(a[xv*+].sum*a[xv].lz)%mod;
a[xv*].lz=(a[xv*].lz*a[xv].lz)%mod;
a[xv*+].lz=(a[xv*+].lz*a[xv].lz)%mod;
a[xv].lz=;
} void change(int xv,int l,int r,ll x){
int L=a[xv].l,R=a[xv].r,mid=(L+R)/;
if(l==L&&R==r){
a[xv].sum=a[xv].sum*x%mod;
a[xv].lz=a[xv].lz*x%mod;
return;
}
pushdown(xv);
if(r<=mid) change(xv*,l,r,x);
else if(l>mid) change(xv*+,l,r,x);
else change(xv*,l,mid,x),change(xv*+,mid+,r,x);
pushup(xv);
} int main()
{
scanf("%d%d",&n,&q);
v[]=;for(int i=;i<=n;i++) scanf("%lld",&v[i]),vv[i]=v[i],v[i]=(v[i]*v[i-])%mod;
pw[]=;for(int i=;i<=n;i++) pw[i]=pw[i-]*,pw[i]%=mod;
build(,,n);
while(q--){
int ps,x;scanf("%d%d",&ps,&x);
ll xx=(x*ni(vv[ps],mod-))%mod;
vv[ps]=x;
change(,ps,n,xx);
printf("%lld\n",a[].sum);
}
return ;
}
BZOJ 4597: [Shoi2016]随机序列的更多相关文章
- BZOJ 4597: [Shoi2016]随机序列 线段树 + 思维
Description 你的面前有N个数排成一行.分别为A1, A2, … , An.你打算在每相邻的两个 Ai和 Ai+1 间都插入一个加号或者 减号或者乘号.那么一共有 3^(n-1) 种可能的表 ...
- 【BZOJ4597】[Shoi2016]随机序列 线段树
[BZOJ4597][Shoi2016]随机序列 Description 你的面前有N个数排成一行.分别为A1, A2, … , An.你打算在每相邻的两个 Ai和 Ai+1 间都插入一个加号或者减号 ...
- P4340 [SHOI2016]随机序列
题目 P4340 [SHOI2016]随机序列 思维好题 做法 是否觉得水在于你是否发现加减是会抵消的,所以我们只用考虑乘的部分 一块乘只能前面无号(也就是前缀形式)才统计,所以用线段树维护区间前缀乘 ...
- bzoj 4597||洛谷P4340 [Shoi2016]随机序列
https://www.lydsy.com/JudgeOnline/problem.php?id=4597 https://www.luogu.org/problemnew/show/P4340 妄图 ...
- BZOJ 4597 随机序列
一定要想到,对于一个空位如果填了+,那么一定有一个表达式这里填-号使得后面的全部抵消掉.这点十分重要. 于是发现这个答案只和前缀积有关,线段树维护即可. #include<iostream> ...
- bzoj 4596 [Shoi2016]黑暗前的幻想乡 矩阵树定理+容斥
4596: [Shoi2016]黑暗前的幻想乡 Time Limit: 20 Sec Memory Limit: 256 MBSubmit: 559 Solved: 325[Submit][Sta ...
- BZOJ4597:[SHOI2016]随机序列——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4597 你的面前有N个数排成一行.分别为A1, A2, … , An.你打算在每相邻的两个 Ai和 ...
- BZOJ4597: [Shoi2016]随机序列
Description 你的面前有N个数排成一行.分别为A1, A2, … , An.你打算在每相邻的两个 Ai和 Ai+1 间都插入一个加号或者 减号或者乘号.那么一共有 3^(n-1) 种可能的表 ...
- BZOJ 4596: [Shoi2016]黑暗前的幻想乡
Sol 容斥原理+Matrix-Tree定理.容斥跟小星星那道题是一样的,然后...直接Matrix-Tree定理就可以了... 复杂度\(O(2^{n-1}n^3)\) PS:调了好久啊QAQ 明明 ...
随机推荐
- 【Offer】[43] 【1~n整数中1出现的次数】
题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入一个整数n,求1~n这n个整数的十进制表示中1出现的次数.例如,输入12, 1~12这些整数中包含1的数字有1.10.11和12,1 ...
- 更改mac电脑图片默认存储位置
1.创建存储位置screenshot 2.打开terminal 3.defaults write com.apple.screencapture location ~/Desktop/screensh ...
- Java 中创建对象的 5 种方式!
Java中有5种创建对象的方式,下面给出它们的例子还有它们的字节码 Employee类: class Employee implements Cloneable, Serializable { pri ...
- VUE Node模式下,如何改变菜单的颜色,如何将超长文字缩略显示,在鼠标进入后展开全部显示,鼠标移出则恢复缩略显示
VUE Node模式下,如何改变菜单的颜色,如何将超长文字缩略显示,在鼠标进入后展开全部显示,鼠标移出则恢复缩略显示: “事件”引起变量值的变化,系统引擎自动根据变量值的变化刷新页面 在VUE Nod ...
- Google 官方 侧滑 drawerlayout
一.概述 目前侧滑框架已经很多了,但是我常用的也就那么2个 ,slidingmenu 和sidemenu-android, 但是项目要求使用官方的,所以就看了一下drawerlayout 二.代码 官 ...
- JVM学习(虚拟机栈、堆、方法区)自我看法
堆(Heap): 此内存区域唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配.这一点在java虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配. 虚拟机栈(Stack): 虚拟机栈主 ...
- ios 把数组对象转成json字符串存起来
1第一步是我们获取数据源 一般我们都是从接口请求数据 NSArray *subColumnsArray = nil; NSDictionary *dict = [NSJSONSerialization ...
- 02 (H5*) Vue第二天
目录: 1:全局过滤器的使用 2:局部过滤器 3:自定义键盘码 4:自定义指令 5:自定义私有指令 6:Vue生命周期. 7:网络请求 1:全局过滤器的使用 Vue.filter("msgF ...
- Weblogic任意文件上传漏洞(CVE-2018-2894)复现
使用docker搭建漏洞测试环境 micr067@test:~/vulhub/weblogic/CVE-2018-2894$ sudo docker-compose build weblogic us ...
- 利用echarts展示旅行足迹
前言 一直有个环游世界的梦,周游列国,体验不同国家的人类文明,寻山访水,体验造物主大自然的伟大造化.毕竟人生不止眼前的苟且,还有诗和远方.这么多年以来,陆续走过了一些地方,每到一个地方,都让我离梦想又 ...