【莫队 or 离线+树状数组】BZOJ1878(SDOI2009)[HH的项链]题解
来源:互联网 发布:淘宝上怎么买定额发票 编辑:程序博客网 时间:2024/05/27 14:11
题目概述
给出一个序列
解题报告
这道题显然可以用莫队乱搞,但是还有另一种做法。
记录
所以考虑离线,按照左端点对询问进行排序。那么对于一个询问,之前的左端点到当前左端点这一段就不会再有贡献了,所以将这一段所有点的
示例程序
#include<cstdio>#include<algorithm>#define fr first#define sc secondusing namespace std;const int maxn=50000,maxm=200000,maxa=1000000;int n,m,a[maxn+5],ID[maxm+5];int nxt[maxn+5],lst[maxa+5],ans[maxm+5];pair<int,int> q[maxm+5];#define Eoln(x) ((x)==10||(x)==13||(x)==EOF)inline char readc(){ static char buf[100000],*l=buf,*r=buf; if (l==r) r=(l=buf)+fread(buf,1,100000,stdin); if (l==r) return EOF; else return *l++;}inline int readi(int &x){ int tot=0,f=1;char ch=readc(),lst='+'; while ('9'<ch||ch<'0') {if (ch==EOF) return EOF;lst=ch;ch=readc();} if (lst=='-') f=-f; while ('0'<=ch&&ch<='9') tot=(tot<<3)+(tot<<1)+ch-48,ch=readc(); return x=tot*f,Eoln(ch);}inline bool cmp(int a,int b) {return q[a]<q[b];}int c[maxn+5];void Update(int x,int tem) {for (int p=x;p<=n;p+=p&-p) c[p]+=tem;}int Sum(int x) {int sum=0;for (int p=x;p;p-=p&-p) sum+=c[p];return sum;}int main(){ freopen("program.in","r",stdin); freopen("program.out","w",stdout); readi(n); for (int i=1;i<=n;i++) { readi(a[i]); if (!lst[a[i]]) Update(i,1); else nxt[lst[a[i]]]=i; lst[a[i]]=i; } readi(m);for (int i=1;i<=m;i++) ID[i]=i,readi(q[i].fr),readi(q[i].sc); sort(ID+1,ID+1+m,cmp); for (int i=1,now=1;i<=m;i++) { for (;now<q[ID[i]].fr;now++) if (nxt[now]) Update(nxt[now],1); ans[ID[i]]=Sum(q[ID[i]].sc)-Sum(q[ID[i]].fr-1); } for (int i=1;i<=m;i++) printf("%d\n",ans[i]); return 0;}
阅读全文
0 0
- 【莫队 or 离线+树状数组】BZOJ1878(SDOI2009)[HH的项链]题解
- 【SDOI2009】【bzoj1878】HH的项链(离线+树状数组)
- 【bzoj1878】[SDOI2009]HH的项链 树状数组+离线
- BZOJ1878: [SDOI2009]HH的项链(树状数组+离线)
- [离线+树状数组 || 主席树]BZOJ1878: [SDOI2009]HH的项链
- bzoj1878: [SDOI2009]HH的项链(树状数组+离线处理)
- [SDOI2009][Bzoj1878] HH的项链 离线+树状数组
- BZOJ1878(SDOI2009)[HH的项链]题解--莫队
- [树状数组(离线)]BZOJ 1878: [SDOI2009]HH的项链 题解
- [SDOI2009][BZOJ1878][前缀和][树状数组]HH的项链
- [题解]bzoj1878(SDOI2009)HH的项链
- BZOJ1878: [SDOI2009]HH的项链(莫队)
- [BZOJ1878][SDOI2009]HH的项链
- [BZOJ1878] [SDOI2009]HH的项链
- 【SDOI2009】【BZOJ1878】HH的项链
- 【bzoj1878】[SDOI2009]HH的项链
- 【bzoj1878】[SDOI2009]HH的项链
- BZOJ1878: [SDOI2009]HH的项链
- oracle部分函数
- Python绝技读书笔记之构建SSH僵尸网络
- Java中的3中注释
- 第三周项目4顺序表应用2 删除元素在[x,y]之间的所有元素
- 接口和抽象类的区别
- 【莫队 or 离线+树状数组】BZOJ1878(SDOI2009)[HH的项链]题解
- 1021. 个位数统计 (15)--PAT乙级
- MAVEN异常:Check $M2_HOME environment variable and mvn script match
- 版本更新简单实现
- 输入框显示到下面.
- HDU 6208 The Dominator of Strings
- Python3:《机器学习实战》之Logistic回归(2)最佳回归系数确定
- 面向普通开发者的机器学习入门
- 事件三要素(实例)