博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[bzoj 3809]Gty的二逼妹子序列
阅读量:6519 次
发布时间:2019-06-24

本文共 1512 字,大约阅读时间需要 5 分钟。

传送门:

Gty的二逼妹子序列

Time Limit: 80 Sec  Memory Limit: 28 MB
Submit: 1860  Solved: 558
[][][]

Description

Autumn和Bakser又在研究Gty的妹子序列了!但他们遇到了一个难题。
 
对于一段妹子们,他们想让你帮忙求出这之内美丽度∈[a,b]的妹子的美丽度的种类数。
 
为了方便,我们规定妹子们的美丽度全都在[1,n]中。
 
给定一个长度为n(1<=n<=100000)的正整数序列s(1<=si<=n),对于m(1<=m<=1000000)次询问“l,r,a,b”,每次输出sl...sr中,权值∈[a,b]的权值的种类数。

 

Input

第一行包括两个整数n,m(1<=n<=100000,1<=m<=1000000),表示数列s中的元素数和询问数。
 
第二行包括n个整数s1...sn(1<=si<=n)。
 
接下来m行,每行包括4个整数l,r,a,b(1<=l<=r<=n,1<=a<=b<=n),意义见题目描述。
 
保证涉及的所有数在C++的int内。
 
保证输入合法。

 

Output

对每个询问,单独输出一行,表示sl...sr中权值∈[a,b]的权值的种类数。

 

Sample Input

10 10
4 4 5 1 4 1 5 1 2 1
5 9 1 2
3 4 7 9
4 4 2 5
2 3 4 7
5 10 4 4
3 9 1 1
1 4 5 9
8 9 3 3
2 2 1 6
8 9 1 4

Sample Output

2
0
0
2
1
1
1
0
1
2

nsqrt(n)lgn算法秒出,卡时间。

nlg^2n算法秒出,卡空间。

于是我们可以对权值分块,O(1)修改,O(sqrt(n))查询。

1 #include
2 #include
3 #include
4 const int maxn = 100005; 5 const int maxm = 1000006; 6 int read(){ 7 int rt=0,fl=1;char ch=getchar(); 8 while(ch<'0'||ch>'9'){
if(ch=='-')fl=-1;ch=getchar();} 9 while(ch>='0'&&ch<='9'){rt=rt*10+ch-'0';ch=getchar();}10 return rt*fl;11 } 12 struct query{13 int l,r,a,b,id;14 }mo[maxm];15 typedef long long ll;16 int block_size,pos1[maxn],cnt,c[maxn],r[1005],l[1005];17 int res[maxm];18 int bucket[1005];19 bool operator < (query a,query b){20 if(pos1[a.l]!=pos1[b.l])return a.l
mo[i].r)del(data[R]),R--;70 while(L>mo[i].l)L--,add(data[L]);71 while(R

 

转载于:https://www.cnblogs.com/kvrmnks/p/6914489.html

你可能感兴趣的文章
猫猫学IOS(三十)UI之Quartz2D画图片画文字
查看>>
ethereumjs/merkle-patricia-tree-2-API
查看>>
go标准库的学习-runtime
查看>>
NodeJS学习之文件操作
查看>>
AJAX的get和post请求原生编写方法
查看>>
WebSocket 是什么原理?为什么可以实现持久连接
查看>>
Python自学笔记-logging模块详解
查看>>
Head First--设计模式
查看>>
iOS之CAGradientLayer属性简介和使用
查看>>
微信小程序UI组件、开发框架、实用库
查看>>
模块化Javascript代码的两种方式
查看>>
Money去哪了- 每日站立会议
查看>>
Python数据结构和算法学习笔记1
查看>>
正则之从dom字符串中提取url
查看>>
大数据——基础概念
查看>>
机器学习温和指南
查看>>
最短路-Bellman-Ford算法
查看>>
Object 类有哪些方法
查看>>
oracle 将一个表复制到另外一个表里 .
查看>>
leetcode--
查看>>