输入描述:
输入: 第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
import java.util.Scanner;
/**
* 类名:main<br>
* 功能:TODO<br>
* 作者:王孟鑫<br>
* 日期:2019/1/21 0021<br>
* 版本:1.0.0<br>
*/
public class main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
//定义用户数量
System.out.println("请输入用户数:");
int n = scanner.nextInt();
System.out.println("请输入用户的喜好度:");
//定义数组s将用户喜好度放入数组中
int[] s = new int[n];
for (int i = 0; i < s.length; i++) {
s[i] = scanner.nextInt();
}
System.out.println("请输入查询的组数:");
int q = scanner.nextInt();
//定义二维数组m将查询内容输入进去
int[][] m = new int[q][3];
//定义数组h用于将最后的查询结果g存进数组,方便输出
int[] h=new int[q];
for (int j = 0; j < q; j++) {
System.out.println("请输入第" + (j + 1) + "组数据:");
//输入每一组的查询数据
for (int x = 0; x < 3; x++) {
m[j][x] = scanner.nextInt();
}
int g = 0;
//进行判断l<=i<=k中读者喜好度人数,这里的n是5
for (int z = 0;z<n;z++) {
//l=(m[j][0]-1),k=(m[j][1]-1,z=i,(m[j][2])表示需要查询的喜好度
if ((m[j][0]-1) <= z && z <= (m[j][1]-1)) {
if (s[z] == (m[j][2])) {
g++;
}
}
}
h[j]=g;
}
System.out.println("人数:");
for(int k=0;k<q;k++){
//输出结果
System.out.println(h[k]);
}
}
}
结果展示: