链接:https://ac.nowcoder.com/acm/contest/926/D
来源:牛客网

在一维坐标系中,给定 n条有颜色的线段,第 i条线段的左右端点分别为 li​和 ri​,此外它的颜色为 ci​。

给定m个查询,每个查询给定一个区间 [a,b],需要求出这个区间完全包含的线段中有多少种不同颜色的线段。

题解:说是普及组,还是需要一些水平的。简单的版本可以参考:最开始学主席树的时候的题目:SPOJ:D-query这些说起来之前那个题也可以这样做的。 即是离线操作,把询问和线段一起按右端点排序,然后依次处理,对于同一种颜色,树状数组里面保存最右边的那个。
这样保证了包含的的优先级,而且只统计了依次。
(copy了一份初中生的代码。

#include<bits/stdc++.h>
using namespace std;
const int M = ;
int C,n,m,k,a[M],b[M],c[M],cnt,res[M]; void add(int x,int y)
{
for(int i=x;i<=C+;i+=i&-i) c[i]+=y;
} int ask(int x)
{
int ans=;
for(int i=x;i;i-=i&-i) ans+=c[i];
return ans;
} struct vv
{
int l,r,c;
} s[M],q[M]; bool cmp(vv a,vv b)
{
return a.r<b.r;
} int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
scanf("%d%d%d",&s[i].l,&s[i].r,&s[i].c);
C=max(C,s[i].r);
}
for(int i=;i<=m;i++)
{
scanf("%d%d",&q[i].l,&q[i].r);
q[i].c=i;
}
sort(s+,s++n,cmp);
sort(q+,q++m,cmp);
int l=;
for(int i=;i<=m;i++)
{
while(s[l].r<=q[i].r && l<=n)
{
if(b[s[l].c]<s[l].l+)
{
if(!b[s[l].c]) cnt++;
if(b[s[l].c]) add(b[s[l].c],-);
add(s[l].l+,);
b[s[l].c]=s[l].l+;
}
l++;
}
res[q[i].c]=cnt-ask(q[i].l);
}
for(int i=;i<=m;i++) printf("%d\n",res[i]);
}
 
 
 

最新文章

  1. response设置输出文件编码
  2. ArcGIS“一个或多个ActiveX控件无法显示...”问题的解决方案
  3. 集DDD,TDD,SOLID,MVVM,DI,EF,Angularjs等于一身的.NET(C#)开源可扩展电商系统–Virto Commerce
  4. php常用转义字符‘ “ {} $ \n
  5. Inside Kolla - 04 Kolla 目录结构
  6. this(C# 参考)
  7. PHP oracle分页
  8. Windows Phone零距离开发(Composite Thread组合线程)
  9. 转载:as3.0下对象类型返回值与变量默认值的详细说明
  10. Ubuntu下Sublime Text 3无法输入中文的解决方案
  11. AppExtention - today
  12. 【转】Android 最火的快速开发框架XUtils
  13. 使用UIPageControl UIScrollView制作APP引导界面
  14. 写一个Redis封装类
  15. ACL in 和 out 区别 (重要)
  16. How to kill a particular user terminal on Linux
  17. C#中,三种强制类型转换的对比
  18. 论文阅读笔记二十四:Rich feature hierarchies for accurate object detection and semantic segmentation Tech report(R-CNN CVPR2014)
  19. java Int 和 String 之间的转换
  20. bootstrap之排版样式

热门文章

  1. 微信小程序之判断页面来源
  2. winform 通用自动更新程序
  3. AGC038
  4. k8s-Namespace(命名空间)
  5. Centos7通过yum安装jdk8
  6. 关于vs无法创建虚拟目录的问题
  7. c#异步方法调用
  8. 安装和使用pyltp
  9. Linux下搭建keepalive+nginx
  10. jsp代码中实现下拉选项框的回显代码