【题目链接】

ybt 1233:接水问题
ybt 1950:【10NOIP普及组】接水问题
OpenJudge NOI 1.9 15:接水问题
洛谷 P1190 [NOIP2010 普及组] 接水问题

【题目考点】

1. 模拟

【解题思路】

接水顺序确定,接水规则确定,整个接水流程就已经确定了,不需要通过算法决定任何事情,这是一个考察模拟的题。
设数组time,time[i]表示第i个水龙头可以使用的时刻。
time数组中最小值的下标为mni,那么当前情况下一定是第mni号水龙头先给上一个人接完水后空了出来,下一个人就该在第mni号水龙头接水。
假设第i人要接水,取time数组中最小值的下标为mni,那么第x人就该在第mni个水龙头接水,第mni号水龙头的可以使用时刻增加wiw_iwi​,即time[mni] += w[i];
遍历每个人,确定每个人接水的水龙头位置,而后遍历time数组,取其中的最大值,即为所有同学都接完水的时刻。
至于求最小值的过程,有两种方法:

解法1:使用循环求最小值

整体复杂度为O(nm)O(nm)O(nm)

解法2:借助优先队列(堆)求最小值

整体复杂度为O(nlogm)O(nlogm)O(nlogm)。

【题解代码】

解法1:循环求最小值

#include <bits/stdc++.h>
using namespace std;
int main()
{int n, m, w[10005], time[105] = {}, mx = 0;//time[i]:在第i个水龙头接水结束的时间 cin >> n >> m;for(int i = 1; i <= n; ++i)cin >> w[i];for(int i = 1; i <= n; ++i){int mni = 1;//time中最小值的下标 for(int j = 1; j <= m; ++j)if(time[j] < time[mni])mni = j;time[mni] += w[i];//第mni水龙头接水结束时间增加w[i] }for(int i = 1; i <= n; ++i)mx = max(mx, time[i]);cout << mx;return 0;
}

解法2:使用优先队列求最小值

#include <bits/stdc++.h>
using namespace std;
struct Pair
{int n, t;//n:水龙头编号 t:结束时间Pair(){}Pair(int a, int b):n(a),t(b){}bool operator < (const Pair &b) const{return b.t < t;//结束时间早更优先 }
};
int main()
{priority_queue<Pair> pq;int n, m, w[10005], mni, mx = 0;cin >> n >> m;for(int i = 1; i <= n; ++i)cin >> w[i];for(int i = 1; i <= m; ++i)pq.push(Pair(i, w[i]));for(int i = m+1; i <= n; ++i)//已知m<=n {int mni = pq.top().n, t = pq.top().t;pq.pop();pq.push(Pair(mni, t + w[i]));//第mni水龙头接水结束时间增加w[i]}while(pq.empty() == false){mx = max(mx, pq.top().t);pq.pop();}cout << mx;return 0;
}

信息学奥赛一本通 1233:接水问题 | 1950:【10NOIP普及组】接水问题 | OpenJudge NOI 1.9 15 | 洛谷 P1190 [NOIP2010 普及组] 接水问题相关推荐

  1. 信息学奥赛一本通 1173:阶乘和 | OpenJudge NOI 1.6 15 | 洛谷 P1009 [NOIP1998 普及组] 阶乘之和

    [题目链接] ybt 1173:阶乘和 注:一本通上这题,应该把n≤50n\le50n≤50当做n≤100n\le100n≤100来看 OpenJudge NOI 1.6 15:阶乘和 洛谷 P100 ...

  2. 信息学奥赛一本通 1239:统计数字 | 1847:【07NOIP提高组】统计数字 | OpenJudge NOI 2.4 7909 | 洛谷 P1097 [NOIP2007 提高组] 统计数字

    [题目链接] ybt 1239:统计数字 ybt 1847:[07NOIP提高组]统计数字 一本通中限制不许使用STL,那么引入头文件不能写<bits/stdc++.h>,只能写<i ...

  3. 信息学奥赛一本通 1180 | 1946:【09NOIP普及组】分数线划定 | OpenJudge NOI 1.10 05 | 洛谷 P1068 [NOIP2009 普及组] 分数线划定

    [题目链接] ybt 1180:分数线划定 ybt 1946:[09NOIP普及组]分数线划定 OpenJudge NOI 1.10 05:分数线划定 洛谷 P1068 [NOIP2009 普及组] ...

  4. 信息学奥赛一本通 1118:铺地毯 | 1863:【11NOIP提高组】铺地毯 | OpenJudge NOI 1.9 14 | 洛谷 P1003 [NOIP2011 提高组] 铺地毯

    [题目链接] ybt 1118:铺地毯 ybt 1863:[11NOIP提高组]铺地毯 OpenJudge NOI 1.9 14:铺地毯 洛谷 P1003 [NOIP2011 提高组] 铺地毯 [题目 ...

  5. 信息学奥赛一本通 1089:数字反转 | 1953:【11NOIP普及组】数字反转 | OpenJudge NOI 1.5 29 | 洛谷 P1307 [NOIP2011 普及组] 数字反转

    [题目链接] ybt 1089:数字反转 ybt 1953:[11NOIP普及组]数字反转 OpenJudge NOI 1.5 29:数字反转 洛谷 P1307 [NOIP2011 普及组] 数字反转 ...

  6. 信息学奥赛一本通 1098:质因数分解 | 1957:【12NOIP普及组】质因数分解 | OpenJudge NOI 1.5 43 | 洛谷 P1075 [NOIP2012 普及组] 质因数分解

    [题目链接] ybt 1098:质因数分解 ybt 1957:[12NOIP普及组]质因数分解 OpenJudge NOI 1.5 43:质因数分解 洛谷 P1075 [NOIP2012 普及组] 质 ...

  7. 信息学奥赛一本通 1179:奖学金 | 1938:【07NOIP普及组】奖学金 | OpenJudge NOI 1.10 04 | 洛谷 P1093 [NOIP2007 普及组] 奖学金

    [题目链接] ybt 1179:奖学金 ybt 1938:[07NOIP普及组]奖学金 OpenJudge NOI 1.10 04:奖学金 洛谷 P1093 [NOIP2007 普及组] 奖学金 [题 ...

  8. 信息学奥赛一本通 1184 | 1934:【06NOIP普及组】明明的随机数 | OpenJudge NOI 1.10 09 | 洛谷 P1059 [NOIP2006 普及组] 明明的随机数

    [题目链接] ybt 1184:明明的随机数 ybt 1934:[06NOIP普及组]明明的随机数 OpenJudge NOI 1.10 09:明明的随机数 洛谷 P1059 [NOIP2006 普及 ...

  9. 信息学奥赛一本通 1958:【12NOIP普及组】寻宝 | OpenJudge NOI 1.12 06 | 洛谷 P1076 [NOIP2012 普及组] 寻宝

    [题目链接] ybt 1958:[12NOIP普及组]寻宝 洛谷 P1076 [NOIP2012 普及组] 寻宝 OpenJudge NOI 1.12 06:寻宝 [题目考点] 1. 模拟 2. 循环 ...

最新文章

  1. trouble identification check tree
  2. YTU 2412: 帮警长数一数【循环、分支简单综合】
  3. maven jacoco_使用JaCoCo Maven插件为单元和集成测试创建代码覆盖率报告
  4. 人工智能常用 API
  5. 113. 路径总和 II golang
  6. python管理数据库的库_Python中管理数据库
  7. ESFramework Demo -- 简单的网络硬盘Demo
  8. thymeleaf 默认选中下拉框(select option)
  9. python实现基于selenium的天猫淘宝秒杀,支持定金商品,自动付款
  10. 爬虫小练(刷访问量)(python+requests(headers+proxy)+Queue+threading)
  11. 新昌中学2021高考成绩查询,新昌中学教育集团向2020年参加高考被第一批录取的553名学子表示热烈祝贺...
  12. [经典论文分享] Decision Transformer: Reinforcement Learning via Sequence Modeling
  13. 海洋地球物理探测方法综述(一)地震和重磁
  14. c语言实现陷波器算法,50Hz数字陷波器的设计.doc
  15. OneNET物联网平台介绍
  16. python能以文本和二进制方式处理文件_Python文件处理之文件写入方式与写缓存(三)...
  17. 非常棒的开源协同办公OA项目,收藏了!
  18. zt:寻找Nina Reiser的悬赏已增至2万5千美元
  19. Cookie 欺骗——漏洞
  20. 百度关键词推广选词技巧,你了解多少?

热门文章

  1. 插件架构的原理及实现探讨
  2. 代码覆盖度-NCover监控IIS和exe,结果分析
  3. 中国搜 为人民服务 整合本地搜索引擎 出差旅游搜索国外国内当地服务网站 快速进行本地资源查找利用...
  4. 首次公开,用了三年的 pandas 速查表!
  5. 盘点数据治理的6个价值
  6. 终于有人把赌徒谬误讲明白了
  7. 数学不好,能学好机器学习吗?
  8. 中国离婚大数据:离婚/结婚比东北三省和四大直辖市霸榜
  9. 创业者ALL IN区块链的5条建议
  10. 你以为熬个3年工作经验就是Java高级开发了?