jzyzOJ 1658【bzoj1798改编】
#include<iostream>
#include<cstring>
#include<cstdio>
#include<ctime>
#include<algorithm>
#define L(x) (x<<1)
#define R(x) (x<<1|1)
#define INF 2100000000
#define maxn 100100
#define intt long long
#define mo 5201314
using namespace std;
intt ax,ay,x,y,q,c;
intt n,m;
struct qaq{
intt maxx,deladd;
intt delx;
}tree[maxn*]; intt read(){
intt f=;
intt k=;
char c=getchar();
while(c>''||c<''){
if(c=='-') f=-;
c=getchar();
}
while(c>=''&&c<=''){
k=(k<<)+(k<<)+c-'';
c=getchar();
}
return f*k;
} void push_down(intt id,intt l,intt r){
if(tree[id].delx==&&tree[id].deladd==) return;
intt tad=tree[id].deladd;
intt txx=tree[id].delx;
intt mid=(l+r)>>;
tree[L(id)].deladd=(tree[L(id)].deladd*txx+tad)%mo;
tree[R(id)].deladd=(tree[R(id)].deladd*txx+tad)%mo;
tree[L(id)].delx=(tree[L(id)].delx*txx)%mo;
tree[R(id)].delx=(tree[R(id)].delx*txx)%mo;
tree[L(id)].maxx=(tree[L(id)].maxx*txx+(mid-l+)*tad)%mo;
tree[R(id)].maxx=(tree[R(id)].maxx*txx+(r-(mid+)+)*tad)%mo;
tree[id].deladd=;
tree[id].delx=;
return;
} void build(intt l,intt r,intt id,intt v){
if(l>y||r<x) return;
tree[id].delx=;
tree[id].deladd=;
if(x<=l&&r<=y){
tree[id].maxx=v;
//cout<<v<<endl;
return;
}
intt mid=(l+r)>>;
build(l,mid,L(id),v);
build(mid+,r,R(id),v);
tree[id].maxx=(tree[L(id)].maxx+tree[R(id)].maxx)%mo;
//cout<<tree[id].maxx<<endl;
return;
} void updatax(intt l,intt r,intt id,intt v){
if(l>y||r<x) return;
if(x<=l&&r<=y){
tree[id].deladd=(tree[id].deladd*v)%mo;
tree[id].delx=(tree[id].delx*v)%mo;
tree[id].maxx=(tree[id].maxx*v)%mo;
return;
}
push_down(id,l,r);
intt mid=(l+r)>>;
updatax(l,mid,L(id),v);
updatax(mid+,r,R(id),v);
tree[id].maxx=(tree[L(id)].maxx+tree[R(id)].maxx)%mo;
return;
} void updataadd(intt l,intt r,intt id,intt v){
if(l>y||r<x) return;
if(x<=l&&r<=y){
tree[id].deladd=(tree[id].deladd+v)%mo;
tree[id].maxx=(tree[id].maxx+(r-l+)*v)%mo;
return;
}
push_down(id,l,r);
intt mid=(l+r)>>;
updataadd(l,mid,L(id),v);
updataadd(mid+,r,R(id),v);
tree[id].maxx=(tree[L(id)].maxx+tree[R(id)].maxx)%mo;
return;
} intt findit(int l,int r,int id){
if(l>y||r<x) return ;
if(x<=l&&r<=y){
//cout<<tree[id].
return tree[id].maxx%mo;
}
push_down(id,l,r);
intt mid=(l+r)>>;
intt t1=findit(l,mid,L(id));
intt t2=findit(mid+,r,R(id));
return (t1+t2)%mo;
} int main(){
//freopen("a.txt","r",stdin);
//freopen("b.txt","w",stdout);
memset(tree,,sizeof(tree));
n=read();
m=read();
//cout<<n<<' '<<m<<endl;
for(int i=;i<=n;++i){
c=read();
x=y=i;
build(,n,,c);
}
for(int i=;i<=m;++i){
q=read();
ax=read();
ay=read();
if(q==){
x=ax;
y=ay;
c=read();
updatax(,n,,c);
}
else if(q==){
x=ax;
y=ay;
c=read();
updataadd(,n,,c);
}
else{
x=ax;
y=ay;
cout<<findit(,n,)%mo<<endl;
}
}
//cout<<"Runtime:"<<double(1.0*clock()/1000.0)<<"S!"<<endl;
return ;
}
先放代码.....
这道题的难点在于1号操作,也就是乘法。裸的线段树,但是是双偏移量,还要控制好次序,代码慢慢看就行了。。
jzyzOJ 1658【bzoj1798改编】的更多相关文章
- 【转】监听按钮除OnClick外其他事件的方法,附简易改编的UIButton类
http://lib.csdn.net/article/unity3d/38463 作者:IceFantasyLcj 大家好,我是雨中祈雨.一直以来,CSDN都是我最好的编程助手.这是我在CSDN的第 ...
- 【转】 NGUI 监听按钮除OnClick外其他事件的方法,附简易改编的UIButton类
http://blog.csdn.net/icefantasylcj/article/details/49450555 大家好,我是雨中祈雨.一直以来,CSDN都是我最好的编程助手.这是我在CSDN的 ...
- UVa(1658),Admiral,海军上将,拆点,MCMF
题目链接:https://uva.onlinejudge.org/external/16/1658.pdf 题意:求1到N的两条路(不能相交),距离和最小. 分析: 第一次做拆点,有点意思.刚开始一直 ...
- OpenJudge/Poj 1658 Eva's Problem
1.链接地址: http://bailian.openjudge.cn/practice/1658 http://poj.org/problem?id=1658 2.题目: 总时间限制: 1000ms ...
- NOIP2014无线网络发射器选址改编1
问题描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129条东西向街道和129条南北向街道所形成的网格状,并且相邻的平 ...
- APK改之理 手游修改改编安卓程序工具安装使用教程
APK改之理 手游修改改编安卓程序工具安装使用教程 --APK破解付费程序 apk改之理是pc平台上一款非常好用的apk反编译工具,他将反编译以及签名等功能集中在一起,并且拥有非常人性化的操作界面,如 ...
- C语言 · 8皇后问题改编
8皇后问题(改编) 问题描述 规则同8皇后问题,但是棋盘上每格都有一个数字,要求八皇后所在格子数字之和最大. 输入格式 一个8*8的棋盘. 输出格式 所能得到的最大数字和 样例输入 1 2 3 4 5 ...
- 遇到 ORACLE 错误 1658
在对oracle导入数据时,多次报以下错误: IMP-00003: 遇到 ORACLE 错误 1659ORA-01659: 无法分配超出 1 的 MINEXTENTS (在表空间 ZSTA_DATA_ ...
- uva 1658 Admiral (最小费最大流)
uva 1658 Admiral 题目大意:在图中找出两条没有交集的线路,要求这两条线路的费用最小. 解题思路:还是拆点建图的问题. 首先每一个点都要拆成两个点.比如a点拆成a->a'.起点和终 ...
随机推荐
- linux下编译openjdk8
一.准备工作 1.0 工作环境 Ubuntu 12.04,32位机 1.1.安装JD ...
- 【ELK】ELK安装与配置
一.ELK体系结构 二.系统环境变量 [主机信息] IP 主机名 操作系统版本 10.10.10.102 console CentOS7.5 10.10.10.103 log1 CentOS7.510 ...
- mybatis是如何防止sql注入?
sql注入发生的时间,sql注入发生的阶段在sql预编译阶段,当编译完成的sql不会产生sql注入 采用jdbc操作数据时候 String sql = "update ft_proposal ...
- 使用vue+webpack的多页面架构(转+自己的情况)
按以下步骤可正常配置多页面架构 记得安装 node-glob 安装命令:npm install node-glob --save-dev 文件附加 webpack.base.conf.js --参 ...
- Django 三—— Form组件
内容概要: 1.Django Form如何自定义验证字段 2.Django Form如何动态的显示数据库中新插入的数据 3.Tyrion Django的Form(用于验证用户请求合法性的一个组件) D ...
- App 设计技巧
http://www.360doc.com/content/14/1120/18/21412_426730809.shtml http://veryui.diandian.com/post/2013- ...
- Sql获取数据表字段说明
SELECT Sysobjects.name AS TABLE_NAME , syscolumns.Id , syscolumns.name AS COLUMN_NAME , systypes.nam ...
- 使用 Pinup,PinupManager 在 XNA 中创建贴图(十七)
平方已经开发了一些 Windows Phone 上的一些游戏,算不上什么技术大牛.在这里分享一下经验,仅为了和各位朋友交流经验.平方会逐步将自己编写的类上传到托管项目中,没有什么好名字,就叫 WPXN ...
- Spring框架配置beans.xml扩展
Spring学习笔记(二) 续Spring 学习笔记(一)之后,对Spring框架XML的操作进行整理 1 什么是IOC(DI) IOC = inversion of control 控制反转 D ...
- nginx访问控制allow、deny(ngx_http_access_module)
单看nginx模块名ngx_http_access_module,很多人一定很陌生,但是deny和allow相比没一个人不知道的,实际上deny和allow指令属于ngx_http_access_mo ...