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

· · 题解

题目大意

在主节点的每个元素中,有多少元素被所有的副节点同步了。

该怎么做呢

每个副节点都是按顺序从主节点中同步的,所以同步多的肯定已经同步了比他同步少的所有元素。我们只需要求同步最少的节点同步了多少元素就可以了。

对于每个add,因为不考虑同步了什么元素,所以不管。

对于每个sync,题目数据保证执行同步操作时,follower\_id 号副节点一定缺失元素,所以每个副节点肯定会同步一个元素,直接让副节点长度增加 1。

对于每个query,输出长度最短的副节点的长度就可以了。

#include<bits/stdc++.h>
using namespace std;

long long query[50],n,x,mi;
string op;

int main(){
    cin>>n;
    while(cin>>op){
        if(op=="add"){
            cin>>x;
        }else if(op=="query"){
            cout<<*min_element(query+1,query+n)<<endl;
        }else{
            cin>>x;
            query[x]++;
        }
    }
    return 0;
}

输入没有告诉你多少行,记得用while。

或许是没有压行的最短的代码?