http://acm.uestc.edu.cn/#/problem/show/1324

思路:基础分块,这个是一个特别简单的分块,就当做是一个练习了。然后这题也是很简单的单点线段树更新。

//看看会不会爆int!数组会不会少了一维!
//取物问题一定要小心先手胜利的条件
#include <bits/stdc++.h>
using namespace std;
#pragma comment(linker,"/STACK:102400000,102400000")
#define LL long long
#define ALL(a) a.begin(), a.end()
#define pb push_back
#define mk make_pair
#define fi first
#define se second
#define haha printf("haha\n")
const int maxn = 1e5 + ;
///block表示块的大小,num表示一共分成多少个块
///belong表示这个数在哪个块里面,l和r表示左右边界
/*
查询操作的话,如果x和y是在同一个块里面,就暴力。
如果不是在一个块里面的话,先暴力[x, r[belong[x]]],然后再暴力块
然后再暴力[l[belong[y]], y]
*/
int block, num, l[maxn], r[maxn], belong[maxn], n, q;
LL Max[maxn], a[maxn]; void build(){
block = sqrt(n); num = n / block;
if (n % block) num++;
for (int i = ; i <= num; i++)
l[i] = (i - ) * block + , r[i] = i * block;
r[num] = n;
for (int i = ; i <= n; i++){
belong[i] = (i - ) / block + ;
}
} void update(int x, int y){
a[x] += y * 1LL;
Max[belong[x]] = max(Max[belong[x]], a[x]);
} int query(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(){
cin >> n >> q;
build();
for (int i = ; i <= q; i++){
int op, x, y;
scanf("%d%d%d", &op, &x, &y);
if (op == ) update(x, y);
else printf("%d\n", query(x, y));
}
return ;
}

分块基础练习 UESTC 1324的更多相关文章

  1. 卿学姐与公主 UESTC - 1324 分块模板题

    题意:http://acm.uestc.edu.cn/#/problem/show/1324 中文题,自己看喽. 题解:分块模板,update时顺便更新块属性.ask时先判掉belong[l]==be ...

  2. UESTC 1324:卿学姐与公主(分块)

    http://acm.uestc.edu.cn/#/problem/show/1324 题意:…… 思路:卿学姐的学习分块例题. 分块是在线处理区间问题的类暴力算法,复杂度O(n*sqrt(n)),把 ...

  3. UESTC 1324 卿学姐与公主 分块板子

    #include<iostream> #include<cmath> using namespace std; ; //表示当前数在哪一块里面 int belong[maxn] ...

  4. UESTC - 1324 卿学姐与公主

    题目链接 某日,百无聊赖的卿学姐打开了某11区的某魔幻游戏 在这个魔幻的游戏里,生活着一个美丽的公主,但现在公主被关押在了魔王的城堡中. 英勇的卿学姐拔出利刃冲向了拯救公主的道路. 走过了荒野,翻越了 ...

  5. HYSBZ_2002_分块

    http://www.lydsy.com/JudgeOnline/problem.php?id=2002 分块基础题,初次接触,很巧妙. OJ好像挂了,没法提交. #include<iostre ...

  6. [转载] leveldb日知录

    原文: http://www.cnblogs.com/haippy/archive/2011/12/04/2276064.html 对leveldb非常好的一篇学习总结文章 郑重声明:本篇博客是自己学 ...

  7. Leveldb 实现原理

    原文地址:http://www.cnblogs.com/haippy/archive/2011/12/04/2276064.html LevelDb日知录之一:LevelDb 101 说起LevelD ...

  8. LevelDB系列之SSTable(Sorted Strings Table)文件

    SSTable是Bigtable中至关重要的一块,对于LevelDb来说也是如此,对LevelDb的SSTable实现细节的了解也有助于了解Bigtable中一些实现细节. 本节内容主要讲述SSTab ...

  9. LevelDb原理剖析

    在说LevelDb之前,先认识两位大牛,Jeff Dean和Sanjay Ghemawat,这两位是Google公司重量级的工程师,为数甚少的Google Fellow之二. Jeff Dean其人: ...

随机推荐

  1. 福大软工1816:Beta(7/7)

    Beta 冲刺 (7/7) 队名:第三视角 组长博客链接 本次作业链接 团队部分 团队燃尽图 工作情况汇报 张扬(组长) 过去两天完成了哪些任务 文字/口头描述 组织会议 wxpy中多个功能的开发 整 ...

  2. ImportError: No module named examples.tutorials.mnist

    Traceback (most recent call last):   File "nearest_neighbor.py", line 14, in <module> ...

  3. Servlet处理表单

  4. CodeForces Round #527 (Div3) B. Teams Forming

    http://codeforces.com/contest/1092/problem/B There are nn students in a university. The number of st ...

  5. PreparedStatement的execute误解

    boolean execute()  throws SQLException在此 PreparedStatement 对象中执行 SQL 语句,该语句可以是任何种类的 SQL 语句.一些特别处理过的语 ...

  6. JMS学习一(JMS介绍)

    一.JMS是个什么鬼 1.百度百科解释:JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之 ...

  7. jenkins配置slave节点 构建项目并执行操作

    1.新建与配置结点 [系统管理]-> [管理结点]-> [新建结点] 2.配置slave 说明: Name: 定义slave的唯一名称标识,可以是任意字符串,通常设置为slave主机名.i ...

  8. Web前端面试宝典(最新)

    第一部分:HTML问答题   1.简述一下你对HTML语义化的理解? 用正确的标签做正确的事情. html语义化让页面的内容结构化,结构更清晰,便于对浏览器.搜索引擎解析;即使在没有样式CSS情况下也 ...

  9. 第160天:Http协议的详细总结

    一.HTTP协议 超文本传输协议(HyperText Transfer Protocol),缩写HTTP.通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource I ...

  10. 在mvc4中上传、导入和导出excel表方法总结

    通过excel的导入导出练习,使用NPOI组件还是方便一点,所有下面就以NPOI下的导入导出给出实例,通过网页导入excel表,首先上传,再导入数据到库,这里为了方便就不导入到库中了,直接拿到数据.导 ...