[UESTC 1256]昊昊爱运动

来源:互联网 发布:java培训出来找工作难 编辑:程序博客网 时间:2024/05/22 04:57

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

输入:
输入两个数N, M (1≤N≤2000, 1≤M≤100);
输入N个数ai表示在第i天昊昊做了第ai类型的运动;
输入一个数Q(1≤Q≤10^6)
输入Q行 每行两个数 l, r(1≤l≤r≤n)

输出:
一共Q行
每一行输出一个数 表示昊昊在第l天到第r天一共做了多少种活动

样例输入:

5 31 2 3 2 231 42 41 5

样例输出:

323

题解:由于Q过大,所以我们决定用N^2的时间进行预处理并保存所有的答案,回答只需要O(1)就好了。

代码:

#include<cstring>#include<cstdlib>#include<cstdio>#include<iostream>#include<algorithm>#define LiangJiaJun mainusing namespace std;int mp[2004][2004],n,q,m,d[2004];bool g[2004];int LiangJiaJun(){    scanf("%d%d",&n,&m);    for(int i=1;i<=n;i++)scanf("%d",&d[i]);    for(int i=1;i<=n;i++){        memset(g,0,sizeof(g));        int ans=0;        for(int j=i;j<=n;j++){            if(!g[d[j]])g[d[j]]=1,++ans;            mp[i][j]=ans;        }    }    scanf("%d",&q);    while(q--){        int l,r;scanf("%d%d",&l,&r);        printf("%d\n",mp[l][r]);    }    return 0;}

上次写题已经是好久之前了,手有点生,写个简单题。。

0 0
原创粉丝点击