--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. python中的字符串和编码

    了解编码之前首先说下这几个词的概率: 位.字节.字符.字符串 1.位(bit)也称为比特 这个其实很简单,因为计算机都是二进制存储数据,也就是0和1,一个0或者1就表示一位.这是计算机存储的最小单位. ...

  2. J2SE基本安装和java的环境变量

    J2SE基本安装和java的环境变量   1. 首先登录http://www.oracle.com,下载JDK(J2SE) JDK有很多版本其中JDK 1.0,1.1,1.2,1.3,1.4 1.5 ...

  3. 论文笔记:CNN经典结构2(WideResNet,FractalNet,DenseNet,ResNeXt,DPN,SENet)

    前言 在论文笔记:CNN经典结构1中主要讲了2012-2015年的一些经典CNN结构.本文主要讲解2016-2017年的一些经典CNN结构. CIFAR和SVHN上,DenseNet-BC优于ResN ...

  4. 简单创建一个完整的struts2框架小程序

    要完成一个struts2框架的搭建, 1.首先应该从官网上下载最新的jar包,网络连接:http://struts.apache.org/download.cgi#struts2514.1,选择下载F ...

  5. 【NOI2018】

    总之国赛已经过了1个月了. 感谢北大当初给我的一本约救我狗命,不然国赛就要没学上了. 铜牌倒数十多名,我觉得我也是混到了一种境界. 虽然对于集训队已经失去梦想,但是,Day1全场堪称最低的21分,也是 ...

  6. 我也学习JAVA多线程-join

    在工作中,挺少遇到join关键字,但很多多线程资料和面试过程中,初中级开发工程师总会遇到join. 今天一起学习下join. join的作用:等待指定的时间(当为0时,一直等待),直到这个线程执行结束 ...

  7. abp angular 前端权限控制

    import { AppComponentBase } from '@shared/app-component-base'; this.permission.isGranted(menuItem.pe ...

  8. hiho# 1465 重复旋律8 循环串计数 后缀自动机

    题目传送门 题意:给出一个母串,再给出n个串,问对于每个串,母串中有几个子串是可以通过循环变化得到这个串. 思路:对母串建SAM,求出$right$集. 把匹配串复制一遍,和母串进行匹配,当匹配长度大 ...

  9. ContentProvider和Cursor以及CursorAdapter三者之间内部链接实现原理 解析

    最近 在学习Android3.0中推出的 Loader 机制,其中CursorLoader 这个加载器说是可以实时监测数据和更新数据,为了一探究竟,就连带的将 ContentProvider和Curs ...

  10. (转)Mysql占用过高CPU时的优化手段

    Mysql占用CPU过高的时候,该从哪些方面下手进行优化?占用CPU过高,可以做如下考虑:1)一般来讲,排除高并发的因素,还是要找到导致你CPU过高的哪几条在执行的SQL,show processli ...