首页 > 试题广场 >

排队选人

[编程题]排队选人
  • 热度指数:1483 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小D是一名老师,他想选出一些同学参加一个团体比赛。
总共有n个同学,每个同学有一个能力值x和一个合作值y,小D将这些同学排成一排。
选人的规则如下:小D将选择一排中连续的k个同学参加比赛,而且为了保证比赛成绩,这k个同学的能力值不能小于a,合作值不能小于b。小D想知道总共有多少种可能的选人方案。

输入描述:
第一行四个正整数n,k,a,b。
第二行n个通过空格隔开的正整数表示一排n个同学的能力值。
第二行n个通过空格隔开的正整数表示一排n个同学的合作值。

n <= 80000,
保证k<=n且x,y,a,b<=100000。


输出描述:
输出一个非负整数表示选人方案数。
示例1

输入

10 2 2 4
2 2 9 1 8 1 6 1 7 7
4 8 5 1 9 4 1 3 9 4

输出

3

说明

有选择第1,2两个人,第2,3两个人,第9,10两个人三种方案。

备注:

public static void main(String[] args) {
    Scanner sc=new Scanner(System.in); int n = sc.nextInt(); int k=sc.nextInt(); int a = sc.nextInt(); int b= sc.nextInt(); int[] as=new int[n]; int[] bs=new int[n]; int sum=0; for (int i=0;i<n;i++){
        as[i]=sc.nextInt();
    } for (int i=0;i<n;i++){
        bs[i]=sc.nextInt();
    } for (int i=0;i<=n-k;i++){ int lag=0; for(int j=i;j<k+i;j++){ if (as[j]<a||bs[j]<b){ break;
            }else {
                lag++;
            }
        } if (lag==k){
            sum++;
        }
    }
    System.out.println(sum);

}
发表于 2025-09-22 14:05:03 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int k = in.nextInt();
        int a = in.nextInt();
        int b = in.nextInt();
        int[] arrX = new int[n];
        int[] arrY = new int[n];
        for (int i = 0; i < n; i++) {
            arrX[i] = in.nextInt();
        }
        for (int i = 0; i < n; i++) {
            arrY[i] = in.nextInt();
        }

        int count = 0;

        int [] pre = new int[n+1];
        for(int i=1;i<=n;i++){
            if (arrX[i-1] >= a && arrY[i-1] >= b) {
                pre[i]=pre[i-1]+1;
            }else{
                pre[i]=pre[i-1];
            }
        }
        for(int i=k;i<=n;i++){
            if(pre[i]-pre[i-k]==k){
                count++;
            }
        }
        System.out.println(count);
    }
}

发表于 2025-09-20 15:28:53 回复(0)