Another Array of Orz Pandas
Another Array of Orz Pandas
题目链接:http://acm.xidian.edu.cn/problem.php?id=1187
线段树
线段树维护区间和以及区间内各个数平方和,对于每一个询问ans=(sum2-pow_sum)/2
代码如下:
#include<cstdio>
#include<cstring>
#define lson (x<<1)
#define rson (x<<1|1)
#define mid ((l+r)>>1)
#define N 100007
typedef long long LL;
struct nod{
LL sum,lazy,or2zds;
}a[N<<];
const LL mod=1e9+;
const LL Max=1e9;
LL n,m;
void push_up(LL x){
a[x].sum=(a[lson].sum+a[rson].sum)%mod;
a[x].or2zds=(a[lson].or2zds+a[rson].or2zds)%mod;
}
void push_down(LL x,LL l,LL r){
a[lson].or2zds=(a[lson].or2zds+(a[x].lazy*a[x].lazy)%mod*(mid+-l)+*a[x].lazy*a[lson].sum+mod)%mod;
a[lson].sum=(a[lson].sum+a[x].lazy*(mid+-l))%mod;
a[lson].lazy=(a[lson].lazy+a[x].lazy)%mod;
a[rson].or2zds=(a[rson].or2zds+(a[x].lazy*a[x].lazy)%mod*(r-mid)+*a[x].lazy*a[rson].sum+mod)%mod;
a[rson].sum=(a[rson].sum+a[x].lazy*(r-mid))%mod;
a[rson].lazy=(a[rson].lazy+a[x].lazy)%mod;
a[x].lazy=;
}
void add(LL x,LL l,LL r,LL cl,LL cr,LL v){
if(cl<=l&&r<=cr){
a[x].or2zds=(a[x].or2zds+(v*v)%mod*(r-l+)%mod+*v*a[x].sum)%mod;
a[x].sum=(a[x].sum+v*(r-l+))%mod;
a[x].lazy=(a[x].lazy+v)%mod;
return;
}
if(a[x].lazy!=)push_down(x,l,r);
if(cl<=mid)add(lson,l,mid,cl,cr,v);
if(mid<cr)add(rson,mid+,r,cl,cr,v);
push_up(x);
}
void query(LL x,LL l,LL r,LL ql,LL qr,LL &sum,LL &sum2){
if(ql<=l&&r<=qr){
sum=(sum+a[x].sum)%mod;
sum2=(sum2+a[x].or2zds)%mod;
return;
}
if(a[x].lazy!=)push_down(x,l,r);
if(ql<=mid)query(lson,l,mid,ql,qr,sum,sum2);
if(mid<qr)query(rson,mid+,r,ql,qr,sum,sum2);
}
int main(void){
while(~scanf("%lld%lld",&n,&m)){
memset(a,,sizeof(a));
LL l,r,op,k;
for(LL i=;i<m;i++){
scanf("%lld",&op);
if(op==){
scanf("%lld%lld%lld",&l,&r,&k);
add(,,n,l,r,k);
}else {
scanf("%lld%lld",&l,&r);
LL sum=,sum2=;
query(,,n,l,r,sum,sum2);
printf("%lld\n",(sum*sum%mod-sum2+mod)%mod*%mod);
}
}
}
return ;
}
Another Array of Orz Pandas的更多相关文章
- XidianOJ 1120 Gold of Orz Pandas
题目描述 Orz Panda is addicted to one RPG game. To make his character stronger, he have to fulfil tasks ...
- XidianOJ 1195 Industry of Orz Pandas
--正文 贪心 排序好慢慢找就好 #include <iostream> #include <cstring> #include <cstdio> #include ...
- Cai Xukun and Orz Pandas Gym - 102309C
题目链接:https://vjudge.net/problem/Gym-102309C 题意:给定蔡徐坤投篮的位置和篮筐的位置以及最大初速度,求一个初速度和时间. 思路:一开始我以为要用到二分,后面仔 ...
- 【Codeforces】Orz Panda Cup
大大出的题 大大经常吐槽没有人补,所以我决定做一个 A. APA of Orz Pandas 题意:给你一个包含+-*/%和()的表达式,让你把它转化成java里BigInteger的形式 大概就像这 ...
- numpy和pandas的基础索引切片
Numpy的索引切片 索引 In [72]: arr = np.array([[[1,1,1],[2,2,2]],[[3,3,3],[4,4,4]]]) In [73]: arr Out[73]: a ...
- Python:pandas(二)——pandas函数
Python:pandas(一) 这一章翻译总结自:pandas官方文档--General functions 空值:pd.NaT.np.nan //判断是否为空 if a is np.nan: .. ...
- xdoj-1117(记忆化搜索+组合数学)
因为我是从上到下,所以就不叫动态规划而叫记忆化搜索吧 (不过运行时间只有3ms....应该是很不错的吧) 排版怎么那么难看...编辑的时候不是这样子的啊?! 思想 : 大眼一看应该是一道很裸的状压dp ...
- scikit-learn_cookbook1: 高性能机器学习-NumPy
源码下载 在本章主要内容: NumPy基础知识 加载iris数据集 查看iris数据集 用pandas查看iris数据集 用NumPy和matplotlib绘图 最小机器学习配方 - SVM分类 介绍 ...
- 线性回归linear regression(python脚本实现)
python机器学习-乳腺癌细胞挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...
随机推荐
- springmvc国际化 基于请求的国际化配置
springmvc国际化 基于请求的国际化配置 基于请求的国际化配置是指,在当前请求内,国际化配置生效,否则自动以浏览器为主. 项目结构图: 说明:properties文件中为国际化资源文件.格式相关 ...
- tomcat安装和基本配置
首先,默认电脑上已经配置好java环境. 在http://tomcat.apache.org/这里下载tomcat二进制版本,下载到本地后随意解压在某个盘, 我解压在D:\apache-tomcat- ...
- C# 添加敏感词
public class CheckStreamReader { //使用的数据: private static HashSet<string> hash = new HashSet< ...
- IOS学习之路十六(UItableView 通过Prepare for segue 页面传值)
当你点击一个UITableView 的section 或者cell的时候希望把值传到另一个页面(页面是通过segue跳转的),可以通过prepareforsegure 方法传值 (我的UITableV ...
- C#实战Microsoft Messaging Queue(MSMQ)
C#实战Microsoft Messaging Queue(MSMQ)消息队列(干货) 前言 在使用MSMQ之前,我们需要自行安装消息队列组件!(具体安装方法大家自己搜一下吧) 采用MSMQ带来的好处 ...
- JS左侧菜单-02
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"> <html xmlns=" ...
- Winform 让跨线程访问变得更简单
Winform 让跨线程访问变得更简单 前言 由于多线程可能导致对控件访问的不一致,导致出现问题.C#中默认是要线程安全的,即在访问控件时需要首先判断是否跨线程,如果是跨线程的直接访问,在运行时会抛出 ...
- centos 6.4 x64安装bugfree
第一步:下载xampp-linux-1.8.1.tar.gz [root@SVNMANAGER ~]# tar -zxvf xampp-linux-1.8.1.tar.gz -C /opt [root ...
- window.onload多个共存 - 借鉴jQuery.noConflict的思路
一.背景 window.onload方法只能存在一个,如果多次赋值给window.onload,则后者会覆盖前者. 二.浅谈jQuery.noConflict的实现方式 1)源代码 // 简化抽离出 ...
- linux上安装mysql及简单的使用
1. 安装mysql sudo apt-get update sudo apt-get install mysql-server sudo apt-get install python-mysqldb ...