这里

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;
int n, c, m, a[100005], bel[100005], blc, f[325][325], sum[325][100005], cnt[100005];
int uu, vv, ans;
int query(int uu, int vv){
int re=0;
if(bel[uu]==bel[vv]){
for(int i=uu; i<=vv; i++) cnt[a[i]] = 0;
for(int i=uu; i<=vv; i++){
cnt[a[i]]++;
if(!(cnt[a[i]]&1)) re++;
else if(cnt[a[i]]>2) re--;
}
}
else{
re = f[bel[uu]+1][bel[vv]-1];
for(int i=uu; i<=bel[uu]*blc; i++)
cnt[a[i]] = sum[bel[vv]-1][a[i]] - sum[bel[uu]][a[i]];
for(int i=(bel[vv]-1)*blc+1; i<=vv; i++)
cnt[a[i]] = sum[bel[vv]-1][a[i]] - sum[bel[uu]][a[i]];
for(int i=uu; i<=bel[uu]*blc; i++){
cnt[a[i]]++;
if(!(cnt[a[i]]&1)) re++;
else if(cnt[a[i]]>2) re--;
}
for(int i=(bel[vv]-1)*blc+1; i<=vv; i++){
cnt[a[i]]++;
if(!(cnt[a[i]]&1)) re++;
else if(cnt[a[i]]>2) re--;
}
}
return re;
}
int main(){
cin>>n>>c>>m;
blc = sqrt(n);
for(int i=1; i<=n; i++){
scanf("%d", &a[i]);
bel[i] = (i - 1) / blc + 1;
}
for(int i=1; i<=n; i++){
if(i==(bel[i]-1)*blc+1){
for(int j=1; j<=c; j++)
sum[bel[i]][j] = sum[bel[i]-1][j];
}
sum[bel[i]][a[i]]++;
}
for(int i=1; i<=bel[n]; i++){
memset(cnt, 0, sizeof(cnt));
int now=0;
for(int j=(i-1)*blc+1; j<=n; j++){
cnt[a[j]]++;
if(!(cnt[a[j]]&1)) now++;
else if(cnt[a[j]]>2) now--;
f[i][bel[j]] = now;
}
}
while(m--){
scanf("%d %d", &uu, &vv);
uu = (uu + ans) % n + 1;
vv = (vv + ans) % n + 1;
if(uu>vv) swap(uu, vv);
ans = query(uu, vv);
printf("%d\n", ans);
}
return 0;
}

luogu4135 作诗的更多相关文章

  1. [BZOJ2821][Luogu4135] 作诗

    由于BZOJ这题要contact lydsy2012@163.com,所以就放个洛谷的传送门(我木有BZOJ权限号啊0.0) 诶?这不是莫队裸题?? 等等--这题强制在线欸,没办法莫队了,肿么破? 之 ...

  2. 「luogu4135」作诗

    「luogu4135」作诗 传送门 分块好题. 预处理出 \(f[i][j]\) 表示 \(i\) 号块到 \(j\) 号块的答案,\(num[i][k]\) 表示 \(k\) 在前 \(i\) 块的 ...

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

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

  4. 2821: 作诗(Poetize)

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

  5. 做10年Windows程序员与做10年Linux程序员的区别(附无数评论)(开源软件相当于熟读唐诗三百首,不会作诗也会吟)

    如果一个程序员从来没有在linux,unix下开发过程序,一直在windows下面开发程序, 同样是工作10年, 大部分情况下与在linux,unix下面开发10年的程序员水平会差别很大.我写这篇文章 ...

  6. BZOJ 2821: 作诗(Poetize)( 分块 )

    分块,分成N^0.5块.O(N^1.5)预处理出sm[i][j]表示前i块中j的出现次数, ans[i][j]表示第i~j块的答案. 然后就可以O(N^0.5)回答询问了.总复杂度O((N+Q)N^0 ...

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

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

  8. [Luogu 4135] 作诗

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

  9. CH4907 作诗

    题意 4907 作诗 0x49「数据结构进阶」练习 描述 神犇SJY虐完HEOI之后给傻×LYD出了一题:SHY是T国的公主,平时的一大爱好是作诗.由于时间紧迫,SHY作完诗之后还要虐OI,于是SHY ...

随机推荐

  1. JS与JQ绑定事件的几种方式.

    JS与JQ绑定事件的几种方式 JS绑定事件的三种方式 直接在DOM中进行绑定 <button onclick="alert('success')" type="bu ...

  2. h5-25-地理定位配合百度地图

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  3. JAVA平台的理解

    主题:  JAVA是解释执行还是编译执行? 我的答案 : 混合模式 闲谈 : 1. JAVA(write once,run anywhere): 2. GC(Garbagae Collection), ...

  4. BaseAtapter

    本文用于实现一个通用的BaseAdapter类,统一产品的Adapter类,作为一个工具类,减少重复性工作,增加开发效率. 序 我们在开发项目的过程中,经常会用到ListView.GridView这一 ...

  5. Redis学习笔记(二)字符串进阶

    1.增减操作 字符串可以储存字节串.整数.浮点数三种类型的值,如果值无法被解释为十进制的整数或浮点数,那么对此值进行增减操作会返回错误,如果对一个不存在的或者保存了空串的键进行增减操作,Redis将当 ...

  6. SQL (一)定义变量以及变量赋值

    1.定义变量:declare @name varchar(20)  用declare定义一个名字为name的字符串类型的变量,变量前面需要加@ 2.为变量赋值:set @name = '%奥迪%' , ...

  7. python 字符与字节 json序列和反序列及支持的类型

    b = b"demo" s = "demo" # 字符串转字节 s = bytes(s, encoding = "utf8") s = st ...

  8. break,continue,return的区别

    break,continue,return的区别 break 当break语句用于循环语句时,会终止执行循环,并执行循环后代码(如果有的话). function main() { for(var i ...

  9. iview table 勾选当前行代码 data key _checked: true

    给 data 项设置特殊 key _checked: true 可以默认选中当前项

  10. ubuntu命令行转换图片像素大小

    convert -resize 512x256 00433.png 00001.png 1.512和256之间是x(就是字母那个x),用' * '反而会报错 2.这个命令会按照原图的比例进行转换 3. ...