cdoj 1256 昊昊爱运动 预处理

昊昊爱运动

Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others)

昊昊喜欢运动

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

舍友有QQ个问题

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

Input

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

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

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

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

Output

一共QQ行

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

Sample input and output

Sample Input Sample Output
5 3
1 2 3 2 2
3
1 4
2 4
1 5
3
2
3

Source

第七届ACM趣味程序设计竞赛第二场(正式赛)

思路:一眼不是离线树状数组,然后看到数据比较小,n*n*m超时;

   预处理n*n,Q*m可以水过;

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pi (4*atan(1.0))
const int N=2e3+10,M=4e6+10,inf=1e9+10;
int sum[N][N];
int a[N];
int main()
{
    int n,m,t;
    scanf("%d%d",&n,&m);
    for(int i=1; i<=n; i++)
        scanf("%d",&a[i]);
    for(int i=1; i<=n; i++)
    {
        for(t=1; t<=m; t++)
            sum[t][i]=sum[t][i-1];
        sum[a[i]][i]=sum[a[i]][i-1]+1;
    }
    int q;
    scanf("%d",&q);
    while(q--)
    {
        int l,r,ans=0;
        scanf("%d%d",&l,&r);
        for(int i=1;i<=m;i++)
        if(sum[i][r]-sum[i][l-1]>0)
        ans++;
        printf("%d\n",ans);
    }
    return 0;
}
时间: 2024-11-08 05:40:27

cdoj 1256 昊昊爱运动 预处理的相关文章

cdoj 1256 昊昊爱运动 预处理/前缀和

昊昊爱运动 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1256 Description 昊昊喜欢运动 他N天内会参加M种运动(每种运动用一个[1,m]的整数表示) 舍友有Q个问题 问昊昊第l天到第r天参加了多少种不同的运动 Input 输入两个数N, M (1≤N≤2000, 1≤M≤100); 输入N个数ai表示在第i天昊昊做了第ai类型的运动; 输入一个数Q(1≤Q≤

UESTC 1256 昊昊爱运动 Map

昊昊爱运动 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) 昊昊喜欢运动 他N天内会参加M种运动(每种运动用一个[1,m]的整数表示) 舍友有QQ个问题 问昊昊第l天到第r天参加了多少种不同的运动 Input 输入两个数N, M (1≤N≤2000, 1≤M≤100); 输入N个数ai表示在第i天昊昊做了第ai类型的运动; 输入一个数Q(1≤Q≤106); 输入Q行 每行两个数

CDOJ 1259 昊昊爱运动 II 线段树+bitset

昊昊爱运动 II 昊昊喜欢运动 他N天内会参加M种运动(每种运动用一个[1,m]的整数表示) 现在有Q个操作,操作描述如下 昊昊把第l天到第r天的运动全部换成了x(x∈[1,m]) 问昊昊第l天到第r天参加了多少种不同的运动 Input 输入两个数N, M (1≤N≤105, 1≤M≤100); 输入N个数ai(ai∈[1,m])表示在第i天昊昊做了第ai类型的运动; 输入一个数Q(1≤Q≤105); 输入Q行 每行描述以下两种操作 形如M l r x,表示昊昊把第l天到第r天的运动全部换成了x

CDOJ 1259 昊昊爱运动 II bitset+线段树

题目链接 昊昊喜欢运动 他N天内会参加M种运动(每种运动用一个[1,m]的整数表示) 现在有Q个操作,操作描述如下 昊昊把第l天到第r天的运动全部换成了x(x∈[1,m]) 问昊昊第l天到第r天参加了多少种不同的运动 Input 输入两个数N, M (1≤N≤105, 1≤M≤100); 输入N个数ai(ai∈[1,m])表示在第i天昊昊做了第ai类型的运动; 输入一个数Q(1≤Q≤105); 输入Q行 每行描述以下两种操作 形如M l r x,表示昊昊把第l天到第r天的运动全部换成了x(x∈[

UESTC-1259 昊昊爱运动 II

昊昊爱运动 II Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) 昊昊喜欢运动 他N天内会参加M种运动(每种运动用一个[1,m]的整数表示) 现在有Q个操作,操作描述如下 昊昊把第l天到第r天的运动全部换成了x(x∈[1,m]) 问昊昊第l天到第r天参加了多少种不同的运动 Input 输入两个数N, M (1≤N≤105, 1≤M≤100); 输入N个数ai(ai∈[1,m])

CDOJ 1256 二维前缀和处理

昊昊喜欢运动 他NN 天内会参加MM 种运动(每种运动用一个[1,m][1,m] 的整数表示) 舍友有QQ 个问题 问昊昊第ll 天到第rr 天参加了多少种不同的运动 Input 输入两个数NN , MM (1≤N≤20001≤N≤2000 , 1≤M≤1001≤M≤100 ); 输入NN 个数aiai 表示在第i天昊昊做了第aiai 类型的运动; 输入一个数QQ (1≤Q≤1061≤Q≤106 ); 输入QQ 行 每行两个数 ll , rr (1≤l≤r≤n1≤l≤r≤n ); Output

BZOJ 3704(昊昊的机油之GRST-维护构造贪心解)

3704: 昊昊的机油之GRST Time Limit: 10 Sec  Memory Limit: 1024 MB Submit: 47  Solved: 15 [Submit][Status] Description 昊昊有个好机油,他就是传说中的着力点.现在昊昊获得了一份长度为n的GRST牌(mod 4 意义下),打算作为送给好机油的生日礼物(不是在2月的么).但是,昊昊深知他的机油是个神犇,作为数字控的他,只会喜欢特定的序列.但是昊昊不怕,他可以使用一次菲亚特(他的机油最喜欢的大招),将

小鑫爱运动

题目描述 小鑫非常喜欢运动,有一次小鑫去参加110米栏的比赛,一共有10名比赛选手,小鑫是1号,由于跑的太专注,最后冲线的时候不知道自己是第几名,只知道每个人最后的成绩,聪明的你可不可以帮帮他? 输入 多组输入. 先输入一个10, 然后每组输入10个整数,代表10个选手的110米栏成绩m,代表1号到N号的N个选手的成绩m,m范围是(0 < m < 100). 输出 输出只有一行,代表小鑫最后的名次是多少. 因为小鑫长得比较丑,所以如果成绩相同的情况下,小鑫都会排在前面. 示例输入 10 2 5

[转]你所不知道的超级瘦腿运动——空中蹬自行车

转自:http://weibo.com/p/1001603808616690912493?from=page_100505_profile&wvr=6&mod=wenzhangmod 看似平淡无奇,实则大有文章.普通的蹬法1000个也没用,海龟版本的蹬法每天30个就可以修炼出绝世美腿.平坦小腹.并且有效改善X.O型腿.可惜啊,100个人里面99个半不会蹬,这么好的运动白白被埋没.这是海龟版空中蹬自行车的第二版,第一版海龟已经收到无数的反馈并放在了微博以激励大家,一切让事实说话,只要是文中指