--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. delphi 10.2 ----memo 的例子 实现基本记事本功能

    unit Unit2; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System ...

  2. Oracle ltrim() rtrim() 函数详细用法

    今天在论坛里看了一篇帖子,讨论ltrim() 函数的详细用法,下面我借几个高手的回答总结一下: 先看几个实例: SQL> select ltrim('109224323','109') from ...

  3. [redis]复制机制,调优,故障排查

    在redis的安装目录下首先启动一个redis服务,使用默认的配置文件,作为主服务 ubuntu@slave1:~/redis2$ ./redis-server ./redis.conf & ...

  4. 【JavaScript】__proto__和prototype的区别和联系【整理】

    var person={name:'ninja'}; person.prototype.sayName=function(){ return this.name; } Chrome运行结果: 提示找不 ...

  5. 《Implementing QuantLib》译后记

    目录 <Implementing QuantLib>译后记 初心 瞎忙 收获 彩蛋 展望 就在几天之前,经历了一年时间断断续续的坚持,<Implementing QuantLib&g ...

  6. Python爬虫学习:Python内置的爬虫模块urllib库

    urllib库 urllib库是Python中一个最基本的网络请求的库.它可以模拟浏览器的行为发送请求(都是这样),从而获取返回的数据 urllib.request 在Python3的urllib库当 ...

  7. web操作文件的上传到服务器 并可下载 并且读取出来

    1.文件的上传-servlet实现文件上传---核心API—DiskFileItemFactory 一.文件上传概述 l  实现web开发中的文件上传功能,需完成如下二步操作: •    在web页面 ...

  8. Hive的Shell里hive> 执行操作时,出现FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask错误的解决办法(图文详解)

    不多说,直接上干货! 这个问题,得非 你的hive和hbase是不是同样都是CDH版本,还是一个是apache版本,一个是CDH版本. 问题详情 [kfk@bigdata-pro01 apache-h ...

  9. Eclipse下搭建Django环境

    1.打开Eclipse,在Help->Install New Software,输入上诉信息,然后点击下一步(因这里已经安装了,所以无法点击下一步) 2.安装完成以后,进入Windows-> ...

  10. Java接口的简单理解和总结

    1.抽象层次:普通类 -> 抽象类 -> 接口 普通类:就是我们常用的类: 抽象类:专门用来被子类继承的,主要是为了符合现实世界的规律 如: Animal类:(每个现实的对象都有类与它相对 ...