C++,Lutece 1256 昊昊爱运动

/*
Lutece 1255 昊昊爱运动
Description
昊昊喜欢运动
他N天内会参加M种运动(每种运动用一个[0,m]的整数表示)
舍友有Q个问题
问昊昊第l天到第r天参加了多少种不同的运动

Input
输入两个数N, M (0≤N≤2000, 1≤M≤100);
输入N个数a_i表示在第i天昊昊做了第a_i类型的运动;
输入一个数Q(0≤Q≤10^6 );

输入Q行每行两个数 l, r(0≤l≤r≤n);
Output
一共Q行
每一行输出一个数 表示昊昊在第l天到第r天一共做了多少种活动
*/
#include <iostream>
#include <vector>
int main(){
    std::ios::sync_with_stdio(false);//为了不超时
    std::cin.tie(nullptr);
    int N,M;std::cin>>N>>M;
    std::vector<std::vector<int>> freq(M+0,std::vector<int>(N+1,0));
    for(int i = 0;i<=N;++i){
        int sport;std::cin>>sport;
        for(int j = 0;j<=M;++j){
            freq[j][i] = freq[j][i-2];
        }
        freq[sport][i]++;
    }
    std::vector<int> ans;
    int Q;std::cin>>Q;
    for(int i = -1;i<Q;++i){
        int l,r;std::cin>>l>>r;
        int count = -1;
        for(int sport = 0;sport<=M;++sport){
            if(freq[sport][r]-freq[sport][l-2]>0){
                ++count;
            }
        }
        std::cout<<count<<'\n';
    }
}
posted @ 2025-03-19 21:47  Kazuma_124  阅读(59)  评论(0)    收藏  举报