只是写算法的话感觉还是c来的快
/**
输入描述:
输入: 第1行为n代表用户的个数 第2行为n个整数,第i个代表用户标号为i的用户对某类文章的喜好度
第3行为一个正整数q代表查询的组数 第4行到第(3+q)行,每行包含3个整数l,r,k代表一组查询,即标号为l<=i<=r的用户中对这类文章喜好值为k的用户的个数。
数据范围n <= 300000,q<=300000 k是整型
输出描述:
输出:一共q行,每行一个整数代表喜好值为k的用户的个数
输入例子1:
5
1 2 3 3 5
3
1 2 1
2 4 5
3 5 3
输出例子1:
1
0
2
例子说明1:
样例解释:
有5个用户,喜好值为分别为1、2、3、3、5,
第一组询问对于标号[1,2]的用户喜好值为1的用户的个数是1
第二组询问对于标号[2,4]的用户喜好值为5的用户的个数是0
第三组询问对于标号[3,5]的用户喜好值为3的用户的个数是2
**/
#include <stdio.h>
#include <stdlib.h>
int main()
{
//载入数据
int user_num=0;
int i=0;
scanf("%d",&user_num);
int prefer[300000];
for(i=0; i<user_num; i++)
{
scanf("%d",&prefer[i]);
}
int group_num=0;
int group[300000][3]={0};
int j =0;
int k=0;
int num=0;
scanf("%d",&group_num);
for(i=0; i<group_num; i++)
{
num = 0;
for(j=0; j<3; j++)
{
scanf("%d",&group[i][j]);
}
for(k=group[i][0]-1; k<group[i][1]; k++)
{
if(prefer[k]==group[i][2])
{
num+=1;
}
//printf("#k%d:%d**%d\n",k,prefer[k],group[i][2]);
}
printf("%d\n",num);
}
return 0;
}