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'.起点和终 ...
随机推荐
- {{}},ng-bind和ng-model的区别
ng-bind 与ng-model区别 <input ng-model="object.xxx"> <span ng-bind="object.xxx& ...
- python的重重之器(生成器、迭代器、装饰器)
一.装饰器 1.定义:本质是函数,装饰其他函数就是为其他函数添加附件功能. 2.原则: a.不能修改被装饰的函数的源代码: b.不能修改被装饰的函数的调用方式: 实例: #!/usr/bin/env ...
- python 字符编码与转码
一. 字符编码 ASCII: 一个字节,最多能表示255个字符 GB2312(1980年):一共收录了7445个字符,包括6763个汉字和682个其它符号. GBK1.0(1995年):收录了2188 ...
- HEAD DETACHED push origin失败问题
先说HEAD HEAD是一个头指针,通常情况下指向不同的分支,每个分支对应一个commit(准确的说,每个分支对应多个commit,但是只有一个顶层的commit,而commit之间是简单的线性关系. ...
- 快乐的Linux命令行
ls - 列出目录内容 -a 列出所有文件 -d 指定目录信息 -F 为目录增加/标识 -h 增强可读性 -l 列模式显示 -r 反序显示 -S 按照大小排序 -t 按照修改时间排序 file - 确 ...
- event对象的兼容性
最近在调试项目的时候,发现IE和Chrome都显示正常,就是FireFox异常,F12查看控制台,发现报错:window.event is undefined.检查代码中定义的事件方法中获取事件对象直 ...
- webstorm卡顿
http://blog.csdn.net/qq673318522/article/details/50583831 http://www.xiaobai8.com/Blog/1000.html
- vue单文件组件互相通讯
在vue中,我们可以把一个页面各个部分单独封装起来,做成各种小组件,然后加载,这样的好处是代码维护起来比较容易,重复的代码多处调用! 在一个vue项目中,单文件组件以.vue形式文件命名 每个组件之间 ...
- MySQL服务器端&客户端常见错误
目录(?)[+] 客户端 服务器端 客户端 1.ERROR 2013 (HY000) at line 1: Lost connection to MySQL server during query 使 ...
- Memcache缓存用好了,性能有了很大的提高
web服务器1 web服务器2 web服务器3如果每台web服务器都向mysql服务器表插入信息并且要做出相应最新编号反馈出现这样的高并发时候怎么减少服务器压力,同时用户体验还要好 可以使用Memca ...