标准答案带注释

大师  •  3个月前


// C++ code // Type anything you want and press Tab to accept auto-complete suggestions

include

using namespace std;

int s[11000], ans; // 创建一个数组s来存储每个同学的接水量,ans变量用来存储总时间。

int main() {

int n, m; // n为学生人数,m为水龙头数量
cin >> n >> m; // 从输入读取n和m的值

for (int i = 1; i <= n; i++) { // 从输入读取每个学生的接水量
    cin >> s[i];
}

int t = m + 1; // t初始为m + 1,表示下一个将要接水的同学的索引,从m + 1开始,因为前m个同学已经在接水。

// 当t小于等于n + m时,继续循环。由于实际上,当所有的同学都接完水时,这个条件会使得循环结束。
while (t <= n + m) {
    for (int i = 1; i <= m; i++) { // 遍历已经在接水的学生
        s[i]--; // 每个正在接水的同学的接水量减少1(因为每秒每个龙头供水1单位)
        
        if (s[i] == 0) { // 如果该同学的接水量已经完成
            s[i] = s[t]; // 让这个龙头接管t位置同学的接水量
            t++; // 移动到下一个排队的同学
        }
    }

    ans++; // 每完成一轮水龙头的工作,即记录时间增加1秒
}

cout << ans; // 输出总用水时间
return 0; // 程序结束

}


评论:

标准不了一点啊兄弟


☀️☃️☃️☃️☀️  •  3个月前

哈哈


大师  •  3个月前

请先登录,才能进行评论