--BZOJ

http://www.lydsy.com/JudgeOnline/problem.php?id=3809



考虑对l,r跑莫队,对一组维护美丽度出现次数的桶修改,

然后把桶序列用分块维护查询

然后是吐槽:

内存28M,哦,这个题居然卡内存。。。。。

卡内存!!!

然后我就为本校的权限号贡献了三次MLE......

代码:

 #include<cstdio>
#include<cmath>
#include<algorithm>
using std::sort;
struct ss{
int l,r,a,b,num;
}x[];
int n,m,cut;
int tong[];
int id[];
int mark[];
int a[];
int ans[];
bool cmp(ss a,ss b){
if(id[a.l]==id[b.l])
return a.r<b.r;
return id[a.l]<id[b.l];
}
inline void in(int &ans)
{
ans=;bool p=false;char ch=getchar();
while((ch>'' || ch<'')&&ch!='-') ch=getchar();
if(ch=='-') p=true,ch=getchar();
while(ch<=''&&ch>='') ans=ans*+ch-'',ch=getchar();
if(p) ans=-ans;
}
void modui();
int fin_brick(int l,int r);
int main()
{
int i,j,k;
in(n),in(m);
cut=(int)sqrt(n);
if(cut*cut<n)cut++;
for(i=;i<=n;i++)
in(a[i]);
for(i=;i<=m;i++)
in(x[i].l),in(x[i].r),in(x[i].a),in(x[i].b),x[i].num=i;
for(i=;i<=n;i++)
id[i]=i/cut;
sort(x+,x+m+,cmp);
modui();
for(i=;i<=m;i++)
printf("%d\n",ans[i]);
return ;
}
void modui(){
int l_p=x[].l,r_p=x[].l-,i;
for(i=;i<=m;i++){
while(r_p<x[i].r){
r_p++;
if(!tong[a[r_p]])
mark[a[r_p]/cut]++;
tong[a[r_p]]++;
}
while(r_p>x[i].r){
tong[a[r_p]]--;
if(!tong[a[r_p]])
mark[a[r_p]/cut]--;
r_p--;
}
while(l_p>x[i].l){
l_p--;
if(!tong[a[l_p]])
mark[a[l_p]/cut]++;
tong[a[l_p]]++;
}
while(l_p<x[i].l){
tong[a[l_p]]--;
if(!tong[a[l_p]])
mark[a[l_p]/cut]--;
l_p++;
}
ans[x[i].num]=fin_brick(x[i].a,x[i].b);
}
}
int fin_brick(int l,int r){
int b_l=l/cut,b_r=r/cut,ll=l%cut,rr=r%cut;
int i,j,ans=;
if(b_l==b_r){
for(i=l;i<=r;i++)
if(tong[i])
ans++;
return ans;
}
for(i=ll,j=l;i<=cut-;i++,j++)
if(tong[j])
ans++;
for(i=rr,j=r;i>=;i--,j--)
if(tong[j])
ans++;
b_l++;b_r--;
for(i=b_l;i<=b_r;i++)
ans+=mark[i];
return ans;
}
#include<cstdio>
#include<cstdlib>
#include<ctime>
using namespace std;
int main()
{
srand(time());
int n=,m=;
int i;
printf("%d %d\n",n,m);
for(i=;i<=n;i++)
printf("%d ",rand()%n+);
printf("\n");
for(i=;i<=m;i++){
int l=rand()%n+,a=rand()%n+;
int r=l+rand()%(n-l+),b=a+rand()%(n-a+);
printf("%d %d %d %d\n",l,r,a,b);
}
}

data_maker

祝AC

BZOJ 3809Gty的二逼妹子序列 解题报告+data marker的更多相关文章

  1. BZOJ 3809: Gty的二逼妹子序列

    3809: Gty的二逼妹子序列 Time Limit: 80 Sec  Memory Limit: 28 MBSubmit: 1387  Solved: 400[Submit][Status][Di ...

  2. Bzoj 3809: Gty的二逼妹子序列 莫队,分块

    3809: Gty的二逼妹子序列 Time Limit: 35 Sec  Memory Limit: 28 MBSubmit: 868  Solved: 234[Submit][Status][Dis ...

  3. 【BZOJ 3809】 3809: Gty的二逼妹子序列 (莫队+分块)

    3809: Gty的二逼妹子序列 Time Limit: 80 Sec  Memory Limit: 28 MBSubmit: 1728  Solved: 513 Description Autumn ...

  4. [bzoj3809]Gty的二逼妹子序列/[bzoj3236][Ahoi2013]作业

    [bzoj3809]Gty的二逼妹子序列/[bzoj3236][Ahoi2013]作业 bzoj   bzoj 题目大意:一个序列,m个询问在$[l,r]$区间的$[x,y]$范围内的数的个数/种类. ...

  5. 【BZOJ-3809】Gty的二逼妹子序列 分块 + 莫队算法

    3809: Gty的二逼妹子序列 Time Limit: 80 Sec  Memory Limit: 28 MBSubmit: 1072  Solved: 292[Submit][Status][Di ...

  6. BZOJ_3809_Gty的二逼妹子序列 && BZOJ_3236_[Ahoi2013]作业 _莫队+分块

    BZOJ_3809_Gty的二逼妹子序列 && BZOJ_3236_[Ahoi2013]作业 _莫队+分块 Description Autumn和Bakser又在研究Gty的妹子序列了 ...

  7. 3809: Gty的二逼妹子序列

    3809: Gty的二逼妹子序列 链接 分析: 和这道AHOI2013 作业差不多.权值是1~n的,所以对权值进行分块.$O(1)$修改,$O(\sqrt n)$查询. 代码: #include< ...

  8. 【BZOJ3809/3236】Gty的二逼妹子序列 [Ahoi2013]作业 莫队算法+分块

    [BZOJ3809]Gty的二逼妹子序列 Description Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题. 对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b ...

  9. [AHOI2013]作业 & Gty的二逼妹子序列 莫队

    ---题面--- 题解: 题目要求统计一个区间内数值在[a, b]内的数的个数和种数,而这个是可以用树状数组统计出来的,所以可以考虑莫队. 考虑区间[l, r]转移到[l, r + 1],那么对于维护 ...

随机推荐

  1. day2: python3.5学习——逻辑判断

    1. 简单的用户名和密码输入 username = "Helen"password = "123abc" _username = input("use ...

  2. <VS2017> 编写VC++单元测试 -(一)新建单元测试工程

    开发人员自己编写单元测试是一个非常好的习惯.单元测试不但能够验证自己所编写的代码是否存在问题,避免提交给测试人员时才发现bug,也可以为将来改动代码的人提供验证代码功能正确性的途径.在我有限的工作生涯 ...

  3. Prufer序列与树的计数(坑)

    \(prufer\)序列: 无根树转\(prufer\)序列: 不断找编号最小的叶子节点,删掉并在序列中加入他相连的节点. \(prufer\)转无根树: 找到在目前\(prufer\)序列中未出现且 ...

  4. 虚拟机下设置CentOS 7使用固定IP地址

    1.设置虚拟机使用桥接网络 2.查看安装虚拟机软件的电脑IP信息 3.启动CentOS 7进行设置

  5. Java调用C函数

    一.关于JNI JNI( Java Native Interface )主要是实现Java和C/C++语言之间的通信. Java通过JNI调用本地方法,而本地方法是以库文件的形式存放的(在WINDOW ...

  6. 第2章—装配Bean—自动化装配Bean

    自动化装配Bean 2.1.Spring配置可选方案 ​ 装配是依赖注入DI的本质,Spring提供了以下三种注入的装配机制: 在XMl中进行显式配置 在java中进行显式配置 隐式的Bean发现机制 ...

  7. javac之Method Invocation Expressions

    15.12.1. Compile-Time Step 1: Determine Class or Interface to Search 15.12.2. Compile-Time Step 2: D ...

  8. JVM的类加载时机

    类加载过程中每个步骤的顺序 我们已经知道,类加载的过程包括:加载.连接.初始化,连接又分为:验证.准备.解析,所以说类加载一共分为5步:加载.验证.准备.解析.初始化. 其中加载.验证.准备.初始化的 ...

  9. [作业] Python入门基础---九九乘法表

    1.while 循环 : x = 1 while x < 10: y = 1 while y <=x: print('%d*%d=%2d' % (y,x,x*y),end = '\t') ...

  10. 发布.net 4.0的站点到IIS7.5下时无法访问

    现象: 初始发布.net 4.0站点到IIS7.5下时,各种配置都完毕的情况下依旧无法访问.首页显示站点目录结构(注:开启目录结构访问后会显示这个错误,否则会提示开启),访问次级目录提示:Handle ...