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

 #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. appium第一个安卓自动化工程

    转自:https://university.utest.com/how-to-set-up-your-first-android-automation-project-with-appium/ App ...

  2. HttpClient 认证

    第四章 HTTP认证 HttpClient提供对由HTTP标准规范定义的认证模式的完全支持.HttpClient的认证框架可以扩展支持非标准的认证模式,比如NTLM和SPNEGO. 4.1 用户凭证 ...

  3. 10162 - Last Digit (数论+周期规律)

    UVA 10162 - Last Digit 题目链接 题意:求S=(11+22+...NN)%10 思路:打出0-9的每一个周期,发现周期为1或2或4.所以S是以20一个周期,打出表后发现20为4. ...

  4. Linux搭建lnmp环境

    在CentOS 6上使用yum安装lnmp服务,原文链接http://www.qiansw.com/yum-lnmp.html

  5. Flume 和 kafka的区别和对比

    定义: Flume:是Cloudera提供的一个分布式的海量日志采集.聚合和传输的系统: Kafka:是一种高吞吐量的分布式发布订阅消息系统: 各特点: 场景: Flume主要是和HDFS\HBase ...

  6. vue-router-h5-history

    vue-router的HTML5 History 模式,这种模式充分利用 history.pushState API 来完成 URL 跳转而无须重新加载页面. const router = new V ...

  7. css3的渐变效果

    1.css3 渐变的属性 例子: #grad { background: -webkit-linear-gradient(red, blue); /* Safari 5.1 - 6.0 */ back ...

  8. dedecms获取顶级栏目名称、二级栏目名称实现方法

    织梦DEDECMS文章.栏目页获取当前页面顶级栏目名称的方法 在用织梦做一些项目时,时常会碰到需要在当前页面调用顶级栏目名称的时候,织梦默认{dede:field name='typename' /} ...

  9. RecyclerView 局部刷新(获取viewHolder 去刷新)

    RecyclerView.ViewHolder viewHolder = mRecyclerView.findViewHolderForAdapterPosition(i); if (viewHold ...

  10. position属性中的绝对定位和相对定位

    absolute(绝对定位):1.如果没有父级DIV,则会根据浏览器原始点去定位,而且跟他相邻的DIV会忽略它,定位后则可用TRBL(top,right,bottom,left)去布局.注意:TRBL ...