题目名称:接水问题

题目来源

[洛谷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. C++中如何实现split的效果?

    C++中如何实现split的效果? 和Python等语言不同,C++的string类没有内置split函数,这对于实际应用中要经常分割字符串的情况非常不方便.有很多种方法来处理,这里讲一种比较方(to ...

  2. 094、Swarm 中最重要的概念(Swarm01)

    参考https://www.cnblogs.com/CloudMan6/p/7845365.html   从主机层面来看,Docker Swarm 管理的是 Docker Host 集群.所以先来讨论 ...

  3. MySql 5.7关键字和保留字-附表

    现在使用navicat图形界面或者Hibernate做映射生成表的时候,渐渐的会忽视掉关键字这个问题,而后续也会不断的产生错误提示,一遍遍的查询代码无果,甚至开始怀疑人生,但是其实很多情况下只是使用了 ...

  4. mybatis一对一关联关系映射

    mybatis一对一关联关系映射 在关联关系中,有一对一,一对多,多对多三种关联关系. 一对一关系:在操作上,任意一方引入对方的主键作为外键. 一对多关系:在"多"的一方添加&qu ...

  5. express-handlebars

    https://www.npmjs.com/package/express-handlebars

  6. 在浏览器输入url,发生了什么?BSC结构图(百度搜索关键字发生了什么?)

    服务器---------->软件(客户端) 百度搜索周杰伦,发生了什么

  7. python 实现屏幕录制

    用python实现屏幕录制 PIL 即pollow 的安装命令如下: pip install pillow 其中cv2的安装是下面这条命令 pip install opencv-python 代码实现 ...

  8. icmp, IPPROTO_ICMP - Linux IPv4 ICMP 核心模块.

    DESCRIPTION 描述 本网络核心协议模块实现了基于 RFC792 协议中定义的<互联网控制报文协议>.它针对网络主机间通讯出错的情况作出回应并给出诊断信息.用户不能直接使用本模块. ...

  9. initdb - 创建一个新的 PostgreSQL数据库集群

    SYNOPSIS initdb [ option...] --pgdata | -D directory DESCRIPTION 描述 initdb 创建一个新的 PostgreSQL 数据库集群. ...

  10. static静态和非静态详解

    static 作为Java中的一个关键字,用于修饰方法.成员变量(Field),统称为成员. 有static修饰的成员   属于类 1.方法称为静态方法(类方法),Field称为类的属性. 2.静态成 ...