题目名称:接水问题

题目来源

[洛谷P1190] (https://www.luogu.org/problemnew/show/P1190)​

题目描述

学校里有一个水房,水房里一共有\(m\)个龙头供学生们打开水,每个水龙头每秒的供水量相等,均为\(1\)

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

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

基本思路

正常人一看到题目,就会情不自禁的喊出:这不是傻*题吗???

然额,我却与很多小伙伴犯了同样的错误

题目中的话一定要仔细读,因为我就是没有看见“他们的初始接水顺序已经确定”这句活,导致考虑了半天的贪心思想,结果发现这是一道彻彻底底的模拟大水题

多说无益,思路就用一句话描述吧:模拟\(1-m\)这\(m\)个水龙头,每次把所对应的接水时间减一来模拟接水的过程,同时需要的时间加一(剩下的都在代码里啦!

代码实现

#include<cstdio>
#include<iostream> using namespace std; int m,n;
int w[10010];//w[i]表示编号为i的同学所需的接水时间
int mi;//表示所需时间(分钟) int main()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;++i) scanf("%d",&w[i]);
int now=m+1;//now表示若当前同学接完了水,下一个接水的同学的编号
while(now<=m+n)//now的值最大为m+n
{
for(int i=1;i<=m;++i)
{
w[i]--;
if(w[i]==0) {w[i]=w[now]; now++;}
}
mi++;
}
printf("%d",mi);
return 0;//最后别忘记加上"return 0;"
}

总结

对于这道题,我只想说,一定要审好题,不要漏掉题目中的关键信息,我已经因为这一点错过好多次了,希望能够早日养成仔细审题的好习惯!

还有,本蒟蒻从今往后就要下定决心学习MD啦,这是我第一篇用MD写的博客呦qwq

洛谷P1190 接水问题的更多相关文章

  1. 洛谷——P1190 接水问题

    P1190 接水问题 题目描述 学校里有一个水房,水房里一共装有 m 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为 1. 现在有 n 名同学准备接水,他们的初始接水顺序已经确定.将这些同学 ...

  2. 洛谷 P1190 接水问题 题解

    P1190 接水问题 题目描述 学校里有一个水房,水房里一共装有 \(m\) 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为1. 现在有 \(n\) 名同学准备接水,他们的初始接水顺序已经确 ...

  3. 洛谷—— P1190 接水问题

    https://www.luogu.org/problem/show?pid=1190#sub 题目描述 学校里有一个水房,水房里一共装有 m 个龙头可供同学们打开水,每个龙头每秒钟的 供水量相等,均 ...

  4. 【洛谷p1190】接水问题

    接水问题[题目链接] 咱也不知道为啥咱就是想写博客emmm 尽管这个题是2010年的普及组但是我太菜了并不会写emm 其实感觉这道题是纯纯正正的大模拟: 算法标签中的贪心是没有意义的啊?? SOLUT ...

  5. [洛谷U22157]刷水题(数位dp)(hash)

    题目背景 做正经题是不可能做正经题的,这辈子都不可能做正经题的,毒瘤题又不会做毒瘤题,就是水题这种东西,才维持了蒟蒻的信心: 题目描述 这里有N+1 道水题,编号分别为0 ~N+1 ,每道水题都有它自 ...

  6. AC日记——铺地毯 洛谷 P1003(水水水水水~)

    题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺序平行于 ...

  7. [洛谷P4626]一道水题 II

    题目大意:求$lcm(1,2,3,\cdots,n)\pmod{100000007}$,$n\leqslant10^8$ 题解:先线性筛出质数,然后求每个质数最多出现的次数,可以用$\log_in$来 ...

  8. Mychael原创题 洛谷T23923 Mychaelの水题 【题解】

    原题链接 题目大意: 有来自三个地区的人各a,b,c位,他们排成了一排.请问有多少种不同类型的排法,使得相邻的人都来自不同的地区 \(a,b,c<=200\) 答案取模 题解 弱弱的标程解法 设 ...

  9. 洛谷P1540 机器翻译 水题 模拟

    注意一下细节,尤其是更新minv时不要更新错. Code: #include<vector> #include<iostream> #include<cstdio> ...

随机推荐

  1. 090、ELK完成部署和使用 (2019-05-13 周二)

    参考https://www.cnblogs.com/CloudMan6/p/7787870.html   上节我们已经部署了容器化的ELK,本节我们学习如何将日志导入ELK并进行图形化展示.   几乎 ...

  2. 运维LVS-NAT模式理解

    一.LVS-NAT模式的工作原理这个是通过网络地址转换的方法来实现调度的.首先调度器(LB)接收到客户的请求数据包时(请求的目的IP为VIP),根据调度算法决定将请求发送给哪个 后端的真实服务器(RS ...

  3. Scala学习笔记(3)

    数组 ----------------------------------- 0.若长度固定则用Array,若长度可能变化则使用ArrayBuffer 1.提供初始值的时候不要使用new. 2.用() ...

  4. git 本地tag和远程tag对应不上 vscode里pull不下代码

    vscode拉取代码是用  git pull --tags origin saas-xxx > git pull --tags origin saas-base From 172.16.0.xx ...

  5. JS 一位数左边补零

  6. UIWebView与JS的交互

    IOS-的UIWebView UIWebVew是ios开发中较为常用的一个控件.其可以打开网页,加载html,打开文档等.当我们在开发中需要用到一些显示页面时,UIWebView是一个很好的选择. 创 ...

  7. 作为测试人员,不能不懂的adb命令和操作

    刚从web转到app测试,很多知识需要补充,记录一下   1.概念 其实我们口中所讲的adb是个泛指,这其中有两个工具——Fastboot和ADB   fastboot 快速启动,usb链接数据线的一 ...

  8. mybatis返回map结果集

    今天突发奇想,想用mybatis返回一个map结果集,结果我就整了一下午,不过终于解决了 1.如果你确定返回的数据只有一条,你可以这样整 xml中: <select id="searc ...

  9. token和sign

    前言 在app开放接口api的设计中,避免不了的就是安全性问题,因为大多数接口涉及到用户的个人信息以及一些敏感的数据,所以对这些接口需要进行身份的认证,那么这就需要用户提供一些信息,比如用户名密码等, ...

  10. [易学易懂系列|rustlang语言|零基础|快速入门|(2)|VSCODE配置]

    我们今天来配置下vscode+rust. vscode开发rust很方便.但配置有点坑,我们都认为vscode很简单,很完善. 但这里很多同学也出现不少问题. 我们在这里简单记录下win7下配置的过程 ...