zoukankan      html  css  js  c++  java
  • BZOJ 2120: 数颜色

    2120: 数颜色

    Time Limit: 6 Sec  Memory Limit: 259 MB
    Submit: 3185  Solved: 1238
    [Submit][Status][Discuss]

    Description

    墨 墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问。墨墨会像你发布如下指令: 1、 Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔。 2、 R P Col 把第P支画笔替换为颜色Col。为了满足墨墨的要求,你知道你需要干什么了吗?

    Input

    第1行两个整数N,M,分别代表初始画笔的数量以及墨墨会做的事情的个数。第2行N个整数,分别代表初始画笔排中第i支画笔的颜色。第3行到第2+M行,每行分别代表墨墨会做的一件事情,格式见题干部分。

    Output

    对于每一个Query的询问,你需要在对应的行中给出一个数字,代表第L支画笔到第R支画笔中共有几种不同颜色的画笔。

    Sample Input

    6 5
    1 2 3 4 5 5
    Q 1 4
    Q 2 6
    R 1 2
    Q 1 4
    Q 2 6

    Sample Output

    4
    4
    3
    4

    HINT

    对于100%的数据,N≤10000,M≤10000,修改操作不多于1000次,所有的输入数据中出现的所有整数均大于等于1且不超过10^6。

    2016.3.2新加数据两组by Nano_Ape


     1 /**************************************************************
     2     Problem: 2120
     3     User: xrdog
     4     Language: C++
     5     Result: Accepted
     6     Time:6712 ms
     7     Memory:24752 kb
     8 ****************************************************************/
     9  
    10 #include<iostream>
    11 #include<cstdio>
    12 #include<cmath>
    13 #include<algorithm>
    14 #include<cstdlib>
    15 #include<cstring>
    16 #include<vector>
    17 #define yyj(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout)
    18 #define llg long long
    19 #define maxn 1001000
    20 using namespace std;
    21 llg i,j,cnt,k,x,l,r,n,m,T,a[maxn],tim[maxn],ls[maxn],ans;
    22 char s[1000];
    23 int main()
    24 {
    25  // yyj("a");
    26   cin>>n>>m;
    27   for (i=1;i<=n;i++)
    28   {
    29       cin>>x;
    30       if (!ls[x]) ls[x]=++cnt; a[i]=ls[x];
    31   }
    32   while (m--)
    33   {
    34       scanf("%s%lld%lld",s,&l,&r);
    35       if (s[0]=='R')
    36       {
    37           if (!ls[r]) ls[r]=++cnt,a[l]=cnt;
    38           else a[l]=ls[r];
    39       }
    40       else
    41       {
    42           ans=0; T++;
    43           for (i=l;i<=r;i++)
    44               if (tim[a[i]]!=T) ans++,tim[a[i]]=T;
    45           printf("%lld
    ",ans);
    46       }
    47   }
    48   return 0;
    49 }

     

    本文作者:xrdog 作者博客:http://www.cnblogs.com/Dragon-Light/ 转载请注明出处,侵权必究,保留最终解释权!
  • 相关阅读:
    Codeforces Round #706 (Div. 2)
    Caddi Programming Contest 2021(AtCoder Beginner Contest 193)
    [ARC116] Deque Game
    Codeforces Round #721 (Div. 2)
    Codeforces Round #618 (Div. 1)
    Educational Codeforces Round 109 (Rated for Div. 2)
    [ABC201F] Insertion Sort
    AtCoder Regular Contest 119
    Codeforces Global Round 13
    Codeforces Round #673 (Div. 1)
  • 原文地址:https://www.cnblogs.com/Dragon-Light/p/5712367.html
Copyright © 2011-2022 走看看