分块大暴力,跟区间众数基本一样

 #pragma GCC optimize(3)
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;
int n,c,m,sz=,sz1;
int a[];
int be[],st[],ed[];
int nnm[][];
int ttt[],tt2[][];
int main()
{
int i,j,k,l,r,lans=,ans;
scanf("%d%d%d",&n,&c,&m);
//sz=sqrt(n);
sz1=(n-)/sz+;
for(i=;i<=n;i++) scanf("%d",&a[i]),be[i]=(i-)/sz+;
for(i=;i<sz1;i++) st[i]=(i-)*sz+,ed[i]=i*sz;
st[sz1]=(sz1-)*sz+,ed[sz1]=n;
for(i=;i<=sz1;i++)
{
memcpy(nnm[i],nnm[i-],sizeof(nnm[i]));
for(j=st[i];j<=ed[i];j++) nnm[i][a[j]]++;
}
for(i=;i<=sz1;i++)
{
memset(ttt,,sizeof(ttt));ans=;
for(j=i;j<=sz1;j++)
{
for(k=st[j];k<=ed[j];k++)
{
if(ttt[a[k]]&&ttt[a[k]]%==) ans--;
ttt[a[k]]++;
if(ttt[a[k]]&&ttt[a[k]]%==) ans++;
}
tt2[i][j]=ans;
}
}
memset(ttt,,sizeof(ttt));
while(m--)
{
scanf("%d%d",&l,&r);l=(l+lans)%n+;r=(r+lans)%n+;
if(l>r) swap(l,r);
if(be[l]+>=be[r])
{
ans=;
for(i=l;i<=r;i++)
{
if(ttt[a[i]]&&ttt[a[i]]%==) ans--;
ttt[a[i]]++;
if(ttt[a[i]]&&ttt[a[i]]%==) ans++;
}
printf("%d\n",ans);lans=ans;
for(i=l;i<=r;i++) ttt[a[i]]--;
}
else
{
ans=tt2[be[l]+][be[r]-];
for(i=l;i<=ed[be[l]];i++)
{
if(ttt[a[i]]+nnm[be[r]-][a[i]]-nnm[be[l]][a[i]]&&(ttt[a[i]]+nnm[be[r]-][a[i]]-nnm[be[l]][a[i]])%==) ans--;
ttt[a[i]]++;
if(ttt[a[i]]+nnm[be[r]-][a[i]]-nnm[be[l]][a[i]]&&(ttt[a[i]]+nnm[be[r]-][a[i]]-nnm[be[l]][a[i]])%==) ans++;
}
for(i=st[be[r]];i<=r;i++)
{
if(ttt[a[i]]+nnm[be[r]-][a[i]]-nnm[be[l]][a[i]]&&(ttt[a[i]]+nnm[be[r]-][a[i]]-nnm[be[l]][a[i]])%==) ans--;
ttt[a[i]]++;
if(ttt[a[i]]+nnm[be[r]-][a[i]]-nnm[be[l]][a[i]]&&(ttt[a[i]]+nnm[be[r]-][a[i]]-nnm[be[l]][a[i]])%==) ans++;
}
printf("%d\n",ans);lans=ans;
for(i=l;i<=ed[be[l]];i++) ttt[a[i]]--;
for(i=st[be[r]];i<=r;i++) ttt[a[i]]--;
}
}
return ;
}

洛谷 P4135 作诗的更多相关文章

  1. 洛谷P4135 作诗 (分块)

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

  2. 洛谷 P4135 作诗 题解

    题面. 之前做过一道很类似的题目 洛谷P4168蒲公英 ,然后看到这题很快就想到了解法,做完这题可以对比一下,真的很像. 题目要求区间内出现次数为正偶数的数字的数量. 数据范围1e5,可以分块. 我们 ...

  3. 洛谷P4135 作诗

    题意:[l,r]之间有多少个数出现了正偶数次.强制在线. 解:第一眼想到莫队,然后发现强制在线...分块吧. 有个很朴素的想法就是蒲公英那题的套路,做每块前缀和的桶. 然后发现这题空间128M,数组大 ...

  4. 洛谷 P4135 作诗(分块)

    题目链接 题意:\(n\) 个数,每个数都在 \([1,c]\) 中,\(m\) 次询问,每次问在 \([l,r]\) 中有多少个数出现偶数次.强制在线. \(1 \leq n,m,c \leq 10 ...

  5. 洛谷P4135 作诗(不一样的分块)

    题面 给定一个长度为 n n n 的整数序列 A A A ,序列中每个数在 [ 1 , c ] [1,c] [1,c] 范围内.有 m m m 次询问,每次询问查询一个区间 [ l , r ] [l, ...

  6. 洛谷P4135 Ynoi2016 掉进兔子洞 (带权bitset?/bitset优化莫队 模板) 题解

    题面. 看到这道题,我第一反应就是莫队. 我甚至也猜出了把所有询问的三个区间压到一起处理然后分别计算对应询问答案. 但是,这么复杂的贡献用什么东西存?难道要开一个数组 query_appear_tim ...

  7. P4135 作诗——分块

    题目:https://www.luogu.org/problemnew/show/P4135 分块大法: 块之间记录答案,每一块记录次数前缀和: 注意每次把桶中需要用到位置赋值就好了: 为什么加了特判 ...

  8. luogu P4135 作诗

    嘟嘟嘟 郑重声明:我的前几到分块题写法上都有点小毛病,以这篇为主! 这道题感觉也是分块的基本套路,只不过卡常,得开氧气. 维护俩:sum[i][j]表示前 i 块中,数字 j 出现了多少次,ans[i ...

  9. P4135 作诗

    传送门 分块 设sum[ i ] [ j ] 存从左边到第 i 块时,数字 j 的出现次数 f [ i ] [ j ] 存从第 i 块,到第 j 块的一整段的答案 那么最后答案就是一段区间中几块整段的 ...

随机推荐

  1. fruitstrap 安装.app文件

    1. 下载ipa的ios文件然后解压成.app的文件 2. 进入fruitstrap文件夹,copy .app文件到fruitstrap文件夹中 执行./fruitstrap -b umetrip.a ...

  2. 梳理caffe代码common(八)

    因为想梳理data_layer的过程.整理一半发现有几个很重要的头文件就是题目列出的这几个: 追本溯源,先从根基開始学起.这里面都是些什么鬼呢? common类 命名空间的使用:google.cv.c ...

  3. hadoop shuffle

    1 hadoop shuffle的地位 hadoop  shuffle是map reduce算法的核心,是它连接了多个map和多个reduce,它将map的输出交给reduce作为输入. 2 hado ...

  4. easyui tree的简单使用

    Tree 数据转换 所有节点都包含以下属性: id:节点id,这个很重要到加载远程服务器数据 which is important to load remote data text: 显示的节点文本 ...

  5. MRP-MD04 中的函数

    1.需求溯源 : MD_PEGGING_NODIALOG 2.实时库存 : MD_STOCK_REQUIREMENTS_LIST_API 这个函数中MDPSX 和 MDEZX 是通过 MDPS 的 I ...

  6. 谈谈Paxos一致性算法和一致性这个名词

    转自:http://www.cnblogs.com/esingchan/p/3917718.html 维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的& ...

  7. Spring Boot2.0之 整合Redis集群

    项目目录结构: pom: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:// ...

  8. WinDbg设置托管进程断点

    WinDbg的Live模式调试..Net 托管代码 ,使用bp,bu,bm无法设置断点,也许是我不会.研究了下,托管代码有自己的命令,!BPMD 模块名 完全限定的方法名 步骤: 1.查找进程PID, ...

  9. 一步一步学Silverlight 2系列(6):键盘事件处理

    一步一步学Silverlight 2系列(6):键盘事件处理   概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言V ...

  10. codeforces 690D1 D1. The Wall (easy)(dfs)

    题目链接: D1. The Wall (easy) time limit per test 0.5 seconds memory limit per test 256 megabytes input ...