bzoj2821
其实和bzoj2724是一样的
都是先处理多个块的答案,然后多余部分暴力
空间要注意一下,还是O(nsqrt(n));
var f:array[..,..] of longint;
g:array[..,..] of longint;
a,s,be:array[..] of longint;
t,n,p,m,i,x,y,ans,size:longint; procedure swap(var a,b:longint);
var c:longint;
begin
c:=a;
a:=b;
b:=c;
end; function min(a,b:longint):longint;
begin
if a>b then exit(b) else exit(a);
end; procedure pre;
var i,j,k:longint;
begin
for i:= to t do
begin
k:=min(n,i*size);
g[i]:=g[i-];
for j:=(i-)*size+ to k do
inc(g[i,a[j]]);
end;
for i:= to t do
begin
fillchar(s,sizeof(s),);
for j:=(i-)*size+ to n do
begin
inc(s[a[j]]);
if j=(be[j]-)*size+ then
f[i,be[j]]:=f[i,be[j]-];
if s[a[j]]>= then
if s[a[j]] mod = then dec(f[i,be[j]]) else inc(f[i,be[j]]);
end;
end;
end; procedure clear(x,y:longint);
var i:longint;
begin
for i:=x to y do
s[a[i]]:=;
end; function ask(x,y:longint):longint;
var i:longint;
begin
ask:=;
if be[x]=be[y] then
begin
for i:=x to y do
begin
inc(s[a[i]]);
if s[a[i]]>= then
if s[a[i]] mod = then dec(ask) else inc(ask);
end;
clear(x,y);
end
else begin
ask:=f[be[x]+,be[y]-];
for i:=x to be[x]*size do
begin
if s[a[i]]= then s[a[i]]:=g[be[y]-,a[i]]-g[be[x],a[i]];
inc(s[a[i]]);
if s[a[i]]>= then
if s[a[i]] mod = then dec(ask) else inc(ask);
end;
for i:=(be[y]-)*size+ to y do
begin
if s[a[i]]= then s[a[i]]:=g[be[y]-,a[i]]-g[be[x],a[i]];
inc(s[a[i]]);
if s[a[i]]>= then
if s[a[i]] mod = then dec(ask) else inc(ask);
end;
clear(x,be[x]*size);
clear((be[y]-)*size+,y);
end;
end; begin
readln(n,p,m);
size:=trunc(sqrt(n));
for i:= to n do
begin
read(a[i]);
be[i]:=(i-) div size+;
end;
t:=n div size;
if n mod size<> then inc(t);
pre;
fillchar(s,sizeof(s),);
for i:= to m do
begin
readln(x,y);
x:=(x+ans) mod n+;
y:=(y+ans) mod n+;
if x>y then swap(x,y);
ans:=ask(x,y);
writeln(ans);
end;
end.
bzoj2821的更多相关文章
- bzoj2821作诗
http://www.lydsy.com/JudgeOnline/problem.php?id=2821 分块 我们把数列分成$\sqrt{N}$块 记$f[i][j]$表示第i块到第j块的答案,这个 ...
- BZOJ2821 作诗(Poetize) 主席树 bitset
原文链接https://www.lydsy.com/JudgeOnline/problem.php?id=2821 题目传送门 - BZOJ2821 题意 $n$ 个数,$m$ 组询问,每次问 $[l ...
- BZOJ2821 作诗(分块)
和区间众数几乎一模一样的套路. // luogu-judger-enable-o2 #include<iostream> #include<cstdio> #include&l ...
- BZOJ2821 作诗(Poetize) 【分块】
BZOJ2821 作诗(Poetize) Description 神犇SJY虐完HEOI之后给傻×LYD出了一题: SHY是T国的公主,平时的一大爱好是作诗. 由于时间紧迫,SHY作完诗之后还要虐OI ...
- bzoj2821: 作诗(Poetize)
分块 分sqrt(n)块 F[i][j]表示块i到块j的答案 s[i][j]表示数字i在前j块内出现了几次 #include <iostream> #include <cstdio& ...
- 【BZOJ2821】作诗(Poetize) 分块
Description 神犇SJY虐完HEOI之后给傻×LYD出了一题:SHY是T国的公主,平时的一大爱好是作诗.由于时间紧迫,SHY作完诗之后还要虐OI,于是SHY找来一篇长度为N的文章,阅读M次, ...
- 【分块】BZOJ2821 作诗(Poetize)
2821: 作诗(Poetize) Time Limit: 50 Sec Memory Limit: 128 MBSubmit: 3265 Solved: 951[Submit][Status][ ...
- BZOJ2821 作诗(Poetize) 分块
题意 算法 经验总结 代码 题意 不带修改,查询数列[1,n]中[l,r]内的出现正偶数次的数的个数, 数列中的数 <= 1e5, n <= 1e5, 强制在线 算法 查询的内容: 区 ...
- 2018.09.30 bzoj2821: 作诗(Poetize)(分块)
传送门 分块经典题目. 先将数列分块. 然后预处理出每两个块之间有多少个数出现了正偶数次. 这样查询的时候对于中间的完整块直接用预处理出的数组搞定. 剩下的暴力枚举求解. 代码: #include&l ...
随机推荐
- RedHat7安装Nginx及第三方模块
编译安装Nginx 先安装编译过程中所需依赖包# yum -y install gcc pcre-devel openssl-devel zlib-devel jemalloc(更好的内存管理)# w ...
- 在DropDownList里显示多级分类
protected void ddlBind() { DataTable dt = new DataTable(); ddlCategoryId.DataSource = getList(" ...
- Dom4j解析Xml文件,Dom4j创建Xml文件
Dom4j解析Xml文件,Dom4j创建Xml文件 >>>>>>>>>>>>>>>>>>&g ...
- jquery.validate.js校验select2解决方案,Jquery插件select2校验解决方案
jquery.validate.js校验select2解决方案 Jquery插件select2校验解决方案 >>>>>>>>>>>&g ...
- 移动web前端小结(一)
这段时间做了几个移动项目的前端页面,姑且称之webapp.做这几个项目之前根本没接触过移动端的相关知识,以为和PC端页面没啥区别无非就是尺寸小一点罢了.上手以后发现问题颇多.下面从框架.相关知识点.遇 ...
- javascript异步加载详解(转)
本文总结一下浏览器在 javascript 的加载方式. 关键词:异步加载(async loading),延迟加载(lazy loading),延迟执行(lazy execution),async 属 ...
- 基于matlab的GUI界面开发软件
matlab工具deploytool编译M为可执行程序 http://blog.sina.com.cn/s/blog_60f8483a0100gnsm.html
- MySQL 时间戳(Timestamp)函数
1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp() mysql> select current_timestamp, curren ...
- 设计模式之 Observer Pattern 观察者模式
1.Subject通过一个容器保存零到多个Observer. 2.Subject通过Add,Delete方法调整Observer. 3.Subject的notifyObservers方法实际是逐个调用 ...
- MySQL设置
在MySQL的使用中很容易出现乱码的情况. 实际上在MySQL中有个地方表明了系统中所用到的所有的字符集. 例如: 从中可以看出,对于server和database的默认字符集都是latin1,这样很 ...