我们按照询问的右端点排序,然后对于每一个位置,记录同颜色

上一个出现的位置,每次将上上位置出现的+1,上次出现的-1,然后

用树状数组维护就好了

/**************************************************************
    Problem:
    User: BLADEVIL
    Language: Pascal
    Result: Accepted
    Time: ms
    Memory: kb
****************************************************************/
 
//By BLADEVIL
var
    n, m, t, l                      :longint;
    pre, other, num                 :array[..] of longint;
    last, ans, first, a, pred, c    :array[..] of longint;
     
procedure connect(x,y,tot:longint);
begin
    inc(l);
    pre[l]:=last[x];
    last[x]:=l;
    other[l]:=y;
    num[l]:=tot;
end;
  
procedure add(x,y:longint);
begin
    while (x<=n) do
    begin
        inc(c[x],y);
        x:=x+(x and -x);
    end;
end;
  
function ask(x:longint):longint;
var    
    sum                             :longint;
begin
    sum:=;
    while x> do
    begin
        sum:=sum+c[x];
        x:=x-(x and -x);
    end;
    exit(sum);
end;
 
procedure init;
var
    i, j                            :longint;
    x, y                            :longint;
     
begin
    readln(n,t,m);
    for i:= to n do
    begin
        read(a[i]);
        if first[a[i]]<> then pred[i]:=first[a[i]];
        first[a[i]]:=i;
    end;
     
    for i:= to m do
    begin
        readln(x,y);
        connect(y,x,i);
    end;
end;
 
procedure main;
var
    i                               :longint;
    q, p                            :longint;
     
begin
    for i:= to n do
    begin
        add(pred[pred[i]]+,);
        add(pred[i]+,-);
        q:=last[i];
        while q<> do
        begin
            p:=other[q];
            ans[num[q]]:=ask(p);
            q:=pre[q];
        end;
    end;
    for i:= to m do writeln(ans[i]);
end;
  
begin
    init;
    main;
end.

最新文章

  1. Java线程池入门
  2. error=Error Domain=NSURLErrorDomain Code=-1003
  3. 4、android BroadcastReceiver详细用法
  4. 算法-KMP串匹配
  5. [Android Tips] 3. Launch CallLog Activity
  6. php遇见的错误(一)
  7. Windows7 sp1 64位下安装配置eclipse+jdk+CDT+minGW
  8. [tarjan] poj 1236 Network of Schools
  9. 152. Maximum Product Subarray(中等, 神奇的 swap)
  10. Linux基本命令总结(六)
  11. MQTT研究之EMQ:【SSL双向验证】
  12. ABAP的匹配
  13. laravel5.4将excel表格中的信息导入到数据库中
  14. Java 学习 注解
  15. linux笔记_day06
  16. JavaScript语法详解:运算符和表达式
  17. CodeForces 471D MUH and Cube Walls -KMP
  18. SCSS 实用知识汇总
  19. 用QQ帐号和新浪微博帐号登录网站
  20. ZOJ 3427 Array Slicing (scanf使用)

热门文章

  1. WinForm界面布局控件WeifenLuo.WinFormsUI.Docking&quot;的使用 (二)
  2. php不使用插件导出excel
  3. php文件上传的例子
  4. ubuntu打开 txt 文件乱码
  5. Java 第二天
  6. 小课堂week15 年终小结
  7. equals函数
  8. linux 下的使用 ln 创建 软链接 和 硬链接
  9. Android系统编译脚本理解
  10. core java 8~9(GUI &amp; AWT事件处理机制)