luogu 1972 小H的项链 莫队
1.莫队算法 TLE 80
#include<bits/stdc++.h>
#define rep(i,x,y) for(register int i=x;i<=y;i++)
using namespace std;
const int N=,M=;
int h[N],n,m,a[N],ans[M];
struct node{
int l,r,id;
bool operator<(const node&b)const{
if(h[l]==h[b.l])return r<b.r;
return l<b.l;}}q[M];
inline int read(){
int x=,f=;char ch=getchar();
while(!isdigit(ch)){if(ch=='-')f=-;ch=getchar();}
while(isdigit(ch)){x=(x<<)+(x<<)+(ch^);ch=getchar();}
return x*f;}
void block(){
int k=sqrt(n);
rep(i,,n) h[i]=(i-)/k+;}
int L,R,now,vis[];
//vis实质上记录的是出现次数
void revise(int i,int d){
if(d==){
if(vis[a[i]]==)now++;vis[a[i]]++;}
else{
vis[a[i]]--;if(!vis[a[i]])now--;}}
int main(){
n=read();
rep(i,,n) a[i]=read();
block();m=read();
rep(i,,m) q[i].l=read(),q[i].r=read(),q[i].id=i;
sort(q+,q++m);
rep(i,,m){
while(L<q[i].l) revise(L++,-);
while(L>q[i].l) revise(--L,);
while(R<q[i].r) revise(++R,);
while (R>q[i].r) revise(R--,-);
ans[q[i].id]=now;}
//注意编号问题,会影响值(unknown reasons)
rep(i,,m) printf("%d\n",ans[i]);
return ;
}
2.离线树状数组
别人的代码,没看懂,链接:https://www.cnblogs.com/five20/p/7603849.html
#include<bits/stdc++.h>
using namespace std;
int a[],s[],has[],last[],n,m;
struct o{
int x,y,num;
}q[];
inline int gi()
{
int a=;char x=getchar();bool f=;
while((x>''||x<'')&&x!='-')x=getchar();
if(x=='-')x=getchar(),f=;
while(x>=''&&x<='')a=a*+x-'',x=getchar();
return f?-a:a;
}
bool cmp(o a,o b)
{return a.y<b.y;}
inline void add(int k,int a)
{
while(k<=n)
{
s[k]+=a;
k+=k&-k;
}
}
int ans(int x)
{
int sum=;
while(x)
{
sum+=s[x];
x-=x&-x;
}
return sum;
}
int main()
{
n=gi();
for(int i=;i<=n;i++)
{int A=gi();has[i]=last[A]+;last[A]=i;}
m=gi();
for(int i=;i<=m;i++)
{
q[i].x=gi();q[i].y=gi();q[i].num=i;
}
sort(q+,q+m+,cmp);
int now=;
for(int i=;i<=m;i++)
{
while(now<=q[i].y)
{
now++;
add(has[now-],);
add(now,-);
}
a[q[i].num]=ans(q[i].x);
}
for(int i=;i<=m;i++)
printf("%d\n",a[i]);
return ;
}
luogu 1972 小H的项链 莫队的更多相关文章
- Luogu 1494 - 小Z的袜子 - [莫队算法模板题][分块]
题目链接:https://www.luogu.org/problemnew/show/P1494 题目描述 作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天 ...
- luogu 2709 小B的询问 莫队
题目链接 Description 小B有一个序列,包含\(N\)个\(1-K\)之间的整数.他一共有\(M\)个询问,每个询问给定一个区间\([L..R]\),求\(\sum_{i=1}^{K}c_i ...
- luogu 2709小b的询问--莫队
https://www.luogu.org/problemnew/show/P2709 无修改的莫队几乎没有什么太高深的套路,比较模板吧,大多都是在那两个函数上动手脚. 这题询问每一种数字数量的平方和 ...
- 小Z的袜子 & 莫队
莫队学习 & 小Z的袜子 引入 莫队 由莫涛巨佬提出,是一种离线算法 运用广泛 可以解决广大的离线区间询问题 莫队的历史 早在mt巨佬提出莫队之前 类似莫队的算法和莫队的思想已在Codefor ...
- [Luogu 4688] [Ynoi2016]掉进兔子洞 (莫队+bitset)
[Luogu 4688] [Ynoi2016]掉进兔子洞 (莫队+bitset) 题面 一个长为 n 的序列 a.有 m 个询问,每次询问三个区间,把三个区间中同时出现的数一个一个删掉,问最后三个区间 ...
- BZOJ 2038 [2009国家集训队]小Z的袜子 莫队
2038: [2009国家集训队]小Z的袜子(hose) 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=2038 Descriptionw ...
- Bzoj 1878: [SDOI2009]HH的项链 莫队
1878: [SDOI2009]HH的项链 Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 2717 Solved: 1363[Submit][Statu ...
- BZOJ2038 [2009国家集训队]小Z的袜子 莫队+分块
作为一个生活散漫的人,小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿.终于有一天,小Z再也无法忍受这恼人的找袜子过程,于是他决定听天由命…… 具体来说,小Z把这N只袜子从1到N编号,然后从 ...
- 洛谷P2709 小B的询问 莫队
小B有一个序列,包含N个1~K之间的整数.他一共有M个询问,每个询问给定一个区间[L..R],求Sigma(c(i)^2)的值,其中i的值从1到K,其中c(i)表示数字i在[L..R]中的重复次数.小 ...
随机推荐
- FOJ有奖月赛-2016年8月(daxia专场之过四题方有奖)
http://acm.fzu.edu.cn/contest/list.php?cid=152 主要是a题, lucas定理, 就这一版能过.. 记录一下代码, 另外两个最短路 一个模拟,没什么记录 ...
- Java循环中try...finally...遇到continue
一段很简单的代码,先自己在大脑中给出结果: for (int i = 0; i < 5; i++) { System.out.println("enter: i=" + i) ...
- AC自动机-HDU2222-模板题
http://acm.hdu.edu.cn/showproblem.php?pid=2222 一个AC自动机的模板题.用的kuangbin的模板,静态建Trie树.可能遇到MLE的情况要转动态建树. ...
- windows service 安装/卸载
第一种方法: 前提: Service1 中的serviceProcessInstaller1设置 Account为localSystem 1. 开始 ->运行 ->cmd(管理员身份运行) ...
- WordPress发送注册用户设置密码邮件提示:您的密码重设链接无效,请在下方请求新链接
1.修改WP根目录下的 wp-login.php文件将 $message .= '<' . network_site_url("wp-login.php?action=rp&k ...
- Educational Codeforces Round 26 B,C
B. Flag of Berland 链接:http://codeforces.com/contest/837/problem/B 思路:题目要求判断三个字母是否是条纹型的,而且宽和高相同,那么先求出 ...
- 稍稍乱入的CNN,本文依然是学习周莫烦视频的笔记。
稍稍乱入的CNN,本文依然是学习周莫烦视频的笔记. 还有 google 在 udacity 上的 CNN 教程. CNN(Convolutional Neural Networks) 卷积神经网络简单 ...
- CodeForces 1110F Nearest Leaf | 线段树/换根
我--又诈尸了-- 代码几乎都不会写了,打场CF居然上分啦,开心!(虽然还是比不过列表里的各路神仙) 题目链接 题目描述 一棵\(n\)个点的有根树,规定一种dfs序(规则:编号小的点优先dfs),\ ...
- Luogu 4294 [WC2008]游览计划 | 斯坦纳树
题目链接 Luogu 4294 (我做这道题的时候BZOJ全站的SPJ都炸了 提交秒WA 幸好有洛谷) 题解 这道题是[斯坦纳树]的经典例题.斯坦纳树是这样一类问题:带边权无向图上有几个(一般约10个 ...
- formelf.exe的用法
@2018-9-17 在windows下的cmd.exe程序下生成某个文件的 .txt版本 fromelf --text -o name.txt target.x