题解真的是太神奇了2333

用离线和树状数组(为什么感觉和HH的项链是的,什么鬼),比较巧妙的是他把整个数列分成几段。用一个vector来记录每个数出现的位置。一共就是data[a[i]][sz]---data[a[i]][sz-a[i]],data[a[i]][sz-a[i]]----data[a[i]][sz-a[i]-1],0----data[a[i]][sz-a[i]-1],第一个区间的数是1,第二个区间是-1,第三个是0,这样区间加减的话就直接出来了是不是成立一共有a[i]个a[i]而且,还可以往后递推,太神奇了2333

 #include<bits/stdc++.h>
#define lowbit(x) x&(-x)
#define LL long long
#define N 200005
#define M 1000005
#define mod 1000000007LL
#define inf 0x7ffffffff
using namespace std;
inline int ra()
{
int x=,f=; char ch=getchar();
while (ch<'' || ch>''){if (ch=='-') f=-; ch=getchar();}
while (ch>='' && ch<=''){x=x*+ch-''; ch=getchar();}
return x*f;
}
int c[N],ans[N],a[N],n,m;
struct node{
int l,r,id;
bool operator < (const node t) {return r<t.r;}
}q[N];
void add(int i, int v)
{
while (i<=n)
{
c[i]+=v;
i+=lowbit(i);
}
}
int ask(int x)
{
int sum=;
while (x>)
{
sum+=c[x];
x-=lowbit(x);
}
return sum;
}
vector<int> data[N];
int main()
{
int sz; n=ra();m=ra();
for (int i=; i<=n; i++) a[i]=ra();
for (int i=; i<=m; i++)
{
q[i].l=ra(),q[i].r=ra();
q[i].id=i;
}
sort(q+,q+m+);
for (int i=,k=; i<=n; i++)
{
if (a[i]<=n)
{
data[a[i]].push_back(i);
sz=data[a[i]].size();
if (sz>=a[i])
{
add(data[a[i]][sz-a[i]],);
if (sz>a[i]) add(data[a[i]][sz-a[i]-],-);
if (sz>a[i]+) add(data[a[i]][sz-a[i]-],);
}
}
while (q[k].r==i && k<=m)
{
ans[q[k].id]=ask(q[k].r)-ask(q[k].l-);
k++;
}
for (int j=; j<=n; j++)
printf("%d ",ask(j));
cout<<endl;
}
for (int i=; i<=m; i++)
printf("%d\n",ans[i]);
return ;
}

最新文章

  1. Azure Backup (3) 使用Azure备份服务,备份Azure虚拟机
  2. --------------- Target-----------------
  3. Vim编辑器
  4. 【新产品发布】《GM1001 4~20mA 高精度电流采集模块》
  5. Fluentd安装——通过rpm方式
  6. android listview综合使用示例_结合数据库操作和listitem单击长按等事件处理
  7. BZOJ 1589 采集糖果
  8. hdu5548
  9. jquery ajax局部加载方法介绍
  10. java.text.MessageFormat格式化字符串时的小技巧
  11. Xcode删除证书
  12. JavaScript实现ZLOGO: 用语法树实现多层循环
  13. Mac 下GitHub 访问慢解决方案
  14. Space Invaders 太空侵略者
  15. Java异常处理 10 个最佳实践
  16. bata2
  17. php in_array()优化
  18. (转)搭建本地 8.8 W 乌云漏洞库
  19. Java的Stack类实现List接口真的是个笑话吗
  20. [GO]从键盘获取回复的客户端

热门文章

  1. linux编译C
  2. Swift-关于Swift编程语言
  3. POJ 1487:Single-Player Games 浮点数高斯消元
  4. computed、methods、watch
  5. 奇异值分解(SVD)和主成分分析(PCA)
  6. 内网其他服务器节点连接Mysql数据库很慢的解决方案
  7. Vue 中使用Ajax请求
  8. swoole之任务和定时器
  9. Windows驱动开发-r3和r0通信
  10. 51nod 1444:破坏道路 广度优先搜索