bzoj 4397: [Usaco2015 dec]Breed Counting 乱搞

来源:互联网 发布:中信建投网上交易软件 编辑:程序博客网 时间:2024/06/10 16:09

题意

给定一个长度为N的序列,每个位置上的数只可能是1,2,3中的一种。
有Q次询问,每次给定两个数a,b,请分别输出区间[a,b]里数字1,2,3的个数。
N,Q<=100000

分析

不是很懂为什么这种题会出现在bzoj里面。。。

代码

#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;const int N=100005;int n,m,s1[N],s2[N],s3[N];int main(){    scanf("%d%d",&n,&m);    for (int i=1;i<=n;i++)    {        int x;        scanf("%d",&x);        s1[i]=s1[i-1];s2[i]=s2[i-1];s3[i]=s3[i-1];        if (x==1) s1[i]++;        else if (x==2) s2[i]++;        else s3[i]++;    }    while (m--)    {        int l,r;        scanf("%d%d",&l,&r);        printf("%d %d %d\n",s1[r]-s1[l-1],s2[r]-s2[l-1],s3[r]-s3[l-1]);    }    return 0;}
阅读全文
0 0
原创粉丝点击