zoukankan      html  css  js  c++  java
  • CDOJ 1256 二维前缀和处理

    昊昊喜欢运动

    NN 天内会参加MM 种运动(每种运动用一个[1,m][1,m] 的整数表示)

    舍友有QQ 个问题

    问昊昊第ll 天到第rr 天参加了多少种不同的运动

    Input

    输入两个数NN , MM (1N20001≤N≤2000 , 1M1001≤M≤100 );

    输入NN 个数aiai 表示在第i天昊昊做了第aiai 类型的运动;

    输入一个数QQ (1Q1061≤Q≤106 );

    输入QQ 行 每行两个数 ll , rr (1lrn1≤l≤r≤n );

    Output

    一共QQ 行

    每一行输出一个数 表示昊昊在第ll 天到第rr 天一共做了多少种活动

    Sample input and output

    Sample InputSample Output
    5 3
    1 2 3 2 2
    3
    1 4
    2 4
    1 5
    3
    2
    3

    Hint

    Source

    第七届ACM趣味程序设计竞赛第二场(正式赛)
     
    题意:询问任意区间内 参加活动的种类
     
    题解:二维前缀和 
            cout T
     1 #include<bits/stdc++.h>
     2 #define ll __int64
     3 #define mod 1e9+7
     4 #define PI acos(-1.0)
     5 #define bug(x) printf("%%%%%%%%%%%%%",x);
     6 using namespace std;
     7 int n,m;
     8 int a[2005];
     9 int mp[2005][105];
    10 int l,r;
    11 int q;
    12 int main()
    13 {
    14     scanf("%d %d",&n,&m);
    15     int exm=0;
    16     for(int i=1;i<=n;i++)
    17     {
    18         for(int j=1;j<=m;j++)
    19         {
    20             mp[i][j]=mp[i-1][j];
    21         }
    22         scanf("%d",&a[i]);
    23         mp[i][a[i]]++;
    24     }
    25     scanf("%d",&q);
    26     for(int i=1;i<=q;i++)
    27     {
    28         scanf("%d %d",&l,&r);
    29         int flag=0;
    30         for(int j=1;j<=m;j++)
    31         {
    32             if((mp[r][j]-mp[l-1][j])>0)
    33                 flag++;
    34         }
    35         printf("%d
    ",flag);
    36     }
    37 
    38     return 0;
    39 }
  • 相关阅读:
    qsort()的使用
    c语言不寻常的类型转换(类型提升)
    堆栈段的三个主要用途
    区分 声明与定义
    宏定义陷阱与typedef
    约瑟夫环解决方案
    线程中断测试
    Redis
    本地缓存
    tomcat优化
  • 原文地址:https://www.cnblogs.com/hsd-/p/5675060.html
Copyright © 2011-2022 走看看