题解:P11043 [蓝桥杯 2024 省 Java B] 分布式队列

· · 题解

题目传送门

由于全程与存入数字都无关,所以可以只记录每个节点的下标。

add element:节点 0 总长 +1,并且对应下标的个数 +1;
sync follower_id:节点 follower\_id 总长 +1,对应下标 +1(即当前节点总长);
query:查询目前所有下标有哪些数是每个节点都有的即可。

import java.util.Scanner;

public class Main {
    static int[] now = new int[2007];
    static int cnt = 0;
    static int[] p = new int[20];
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        String op;
        while (scanner.hasNext()) {
            op = scanner.next();
            if (op.equals("query")) {
                int ans = 0;
                for (int i = 1; i <= cnt; ++i) {
                    if (now[i] == n) ans++;
                }
                System.out.println(ans);
            } else if (op.equals("add")) {
                int x = scanner.nextInt();
                now[++cnt]++;
            } else if (op.equals("sync")) {
                int x = scanner.nextInt();
                now[++p[x+1]]++;
            }
        }scanner.close();
    }
}