题目描述

学校里有一个水房,水房里一共装有 m 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为 1。

现在有 n 名同学准备接水,他们的初始接水顺序已经确定。将这些同学按接水顺序从 1到 n 编号,i 号同学的接水量为 wi。接水开始时,1 到 m 号同学各占一个水龙头,并同时打开水龙头接水。当其中某名同学 j 完成其接水量要求 wj后,下一名排队等候接水的同学 k马上接替 j 同学的位置开始接水。这个换人的过程是瞬间完成的,且没有任何水的浪费。即j 同学第 x 秒结束时完成接水,则 k 同学第 x+1 秒立刻开始接水。若当前接水人数 n’不足 m,则只有 n’个龙头供水,其它 m−n’个龙头关闭。

现在给出 n 名同学的接水量,按照上述接水规则,问所有同学都接完水需要多少秒。

输入输出格式

输入格式:

输入文件名为 water.in。

第 1 行 2 个整数 n 和 m,用一个空格隔开,分别表示接水人数和龙头个数。

第 2 行 n 个整数 w1、w2、……、wn,每两个整数之间用一个空格隔开,wi表示 i 号同

学的接水量。

输出格式:

输出文件名为 water.out。

输出只有一行,1 个整数,表示接水所需的总时间。

输入输出样例

输入样例#1: 复制

【输入样例1】
5 3
4 4 1 2 1
【输入样例2】
8 4
23 71 87 32 70 93 80 76 

输出样例#1: 复制

【输出样例1】
4
【输出样例2】
163

说明

【输入输出样例 1 说明】

第 1 秒,3 人接水。第 1 秒结束时,1、2、3 号同学每人的已接水量为 1,3 号同学接完

水,4 号同学接替 3 号同学开始接水。

第 2 秒,3 人接水。第 2 秒结束时,1、2 号同学每人的已接水量为 2,4 号同学的已接

水量为 1。

第 3 秒,3 人接水。第 3 秒结束时,1、2 号同学每人的已接水量为 3,4 号同学的已接

水量为 2。4 号同学接完水,5 号同学接替 4 号同学开始接水。

第 4 秒,3 人接水。第 4 秒结束时,1、2 号同学每人的已接水量为 4,5 号同学的已接

水量为 1。1、2、5 号同学接完水,即所有人完成接水。

总接水时间为 4 秒。

【数据范围】

1≤n≤10000,1≤m≤100 且 m≤n;

1≤wi≤100。

一道十分垃圾的纯模拟;

#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
int n,m,a[10110],js[11010],maxa,g[11010],count;
long long i;
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
if(a[i]>maxa)maxa=a[i];
}
if(n<m){cout<<maxa;return 0;}
for(int i=1;i<=m;i++)g[i]=i;
maxa=g[m];
while(count<n){
for(int j=1;j<=m;j++){
js[g[j]]++;
if(js[g[j]]==a[g[j]]){count++;g[j]=maxa+1;maxa=g[j];}
}
i++;
}
cout<<i;
}

转载于:https://www.cnblogs.com/linzeli/p/7749641.html

NOIP2010排队接水相关推荐

  1. P1223 排队接水

    题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小. 输入格式 输入文件共两行,第一行为n:第二行分别表示第1个人到第 ...

  2. 洛谷——P1223 排队接水

    题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小. 输入输出格式 输入格式: 输入文件共两行,第一行为n:第二行分别 ...

  3. 17行代码AC_51Nod - 2133 排队接水(贪心)

    励志用少的代码做高效表达 贪心算法模板题 贪心算法简单来讲即自顶向下,求解出每个子最优解,且每个子问题不会对下一个问题产生影响 题意:n个人排队接水,问如何排序才能使总等待时间最短,(正在接水的人和没 ...

  4. 信息学奥赛一本通 1319:【例6.1】排队接水 | 洛谷 P1223 排队接水

    [题目链接] ybt 1319:[例6.1]排队接水 洛谷 P1223 排队接水 [题目考点] 1. 贪心 2. 贪心选择性质的证明 要想证明贪心选择可以得到最优解,只需要证明最优解包含每一次的贪心选 ...

  5. 信息学奥赛一本通(1319:【例6.1】排队接水)

    1319:[例6.1]排队接水 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 17332     通过数: 7890 [题目描述] 有n个人在一个水龙头前排队接水 ...

  6. 排队接水(信息学奥赛一本通-T1319)

    [题目描述] 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小. [输入] 共两行,第一行为n(1≤n≤1000):第二行分别 ...

  7. 排队接水(洛谷-P1223)

    题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小. 输入输出格式 输入格式: 输入共两行,第一行为n:第二行分别表示 ...

  8. 算法提高 排队打水问题 无聊刷个水题

    算法提高 排队打水问题 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 有n个人排队到r个水龙头去打水,他们装满水桶的时间t1.t2---..tn为整数且各不相等,应如何安排他们的打 ...

  9. AcWing 913. 排队打水 (排序不等式)

    AcWing 913. 排队打水 有 n n n 个人排队到 1 1 1 个水龙头处打水,第 i i i 个人装满水桶所需的时间是 t i t_{i} ti​,请问如何安排他们的打水顺序才能使所有人的 ...

最新文章

  1. c#中对Cross-thread operation not valid错误的处理办法
  2. ASP 投票系统所用技术小结
  3. p1605迷宫(DFS应该注意的问题)
  4. vue实现鼠标悬浮 显示全部内容
  5. mysql分表那些事儿
  6. 分布式事务是啥?常用的解决方案有哪些?
  7. 一个html中同时引入js和ts,《使用require在ts里引入js》
  8. 4.分布式服务架构:原理、设计与实战 --- 大数据日志系统的构建
  9. 大数据的4v特征及思考_大数据智能下数据脱敏的思考
  10. pcl 使用gpu计算法向量_PCL点云特征描述与提取(1)
  11. 3.MQTT paho
  12. 固高GTS控制卡功能介绍2:NewWatch功能
  13. 国内外知名PT站点最全汇总,含各站内截图及站点链接【转载】
  14. 从硅谷“神秘”孵化器,看中美医疗创新差别在哪里
  15. 线性代数---之基向量
  16. 去掉右键烦人的多余菜单项
  17. 深藏不漏!.cc域名接连高价成交!最高突破6位数!
  18. 《2023游戏行业热点趋势报告》|Party Game游戏成为新趋势,备受消费者瞩目
  19. C# 重写(override)
  20. oracle:sql 判断时间段重叠

热门文章

  1. python pyyaml模块使用示例:读取yaml文件内容
  2. oracle jvm规范官网下载及相关书籍推荐
  3. arthas类和类加载器相关命令:dump、classloader
  4. Hadoop sqoop数据导入导出工具安装
  5. Python Django手写分页代码
  6. 【Java面试题视频讲解】合并相同索引的值
  7. 【视频】vue组件之$emit父子组件间值的传递
  8. Java中的LongAdder和AtomicLong有什么区别?
  9. 天翼云centos7.5系统挂载磁盘
  10. Qt中使用线程的几种方式及区别