这里

#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. 水题 Codeforces Round #303 (Div. 2) A. Toy Cars

    题目传送门 /* 题意:5种情况对应对应第i或j辆车翻了没 水题:其实就看对角线的上半边就可以了,vis判断,可惜WA了一次 3: if both cars turned over during th ...

  2. java学习第二章

  3. iOS 动画(基于Lottie封装)

    一般app中都会带有动画,而如果是一些复杂的动画,不但实现成本比较高,而且实现效果可能还不能达到UI想要的效果,于是我们可以借助lottie来完成我们想要的动画.   lottie动画1.gif   ...

  4. ubuntu下安装php-curl扩展

    查找包 apt-cache是linux下的一个apt软件包管理工具,它可查询apt的二进制软件包缓存文件.APT包管理的大多数信息查询功能都可以由apt-cache命令实现,通过apt-cache命令 ...

  5. https为数据传输保驾护航

    为什么要使用https 谷歌官网已宣布,今年7月起,Chrome浏览器的地址栏将把所有HTTP标示为不安全网站. 在客户端与服务器数据传输过程中,http协议传输是不安全的,一般情况下,http协议的 ...

  6. RPC(Remote Procedure Call Protocol)远程过程调用协议

    RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC协议假定某些传输协议的存在 ...

  7. faster rcnn环境编译

    步骤和fast rcnn的编译一样,在编译中遇到了一个问题: 刚开始是以为python-numpy没有安装到位,后来发现是Makefile.config的配置出现了问题.原来的配置是: PYTHON_ ...

  8. 在windows下.NET CORE 与Consul简单使用

    0)基本概念 consul常用于服务发现 [微服务] web_Api \ \   ->注册服务                                          raft选举le ...

  9. python 变量引用

    最近在看<<流畅的python>>关于变量引用部分时,有一些自己的看法,就再次记录一下. 问题: # From flunet python example 8-8 class ...

  10. focus,focusin,blur,focusout区别

    focus与focusin 1.共同点:当 <div> 元素或其任意子元素获得焦点时执行事件 2.区别:focus不支持冒泡,而focusin支持冒泡: blur与focusout 1.共 ...