【洛谷p1190】接水问题
咱也不知道为啥咱就是想写博客emmm
尽管这个题是2010年的普及组但是我太菜了并不会写emm
其实感觉这道题是纯纯正正的大模拟;
算法标签中的贪心是没有意义的啊??
SOLUTION:
- 首先一定要强调的是:这个题不需要排序来做!不需要排序来做!这道题的接水顺序就是输入的顺序,并不需要再去sort贪心(不过我好像贪心也贪错啦qwq)
- 然后看题,我们完完全全的进行模拟:使用while循环来模拟接水时间,定义一个t表示已经接完水或者正在接水的人数(好像也可以理解为现在等待接水的人的编号),while循环的停止条件是t<=n+1(这里表示前n个人都已经接完水了的情况,至于为什么,要看for循环模拟的水龙头才能解释清楚)
- 然后在while循环里,模拟水龙头接水的情况用for(1~m)分别表示1~m个水龙头,然后用数组(其实可以再开一个数组但是我比较懒直接用w了)表示当前第i个水龙头的状态(记录还需要接多少水),显然当w[i]==0时说明接水完成了,那么就让下一个排队的人t来接水,直接使w[i]=w[t];然后t++;表示排队的人变成下一个啦。这样每经过一次while循环,就表示接了1s的水,当最后一个等待的人也开始接水(也就是t=n+1)的时候,我们可以停止循环(反正我是这么做的)。
- 然后显然最后一个人才刚开始接水,我们肯定不能直接停止,还要等没接完水的接完才算都接完水。所以一个for循环1~m,求出其中剩余时间最多的一个加到时间里去,输出就好辣。撒花✿✿ヽ(°▽°)ノ✿
CODE:
#include<bits/stdc++.h> using namespace std; int n,w[],m,ans,maxx; int main(){
scanf("%d %d",&n,&m);
for(int i=;i<=n;i++)
scanf("%d",&w[i]);
int t=m+;
while(t<=n+){
for(int i=;i<=m;i++){
w[i]--;
if(w[i]==){
w[i]=w[t];
t++;
}
}
ans++;
}
for(int i=;i<=m;i++)
maxx=max(maxx,w[i]); cout<<ans+maxx<<endl;
}
end-
【洛谷p1190】接水问题的更多相关文章
- 洛谷P1190 接水问题
题目名称:接水问题 题目来源 [洛谷P1190] (https://www.luogu.org/problemnew/show/P1190) 题目描述 学校里有一个水房,水房里一共有\(m\)个龙头 ...
- 洛谷——P1190 接水问题
P1190 接水问题 题目描述 学校里有一个水房,水房里一共装有 m 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为 1. 现在有 n 名同学准备接水,他们的初始接水顺序已经确定.将这些同学 ...
- 洛谷 P1190 接水问题 题解
P1190 接水问题 题目描述 学校里有一个水房,水房里一共装有 \(m\) 个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为1. 现在有 \(n\) 名同学准备接水,他们的初始接水顺序已经确 ...
- 洛谷—— P1190 接水问题
https://www.luogu.org/problem/show?pid=1190#sub 题目描述 学校里有一个水房,水房里一共装有 m 个龙头可供同学们打开水,每个龙头每秒钟的 供水量相等,均 ...
- [洛谷U22157]刷水题(数位dp)(hash)
题目背景 做正经题是不可能做正经题的,这辈子都不可能做正经题的,毒瘤题又不会做毒瘤题,就是水题这种东西,才维持了蒟蒻的信心: 题目描述 这里有N+1 道水题,编号分别为0 ~N+1 ,每道水题都有它自 ...
- AC日记——铺地毯 洛谷 P1003(水水水水水~)
题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯.一共有 n 张地毯,编号从 1 到n .现在将这些地毯按照编号从小到大的顺序平行于 ...
- [洛谷P4626]一道水题 II
题目大意:求$lcm(1,2,3,\cdots,n)\pmod{100000007}$,$n\leqslant10^8$ 题解:先线性筛出质数,然后求每个质数最多出现的次数,可以用$\log_in$来 ...
- Mychael原创题 洛谷T23923 Mychaelの水题 【题解】
原题链接 题目大意: 有来自三个地区的人各a,b,c位,他们排成了一排.请问有多少种不同类型的排法,使得相邻的人都来自不同的地区 \(a,b,c<=200\) 答案取模 题解 弱弱的标程解法 设 ...
- 洛谷P1540 机器翻译 水题 模拟
注意一下细节,尤其是更新minv时不要更新错. Code: #include<vector> #include<iostream> #include<cstdio> ...
随机推荐
- 手机能连接上ipsec
手机能连接上,但是FQ不行,路由也正常,iptables也设置,内核转发也弄了,暂时需要看看日志才行了,不知道什么情况,其他类型的没问题
- 关于web前端性能优化问题
好久没有来博客写随笔了,可能是懒了吧,哈哈, 最近很想整理一篇关于前端性能优化的问题,毕竟能提高网站的观赏性对吧.提升网站性能,提升用户体验 那 什么是web性能优化? 可以这么理解:从用户访问资源到 ...
- JDK7
https://docs.oracle.com/javase/7/docs/index.html
- MySQL数据库2表的增删改查
目录 一.数据表(文件): 1.1增 1.2查看表内数据 1.3改 1.4删除列表 1.5查看库内列表及表结构 1.6复制表结构 二.列类型:(*********) 2.1数字 2.2字符串 2.3时 ...
- JDK7的新特性
本篇博客的内容 一.二进制字面量 二.数字字面量可以出现下划线 三.switch 语句可以用字符串 四.泛型简化 五.异常的多个catch合并 六.try-with-resources 语句 一.二进 ...
- 批量下载文件JSP
最近项目有个需求,用户想对挂有附件的数据记录 实现一键下载全部附件(目前项目仅支持每次点击单条记录进行附件下载),下面记录我实现的解决方案.项目框架基于SSMservice业务实现层(impl):// ...
- Dijkstra算法求最短路模板
Dijkstra算法适合求不包含负权路的最短路径,通过点增广.在稠密图中使用优化过的版本速度非常可观.本篇不介绍算法原理.只给出模板,这里给出三种模板,其中最实用的是加上了堆优化的版本 算法原理 or ...
- Java如何进行Base64的编码(Encode)与解码(Decode)
关于base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便 ...
- 大数据笔记(七)——Mapreduce程序的开发
一.分析Mapreduce程序开发的流程 1.图示过程 输入:HDFS文件 /input/data.txt Mapper阶段: K1:数据偏移量(以单词记)V1:行数据 K2:单词 V2:记一次数 ...
- picker-view组件
picker-view组件,是一个页面上的滚动选择器: 如果想进行滚动:他的子元素必须是 picker-view-column 组件: picker-view-column组件:只是提供了一个可视 ...