分块太暴力惹...

没做出来。看了题解qaq

分析:

两头$\sqrt{n}$暴力维护

预处理ans[i][j],sum[i][j]

sum[i][j]是一个前缀和,前i块值为j的数量

ans[i][j]表示第i块到第j块的答案总和

询问的时候先做两头,最后把ans[][]加上去就好了!

主要难点在预处理和卡常

 #pragma GCC optimize(3)
#pragma GCC optimize(2)
#pragma GCC optimize("Ofast")
#include<bits/stdc++.h>
using namespace std;
inline int read(){
int ans=,f=;char chr=getchar();
while(!isdigit(chr)){if(chr=='-') f=-;chr=getchar();}
while(isdigit(chr)){ans=(ans<<)+(ans<<)+chr-;chr=getchar();}
return ans*f;
}const int M=1e5+,N=;
int sum[N][M],ans[N][N],n,c,m,x,y,bl[M],k,a[M],cnt[M],lst,tmp,i,j,now;
int Query(int l,int r){
tmp=;
if(bl[l]==bl[r]){
for(i=l;i<=r;++i){
++cnt[a[i]];
if(!(cnt[a[i]]&)) ++tmp;
else if(cnt[a[i]]>) --tmp;
}for(i=l;i<=r;i++) --cnt[a[i]];
return tmp;
}else{
for(i=l;i<=bl[l]*k;++i){
++cnt[a[i]];
if(!((cnt[a[i]]+sum[bl[r]-][a[i]]-sum[bl[l]][a[i]])&)) ++tmp;
else if(cnt[a[i]]+sum[bl[r]-][a[i]]-sum[bl[l]][a[i]]>) --tmp;
}
for(i=(bl[r]-)*k+;i<=r;i++){
++cnt[a[i]];
if(!((cnt[a[i]]+sum[bl[r]-][a[i]]-sum[bl[l]][a[i]])&)) ++tmp;
else if(cnt[a[i]]+sum[bl[r]-][a[i]]-sum[bl[l]][a[i]]>) --tmp;
}
for(i=l;i<=bl[l]*k;i++) --cnt[a[i]];
for(i=(bl[r]-)*k+;i<=r;i++) --cnt[a[i]];
tmp+=ans[bl[l]+][bl[r]-];
return tmp;
}
}
signed main(){
n=read(),c=read(),m=read();k=sqrt(n)+;
for(i=;i<=n;++i) a[i]=read();
for(i=;i<=n;++i) bl[i]=(i-)/k+,++sum[bl[i]][a[i]];
for(i=;i<=bl[n];++i)for(j=;j<=c;++j)sum[i][j]+=sum[i-][j];
for(i=;i<=bl[n];++i){
for(j=(i-)*k+,now=;j<=n;++j){
cnt[a[j]]++;
if(!(cnt[a[j]]&)) ++now;
else if(cnt[a[j]]>) --now;
ans[i][bl[j]]=now;
}for(j=i*k-k+;j<=n;++j)--cnt[a[j]];
}while(m--){
x=read(),y=read(),x=(x+lst)%n+,y=(y+lst)%n+;
if(x>y) swap(x,y);
printf("%d\n",lst=Query(x,y));
}return ;
}

【分块】P4135 作诗的更多相关文章

  1. 洛谷P4135 作诗 (分块)

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

  2. P4135 作诗——分块

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

  3. 洛谷 P4135 作诗(分块)

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

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

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

  5. 洛谷P4135 作诗

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

  6. luogu P4135 作诗

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

  7. P4135 作诗

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

  8. 洛谷 P4135 作诗

    分块大暴力,跟区间众数基本一样 #pragma GCC optimize(3) #include<cstdio> #include<algorithm> #include< ...

  9. 洛谷 P4135 作诗 题解

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

随机推荐

  1. favicon.ico请求处理

    favicon.ico 图标用于收藏夹图标和浏览器标签上的显示,如果不设置,浏览器会请求网站根目录的这个图标,如果网站根目录也没有这图标会产生 404. 出于优化的考虑,要么就有这个图标,要么就禁止产 ...

  2. Notepad++如何对比文件 Notepad++对比两个文件代码方法

    大家在使用Notepad++的时候,需要对编辑的两个文件进行比较,找出两个文件代码的区别,快速进行编辑修改,那么Notepad++如何对比文件,下面小编就给大家带来Notepad++对比两个文件代码方 ...

  3. SPSS缺失值得分析处理

    SPSS缺失值得分析处理 在资料收集的过程中,由于各种原因可能导致数据收集不全,就会产生缺失值,且这种情况往往无法避免.如果缺失值处理不当,就会导致分析结果精度降低,出现偏倚甚至是错误的理论,因此缺失 ...

  4. jeecg下实现自动默认模糊查询

    也许jeecg的作者深受SAP毒害吧,没考虑到广大使用JEECG的人群为SAP用户,及所开发的项目均为中小项目,无惧大数据模糊查询带来的功能影响. 经网友“&&康&&& ...

  5. spring-boot-configuration-processor

    spring默认使用yml中的配置,但有时候要用传统的xml或properties配置,就需要使用spring-boot-configuration-processor了 引入pom依赖 <de ...

  6. jquery操作html元素之( 尺寸)

    jQuery 提供多个处理尺寸的重要方法: width() height() innerWidth() innerHeight() outerWidth() outerHeight() jQuery ...

  7. 11-python基础—格式化的两种方式

    一.使用% %s 字符串 %c 字符 %d 十进制(整数) %i 整数 %u 无符号整数 %o 八进制整数 %x 十六进制整数 %X 十六进制整数大写 %e 浮点数格式1 %E 浮点数格式2 %f 浮 ...

  8. abstract类中method

    一.abstract的method是否可同时是static,是否可同时是native,是否可同时是synchronized? 都不可以,因为abstract申明的方法是要求子类去实现的,abstrac ...

  9. git mac安装

    1.git安装包安装 去官网下载最行的git版本 安装即可 https://git-scm.com/download/mac 但是一般的git仓库需要sshkey来做验证 下面奉上具体的命令: 需要生 ...

  10. ES相关信息

    漫画版原理介绍 搜索引擎的核心:倒排索引 elasticsearch 基于Lucene的,封装成一个restful的api,通过api就可进行操作(Lucene是一个apache开放源代码的全文检索引 ...