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 明明 ...
随机推荐
- moco 入门及问题解决
废话不多说 下载: http://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/ 选择最新版本下载jar包 启动: 1:在本地jar包 ...
- 封装axios来管控api的2种方式
前言:我们在开发项目的时候,往往要处理大量的接口.并且在测试环境 开发环境 生产环境使用的接口baseurl都不一样 这时候如果在开发环境完成之后切换每一个接口的baseurl会变的非常的麻烦,(要去 ...
- Java开学测试
这次开学测试要求做一个信息系统,该系统完成学生成绩录入,修改,计算学分积点和查询学生成绩的简单功能. 下面是我写的代码 //信1805-3班 20183641 赵树琪 package test; im ...
- Redis缓存穿透、缓存雪崩、并发问题分析与解决方案
(一)缓存和数据库间数据一致性问题 分布式环境下(单机就不用说了)非常容易出现缓存和数据库间的数据一致性问题,针对这一点的话,只能说,如果你的项目对缓存的要求是强一致性的,那么请不要使用缓存.我们只能 ...
- Vert.x Core 文档手册
Vert.x Core 文档手册 中英对照表 Client:客户端 Server:服务器 Primitive:基本(描述类型) Writing:编写(有些地方译为开发) Fluent:流式的 Reac ...
- window下tomcat的下载安装和环境配置
一.下载安装tomcat 去官网:http://tomcat.apache.org/ 下载自己所需要的版本,解压在没有中文的文件夹路径下. 直接打开压缩包下面,进入bin目录,双击startup.b ...
- JavaScript如何给td赋值
td里加个标签,如: <td><div id="aa"></div></td> document.getElementById('a ...
- vue 页面跳转传参
页面之间的跳转传参,正常前端js里写 window.location.href="xxxxx?id=1" 就可以了: 但是vue不一样 需要操作的是路由history,需要用到 V ...
- Web之-----弹出确认框控件应用
引用文件!-------- <link rel="stylesheet" type="text/css" href="@Url.FrontUrl ...
- Swoole入门到实战 打造高性能 赛事直播平台(完整版)
Thinkphp+Swoole入门到实战打造高性能赛事直播平台 第1章 课程介绍 欢迎大家来到swoole的课程!本章主要是介绍了swoole的一些特性,以及使用场景,并且分享了swoole在其他公司 ...