其实和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的更多相关文章

  1. bzoj2821作诗

    http://www.lydsy.com/JudgeOnline/problem.php?id=2821 分块 我们把数列分成$\sqrt{N}$块 记$f[i][j]$表示第i块到第j块的答案,这个 ...

  2. BZOJ2821 作诗(Poetize) 主席树 bitset

    原文链接https://www.lydsy.com/JudgeOnline/problem.php?id=2821 题目传送门 - BZOJ2821 题意 $n$ 个数,$m$ 组询问,每次问 $[l ...

  3. BZOJ2821 作诗(分块)

    和区间众数几乎一模一样的套路. // luogu-judger-enable-o2 #include<iostream> #include<cstdio> #include&l ...

  4. BZOJ2821 作诗(Poetize) 【分块】

    BZOJ2821 作诗(Poetize) Description 神犇SJY虐完HEOI之后给傻×LYD出了一题: SHY是T国的公主,平时的一大爱好是作诗. 由于时间紧迫,SHY作完诗之后还要虐OI ...

  5. bzoj2821: 作诗(Poetize)

    分块 分sqrt(n)块 F[i][j]表示块i到块j的答案 s[i][j]表示数字i在前j块内出现了几次 #include <iostream> #include <cstdio& ...

  6. 【BZOJ2821】作诗(Poetize) 分块

    Description 神犇SJY虐完HEOI之后给傻×LYD出了一题:SHY是T国的公主,平时的一大爱好是作诗.由于时间紧迫,SHY作完诗之后还要虐OI,于是SHY找来一篇长度为N的文章,阅读M次, ...

  7. 【分块】BZOJ2821 作诗(Poetize)

    2821: 作诗(Poetize) Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 3265  Solved: 951[Submit][Status][ ...

  8. BZOJ2821 作诗(Poetize) 分块

    题意 算法 经验总结 代码 题意 不带修改,查询数列[1,n]中[l,r]内的出现正偶数次的数的个数, 数列中的数 <= 1e5, n <= 1e5, 强制在线 算法 ​ 查询的内容: 区 ...

  9. 2018.09.30 bzoj2821: 作诗(Poetize)(分块)

    传送门 分块经典题目. 先将数列分块. 然后预处理出每两个块之间有多少个数出现了正偶数次. 这样查询的时候对于中间的完整块直接用预处理出的数组搞定. 剩下的暴力枚举求解. 代码: #include&l ...

随机推荐

  1. Java动态调用webService,axis2动态调用webService

    Java动态调用webService axis2动态调用webService >>>>>>>>>>>>>>>& ...

  2. C# 分页

    #region 分页 /// <summary> /// 分页 /// </summary> /// <param name="page">当前 ...

  3. 学习使用Et采集的过程和分析

  4. angularJs 使用中遇到的问题小结【一:关于传参】

    我请教个问题 :我在界面传了一个参数<a ng-click="deleteOrder({{orderOrder}})" class="btn warning-btn ...

  5. IXListView的自我分析一

    XListView是一个很不错的用来刷新和加载的控件,下拉刷新和上拉加载.目前这个控件已经没有更新,这个不重要,重要的是它确实还不错,之后可能一直有人在用. android没有提供原生的这类控件,需要 ...

  6. ASP.NET Web API 通过参数控制返回类型(JSON|XML)

    一个很实用的技巧,可以在访问web api服务的时候指定返回数据的格式类型,比如 json 或者 xml. 因为 web api 默认返回的是XML格式,但是现在json 比较流行,同时网上也有其他的 ...

  7. MyBatis的学习总结四:实现关联表查询【参考】

    一.一对一的表关联查询(edi_test_task  和  edi_task_detail) 例子:一条任务明细对一条任务记录 对应的sql的映射xml文件如下: <?xml version=& ...

  8. ios&h5混合开发项目仿app页面跳转优化

    前言:本人原本是ios开发工程师,但由于现今H5的兴起,行内刮起了一阵混合开发的风气,趁着这股劲,我也学了前端开发,不说研究的多深,但也能胜任日常的开发工作.长话短说,现今的混合开发应该还处于摸索阶段 ...

  9. Java8 map和reduce

    map final List<Integer> numbers = Arrays.asList(1, 2, 3, 4); final List<Integer> doubleN ...

  10. 5shift shell

    echo offcopy %systemroot%\system32\taskmgr.exe %systemroot%\system32\sethc.execopy %systemroot%\syst ...