世风日下的哗啦啦族I (简单分块模板)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define inf 0x7fffffff
#define faster ios::sync_with_stdio(0);cin.tie(0) inline ll read()
{
int x=,f=;char ch=getchar();
while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>=''&&ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
} /********************************************************************/ const int maxn = +;
int n, m;
ll a[maxn], b[maxn];
int num, block;
ll minn[maxn], belong[maxn];
ll sum[maxn]; void makeblock(){
block = sqrt(n);
if(n%block) num = n/block+;
else num = n/block;
for(int i = ;i <= n;i++){
belong[i] = (i-)/block + ;
b[i] = a[i];
}
for(int i = ;i <= num;i++){
ll l = (i-)*block+, r = min(i*block, n);
for(int j = l;j <= r;j++){
b[j] = a[j];
}
sort(b+l, b+r+);
minn[i] = b[l];
sum[i] = ;
for(int j = l;j <= r;j++){
if(b[j] == minn[i])
sum[i]++;
else break;
}
}
return;
} //单点更新
void update(int x, int v){
a[x] = v;
int pos = belong[x];
ll l = (pos - )*block + ;
ll r = (pos*block, n);
for(ll i = l;i <= r;i++)
b[i] = a[i];
sort(b+l, b+r+);
minn[pos] = b[l];
sum[pos] = ;
for(int i = l;i <= r;i++){
if(b[i] == minn[pos])
sum[pos]++;
else break;
}
return;
} //区间查询
int ask(int l, int r){
ll ans = inf;
if(belong[l] == belong[r]){
for(int i = l;i <= r;i++){
ans = min(ans, a[i]);
}
}
else {
for(int i = l;i <= belong[l]*block;i++){
ans = min(ans, a[i]);
}
for(int i = belong[r-]*block+;i <= r;i++){
ans = min(ans, a[i]);
}
}
for(int i = belong[l]+;i < belong[r];i++){
ans = min(ans, minn[i]);
}
return ans;
} int ask1(int l, int r, int len){
ll ans = ;
if(belong[l] == belong[r]){
for(int i = l;i <= r;i++){
if(a[i] == len)
ans++;
}
}
else {
for(int i = l;i <= belong[l]*block;i++){
if(a[i] == len)
ans++;
}
for(int i = belong[r-]*block+;i <= r;i++){
if(a[i] == len)
ans++;
}
}
for(int i = belong[l]+;i < belong[r];i++){
if(minn[i] == len){
ans += sum[i];
}
}
return ans;
} int Find(int pos, int len){
if(minn[pos] < len)
return ;
ll l = (pos - )*block+;
ll r = min(pos*block, n);
int ans = ;
for(int i = l;i <= r;i++){
if(b[i] <= len)
ans++;
else break;
}
return ans;
} int deal(int l, int r, int len){
int ans = ;
if(belong[l] == belong[r]){
for(int i = l;i <= r;i++){
if(a[i] <= len) ans++;
}
}
else{
for(int i = l;i <= belong[l]*block;i++){
if(a[i] <= len) ans++;
}
for(int i = belong[r-]*block+;i <= r;i++){
if(a[i] <= len) ans++;
}
}
for(int i = belong[l]+;i < belong[r];i++){
ans += Find(i, len);
}
return ans;
} int main(){
n = read(); m = read();
for(int i = ;i <= n;i++){
a[i] = read();
}
makeblock();
while(m--){
int op, x, y, v;
op = read();
if(op == ){
x = read(); v = read();
update(x, v);
}
else if(op == ){
x = read(); y = read();
int tmp = ask(x, y);
int tmp1 = ask1(x, y, tmp);
printf("%d %d\n", tmp, tmp1);
}
else if(op == ){
x = read(); y = read(); v = read();
int tmp = deal(x, y, v);
printf("%d\n", tmp);
}
}
return ;
}
世风日下的哗啦啦族I (简单分块模板)的更多相关文章
- ACdream 1738 世风日下的哗啦啦族I(分块大法+二分)
世风日下的哗啦啦族I Time Limit: 4000/2000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) Submit S ...
- acdream 1738 世风日下的哗啦啦族I 分块
世风日下的哗啦啦族I Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acdream.info/problem?pid=1738 Descri ...
- Acdream 1738 世风日下的哗啦啦族I 树套树
世风日下的哗啦啦族I Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acdream.info/problem?pid=1738 Descri ...
- acdream 1738 世风日下的哗啦啦族I
原题链接:http://acdream.info/problem?pid=1738 树套树裸题,如下: #include<algorithm> #include<iostream&g ...
- 一个简单的模板引(han)擎(shu)
自制一个简单的模板引(han)擎(shu) 原理 说大了 实际上是模板函数 原理呢就是简单的字符串替换 第一版 var data = { username: 'Muhha' } str = '< ...
- 卿学姐与公主 UESTC - 1324 分块模板题
题意:http://acm.uestc.edu.cn/#/problem/show/1324 中文题,自己看喽. 题解:分块模板,update时顺便更新块属性.ask时先判掉belong[l]==be ...
- BZOJ 2724 蒲公英 | 分块模板题
题意 给出一个序列,在线询问区间众数.如果众数有多个,输出最小的那个. 题解 这是一道分块模板题. 一个询问的区间的众数,可能是中间"整块"区间的众数,也可能是左右两侧零散的数中的 ...
- Luogu 2801 教主的魔法 | 分块模板题
Luogu 2801 教主的魔法 | 分块模板题 我犯的错误: 有一处l打成了1,还看不出来-- 缩小块大小De完bug后忘了把块大小改回去就提交--还以为自己一定能A了-- #include < ...
- php实现简单视图模板(视图引擎)
视图 视图,你所看见的部分. <?php echo 'hello, world'; 从简单开始理解 这就是个视图文件中的代码,没错就这么简单.视图,实际上是在 MVC 这种架构上提出的.MVC ...
随机推荐
- eclipse集成SVN插件-----复制添加插件
首先从网上下载一个svn的插件包, 将插件包解压, 打开eclipse的文件夹, 将svn插件中features文件夹中的jar复制到eclipse中features文件夹中去: 将svn插件中plu ...
- [数据挖掘课程笔记]SLIQ算法
1.数据结构 主要的数据结构有:1.Attribute List 2.Class List 对于数据集,每一个属性都有一个对应的Attribute List.如上图所示,每个Attribute Li ...
- sample code java pom.xml
pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...
- emWin 移植 - 基于红牛开发板
一直想利用所学的东西自己设计一个精致一些的作品,手头正好有一块红牛开发板,就先用它来写一些软件,熟悉一下过程和一些想法的可行性.首先当然是选择一个操作系统了,对比了几种之后选择了emWin.那就移植一 ...
- div和span、relative和absolute、display和visibility的区别
一.div和span的区别 div是一个块级元素,可以包含段落,表格等内容,用于放置不同的内容.一般我们在网页通过div来布局定位网页中的每个区块. span是一个内联元素,没有实际意义,它的存在纯粹 ...
- jquery特效(5)—轮播图③(鼠标悬浮停止轮播)
今天很无聊,就接着写轮播图了,需要说明一下,这次的轮播图是在上次随笔中jquery特效(3)—轮播图①(手动点击轮播)和jquery特效(4)—轮播图②(定时自动轮播)的基础上写出来的,也就是本次随笔 ...
- 关于Ajax实现的简单示例
一.代码示例 关于Ajax的基本概念(包括XMLHttpRequest对象及其相关方法属性)移步这里(w3school中文版)学习了解. <!doctype html> <html ...
- RTree算法Java实现 JSI RTree Library的调用实例 标签:jsi-rtree-library
1. [代码]jsi-rtree-library /** * */package com.mycompany.project; //package net.sourceforge.jsi.examp ...
- html5--5-16 综合实例绘制饼图
html5--5-16 综合实例绘制饼图 实例 <!doctype html> <html> <head> <meta charset="utf-8 ...
- H3C-交换机端口绑定
1.端口和MAC地址绑定: (1)使用am命令: [switch]am user-bind mac-address 00e0-fc23-f8d3 interface Ehternet 0/1 (2)使 ...