BZOJ3236: [Ahoi2013]作业 树状数组维护 莫队
水果~~~~
关于四个while可行性的证明:区间有正确性所以不管那团小东西用没有duang~反它最终总会由于两次覆盖二准确
关于区间种数可行性的证明:他会在0 1间(或两边)来回跳动(过程中),最终会停在一个大于等于0的地方由于多次覆盖,最终也会趋于准确
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cmath>
#include<algorithm>
#define M 1000005
#define N 100005
using namespace std;
int zero[N],a[N],b[N],pos[N],len,l,r,had[N],n,m;
struct Q
{
int l,r,ans1,ans2,z,y,id;
}q[M];
int comp(const Q x,const Q y)
{
return pos[x.l]<pos[y.l]||(pos[x.l]==pos[y.l]&&x.r<y.r);
}
int end_comp(const Q x,const Q y)
{
return x.id<y.id;
}
inline void update_a(int x,int i)
{
while(x<=n)
{
a[x]+=i;
x+=x&(-x);
}
}
inline void update_b(int x,int i)
{
while(x<=n)
{
b[x]+=i;
x+=x&(-x);
}
}
inline int sum_a(int x)
{
int ret=;
while(x>)
{
ret+=a[x];
x-=x&(-x);
}
return ret;
}
inline int sum_b(int x)
{
int ret=;
while(x>)
{
ret+=b[x];
x-=x&(-x);
}
return ret;
}
void pre()
{
scanf("%d%d",&n,&m);
len=(int)(sqrt(n+0.5));
for(int i=;i<=n;i++)
{
scanf("%d",&zero[i]);
pos[i]=(i-)/len+;
}
l=r=;
update_a(zero[],);
update_b(zero[],);
had[zero[]]=;
for(int i=;i<=m;i++)
{
scanf("%d%d%d%d",&q[i].l,&q[i].r,&q[i].z,&q[i].y);
q[i].id=i;
}
sort(q+,q+m+,comp);
}
inline void via(int pl,int i)
{
if(i==)
{
update_a(zero[pl],);
had[zero[pl]]++;
if(had[zero[pl]]==)
update_b(zero[pl],);
}
else
{
update_a(zero[pl],-);
had[zero[pl]]--;
if(had[zero[pl]]==)
update_b(zero[pl],-);
}
}
void work()
{
for(int i=;i<=m;i++)
{
while(l<q[i].l)via(l++,-);
while(l>q[i].l)via(--l,);
while(r<q[i].r)via(++r,);
while(r>q[i].r)via(r--,-);
q[i].ans1=sum_a(q[i].y)-sum_a(q[i].z-);
q[i].ans2=sum_b(q[i].y)-sum_b(q[i].z-);
}
}
void print()
{
sort(q+,q+m+,end_comp);
for(int i=;i<=m;i++)
printf("%d %d\n",q[i].ans1,q[i].ans2);
}
int main()
{
//freopen("ahoi2013_homework.in","r",stdin);
//freopen("ahoi2013_homework.out","w",stdout);
pre();
work();
print();
return ;
}
BZOJ3236: [Ahoi2013]作业 树状数组维护 莫队的更多相关文章
- BZOJ1878 [SDOI2009]HH的项链 树状数组 或 莫队
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1878 题意概括 给出一个长度为n的序列,用m次询问,问区间Li~Ri中有多少种不同的数. 0< ...
- luogu P1972 [SDOI2009]HH的项链 |树状数组 或 莫队
题目描述 HH 有一串由各种漂亮的贝壳组成的项链.HH 相信不同的贝壳会带来好运,所以每次散步完后,他都会随意取出一段贝壳,思考它们所表达的含义.HH 不断地收集新的贝壳,因此,他的项链变得越来越长. ...
- [poj3378] Crazy Thairs (DP + 树状数组维护 + 高精度)
树状数组维护DP + 高精度 Description These days, Sempr is crazed on one problem named Crazy Thair. Given N (1 ...
- HDU 5869 Different GCD Subarray Query (GCD种类预处理+树状数组维护)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5869 问你l~r之间的连续序列的gcd种类. 首先固定右端点,预处理gcd不同尽量靠右的位置(此时gc ...
- POJ 3321 Apple Tree(后根遍历将树转化成序列,用树状数组维护)
题意:一棵树,有很多分叉,每个分叉上最多有1个苹果. 给出n,接下来n-1行,每行u,v,表示分叉u,v之间有树枝相连.这里数据中u相当于树中的父节点,v相当于子节点. 给出两个操作: 1.C x ...
- 第十二届湖南省赛G - Parenthesis (树状数组维护)
Bobo has a balanced parenthesis sequence P=p 1 p 2…p n of length n and q questions. The i-th questio ...
- LOJ107. 维护全序集【树状数组维护全序集】
题目描述 这是一道模板题,其数据比「普通平衡树」更强. 如未特别说明,以下所有数据均为整数. 维护一个多重集 S ,初始为空,有以下几种操作: 把 x 加入 S 删除 S 中的一个 x,保证删除的 x ...
- 【BZOJ2124】等差子序列 树状数组维护hash值
[BZOJ2124]等差子序列 Description 给一个1到N的排列{Ai},询问是否存在1<=p1<p2<p3<p4<p5<…<pLen<=N ...
- ACM-ICPC 2018 徐州赛区网络预赛 G. Trace【树状数组维护区间最大值】
任意门:https://nanti.jisuanke.com/t/31459 There's a beach in the first quadrant. And from time to time, ...
随机推荐
- hadoop生态搭建(3节点)-02.ssh配置
# ssh免密码登录 # ==================================================================node1# 一路狂按回车,最终生成(id ...
- python学习之常用模块
- idea启动spring boot无法加载或找不到主类
问题产生原因:moudle名称修改,导致项目启动不了 在Terminal界面中执行以下三个命令,我在执行第一个命令的时候报了一个找不到dependency的错误,把那个报错的dependency删了就 ...
- itchat和matplotlib的结合使用爬取微信信息
前几天无意中看到了一片文章,<一件有趣的事:我用 Python 爬了爬自己的微信朋友>,这篇文章写的是使用python中的itchat爬取微信中朋友的信息,其中信息包括,昵称.性别.地理位 ...
- JAVA多进程入门
概念 并行和并发 并行:物理上的实现,在同一时间点上发生 并发:两个事件在一个时间段内发生,如单片机的单核多线程 进程和线程 进程:一个应用程序可以有多个进程,每一个进程有一个独立的内存空间 线程:一 ...
- 【娱乐向】制作Chrome天气预报扩展程序
1.什么是Chrome扩展程序 Chrome扩展程序是一个用Web技术开发,用来扩展增强浏览器功能的软件.和一般的网页一样,Chrome扩展程序由html.js.css和图片等部分组成.Chrome插 ...
- 6 wireshark 安装使用 数据包抓取
1.wireshark安装 2.开始使用 3.界面详情 4. 数据包抓取 5.过滤数据
- LARK BOARD开发板入门学习-第2篇
1. 本次主要研究下HDMI接口,使用芯片是CH7033,这个芯片可以接VGA和HDMI两种接口,和FPGA的接口是地址数据总线 2. 值得注意的地方,下图的D1,双二极管BAT54S在电路中一般用于 ...
- UIButton内部子控件自定义布局-“UIEdgeInsets”
UIButton UIButton做frame动画时,不响应点击 在一个View内部加入几个按钮,然后改变这个view的frame来做动画,但是按钮不响应点击事件. 问题代码 __block CGRe ...
- MySQL高可用之PXC安装部署
Preface Today,I'm gonna implement a PXC,Let's see the procedure. Framework Hostname IP P ...