cdoj1324暴力分块
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int maxn=1e5+;
int belong[maxn],l[maxn],r[maxn],block,num,n,q;
ll a[maxn],Max[maxn];
void build(){
block=sqrt(n);
num=n/block;if(n%block!=) num++;
for(int i=;i<=num;++i){//num 不要写成n
l[i]=(i-)*block+;r[i]=i*block;
}
r[num]=n;//收敛
for(int i=;i<=n;++i){
belong[i]=(i-)/block+;
}
for(int i=;i<=n;++i){
Max[belong[i]]=max(Max[belong[i]],a[i]);
}
}
void update(int x,int y){//单点更新
a[x]+=y;
Max[belong[x]]=max(Max[belong[x]],a[x]);
}
ll ask(int x,int y){
//变量与数组重名
ll ans=-;
if(belong[x]==belong[y]){
for(int i=x;i<=y;++i){
ans=max(ans,a[i]);
}
return ans;
}
for(int i=x;i<=r[belong[x]];++i){
ans=max(ans,a[i]);
}
for(int i=belong[x]+;i<belong[y];++i){
ans=max(ans,Max[i]);
}
for(int i=l[belong[y]];i<=y;++i){
ans=max(ans,a[i]);
}
return ans;
}
int main(){
scanf("%d%d",&n,&q);
build();
int i,t,x,y;
for(i=;i<q;++i){
scanf("%d%d%d",&t,&x,&y);
if(t==){
update(x,y);
}
else{
printf("%lld\n",ask(x,y));
}
}
return ;
}
cdoj1324暴力分块的更多相关文章
- 【CF896E】Welcome home, Chtholly 暴力+分块+链表
[CF896E]Welcome home, Chtholly 题意:一个长度为n的序列ai,让你支持两种操作: 1.l r x:将[l,r]中ai>x的ai都减去x.2.l r x:询问[l,r ...
- CDOJ 1292 卿学姐种花 暴力 分块 线段树
卿学姐种花 题目连接: http://acm.uestc.edu.cn/#/problem/show/1292 Description 众所周知,在喵哈哈村,有一个温柔善良的卿学姐. 卿学姐喜欢和她一 ...
- codevs5037 线段树练习4加强版(暴力分块)
求大爷教线段树怎么写啊QAQ 只会写分块...一开始脑抽写成了O(NKlogN)还被CZL大爷嘲讽了一发T T f[i][j]表示在第i块中,模k为j的数有几个,然后每次修改的时候只需要打个标记,查询 ...
- [BZOJ4028][HAOI2015]公约数数列[分块+分析暴力]
题意 题目链接 分析 首先明确 \(xor\) 运算和 \(\rm gcd\) 没有联系! 注意到一个数字取 \(\rm gcd\) 且保证每次取 \(\rm gcd\) 值都会变小的话,最多取 \( ...
- BZOJ 3343: 教主的魔法 [分块]【学习笔记】
3343: 教主的魔法 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 1172 Solved: 526[Submit][Status][Discus ...
- bzoj 4765 普通计算姬(树状数组 + 分块)
http://www.lydsy.com/JudgeOnline/problem.php?id=4765 很nice的一道题啊(可能是因为卡了n久终于做出来了 题意就是给你一棵带点权的有根树,sum( ...
- LOJ 6281 数列分块入门 5
简化版题意 给出一个长为n的数列,以及n个操作,操作涉及区间开方(每个数都向下取整),区间求和,保证所有数都为有符号32位正整数. N<=50000 Solution 首先我们先思考: 一个有符 ...
- BZOJ2821 作诗(Poetize) 分块
题意 算法 经验总结 代码 题意 不带修改,查询数列[1,n]中[l,r]内的出现正偶数次的数的个数, 数列中的数 <= 1e5, n <= 1e5, 强制在线 算法 查询的内容: 区 ...
- 【bzoj5089】最大连续子段和 分块+单调栈维护凸包
题目描述 给出一个长度为 n 的序列,要求支持如下两种操作: A l r x :将 [l,r] 区间内的所有数加上 x : Q l r : 询问 [l,r] 区间的最大连续子段和. 其中,一 ...
随机推荐
- irc操作小记
IRC客户端 HexChat 跨平台支持,目前正在Windows上使用,暂无不满意的地方 polari 支持的命令太少了,功能有限. Empathy 重量级,支持各种消息协议 weechat/irss ...
- vb.net多线程
Public Class Form1 Dim myThread As Threading.Thread Dim myThread2 As Threading.Thread Private Sub Bu ...
- 14. javacript高级程序设计-表单
1. 表单脚本 1.1 基础知识 <from>元素表示表单: l acceptCharset:服务器能处理的字符集 l action:接受请求的URL l elements:表单中所有控件 ...
- C#在类中用调用Form的方法
class 你的类 { private Form1 frm; //构造函数 public 你的类( Form1 form) { frm = form; } //调用form方法 private voi ...
- 【leetcode】Minimum Path Sum(easy)
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which ...
- 【leetcode】Binary Tree Maximum Path Sum (medium)
Given a binary tree, find the maximum path sum. The path may start and end at any node in the tree. ...
- 【mongo】pymongo通过_id删除数据
来源:http://www.educity.cn/wenda/361741.html pymongo 根据 objectId _id 来删除数据想要删除数据,根据_id ,是最靠谱的,具体方法因为 _ ...
- codeforces gym 100286 I iSharp (字符串模拟)
题目链接 给定一个字符串.输入是int& a*[]&, b, c*; 输出是 int&&[]* a;int& b;int&* c; 输入格式里逗号后面一 ...
- Linux进程的前后台切换
一.Linux前后台切换的相关命令: 1.& 在命令的后面加上这个符合,让命令进程在后台运行 例如: #ping 127.0.0.1 & // 此时命令ping ...
- 无根树转有根树(dfs,tree)
#include <bits/stdc++.h> #include <iostream> #include <queue> #include <stdio.h ...