NOIP2010 普及组 接水问题 贪心

Noip2010-j题解来了(共四题) 这个换人的过程是瞬间完成的,且没有任何水的浪费。已知计算机一方选择武将的原则是尽量破坏对手下一步将形成的最强组合,它采取的具体策略如下:任何时刻,轮到计算机挑选时,它会尝试将对手军队中的每个武将与当前每个自由武将进行一一配对,找出所有配对中默契值最高的那对武将组合,并将该组合中的自由武将选入自己的军队。,a[n]来表示各位武将,用(a[i],a[j])来表示a[i],a[j]这两个武将的默契值,用MAXa[i]来表示a[i]这个武将所能达到的最大默契值,用SEa[i]来表示他能达到的第二默契值。 阅读详情

目录

​编辑

解释一下题目

1.道理  //贪心算法讲解

1.从教室角度看贪心算法

1.选出结束最早的课

2.接下来必须选出第一堂课结束后才开始的课程

2.开始实践调整思路

1.思路

2.实践

输入

核心程序

方法一:

方法二:

输出

总体代码


解释一下题目

从一个长度为N的队列(就是平常排的队),里选出M个人来到洗手池,只要有一个人洗完手了,m+1号位的人就会来替补他.循环往复直到后面没有替代的人,输出最后的时间.

想到这道题你肯定会用暴力枚举,我也尝试过用暴力枚举但是如果用数组的话有很多难题需要你解决,我们可以运用一下简单的贪心算法.

1.道理

贪心算法

1.从教室角度看贪心算法

下面是课程表

如果我们想尽量上多的课,而且两节课不能重复上,比如你上美术课有上英语课美术课下课的时候英语课已经上课了所以不能边上美术课边上英语课。

1.选出结束最早的课

他就是要在这间教室里上的第一堂课美术课上午十点结束时间最早因此美术课是第一堂课。

2.接下来必须选出第一堂课结束后才开始的课程

这样选择结束最早的课这将是要在这间教室上的第二节课及计算机课

重复刚才两个步骤,就可以得知答案,结果为“美术,计算机,音乐”。

这是一个简单的贪心算法。

2.开始实践调整思路

1.思路

输入的W序列中,取出前m个数字,查找其中最小的数字,将后面的数字加到最小的数字之上,循环往复,循环到N,在找出这个数列中数最大的数字,最后输出,就是这一道题的答案.

2.实践

输入

#include <algorithm>
#include <iostream>
using namespace std;
int main(){
	int n,m;
	cin >> n >> m;
	int num[n+10];
	
	int b = 0;
	for (int i=0; i < n; i++){
		cin >> num[i];
		if (num[i] >= b){
			b = num[i];
		}
	}
} 

B这个变量是为了储存列表中时间的最大值,你可以不写b,主要是我后面有一个特判程序.

核心程序

方法一:

求最小值用sort函数(不太推荐,毕竟排序可能会用到双重循环,您也不知道他是怎么写的)


	if (n == m){
		cout << b;
		return 0;
	}
	for (int i=m; i < n; i++){
		sort(num,num+m);
		
		num[0] += num[i];
	}
方法二:

循环求最小值

if (n <= m){
		cout << b;
		return 0;
	}
	for (int i=m; i < n; i++){
		int s = 1000000,wei = 0;
		for (int j=0;j < m;j++){
			if (num[j] < s){
				s = num[j];
				wei = j;
			}
		}
		num[wei] += num[i];
	}

注意最小值S(初始值)得开大一点.

要不然有两个测试点wa.(洛谷里的)

输出


	b = 0;
	for (int i=0; i < n; i++){
		if (num[i] >= b){
			b = num[i];
		}
	}
	cout << b;

总体代码

#include <algorithm>
#include <iostream>
using namespace std;
int main(){
	int n,m;
	cin >> n >> m;
	int num[n+10];
	int mun[m+10];
	
	int b = 0;
	for (int i=0; i < n; i++){
		cin >> num[i];
		if (num[i] >= b){
			b = num[i];
		}
	}
	for (int i=0; i < m; i++){
		mun[i] = num[i];
	}
	if (n <= m){
		cout << b;
		return 0;
	}
	for (int i=m; i < n; i++){
		int s = 1000000,wei = 0;
		for (int j=0;j < m;j++){
			if (num[j] < s){
				s = num[j];
				wei = j;
			}
		}
		num[wei] += num[i];
	}
	b = 0;
	for (int i=0; i < n; i++){
		if (num[i] >= b){
			b = num[i];
		}
	}
	cout << b;
	return 0;
} 

P1223 排队接水 【贪心】 阅读详情

相关推荐

​P1190 [NOIP2010 普及组] 接水问题 【贪心】​

​P1190 [NOIP2010 普及组] 接水问题 【贪心】

lybc2019的博客 380

洛谷 P1190 [NOIP 2010 普及组] 接水问题

模拟法:通过一步步模拟现实过程(按秒推进)解决问题,这是编程中处理 “过程性问题” 的常用方法。资源分配:多个资源(水龙头)同时处理多个任务(接水),如何分配任务以计算总时间,这种思路在多线程、并行计算中很常见。数组复用:通过合理设计数组用途,减少变量定义,让代码更简洁。边界处理:处理特殊情况(如 n≤m、m=1),培养严谨的逻辑思维。这些知识点不仅能解决接水问题,还能应用到类似的场景(如排队买票、打印机打印任务等),是编程基础的重要组成部分。

2501_91189146的博客 1156

手把手教你用二茂铁催化剂搞定醇的动力学拆分(保姆级实验避坑指南)

本文详细介绍了使用平面手性二茂铁催化剂进行醇的动力学拆分的全流程,包括催化剂选择与制备、反应体系搭建与条件优化、实时监测与反应淬灭、产物分离与纯化等关键步骤。通过实战案例和避坑指南,帮助实验人员实现>98% ee的拆分效果,特别适合需要高光学纯度二级芳基醇或烯丙醇的研究者。

weixin_30500105的博客 440

2010NOIP普及组真题 2. 接水问题

一本通:http://ybt.ssoier.cn:8088/problem_show.php?4、如果某个水龙头的剩余时间 b[i] 减到了0,但是队伍中已经没有排队等待接水的人了(j>n),则设置。1、先给每个b[i]水龙头分配一个人a[i],b[i] 表示水龙头的剩余时间。,此时的接水时间 t 就是最终结果。现实生活中如果我们去打水,肯定看。3、如果某个水龙头的剩余时间。同时 j++ 指向下一个人。5、当关闭水龙头的数量。循环表示1秒,即接水。2、n个人就处理n次。

weixin_40252159的博客 1223

Jetson Nano系统重装的艺术:从格式化到烧录的深度解析

本文详细解析了Jetson Nano系统重装的完整流程,从SD卡格式化到系统镜像烧录的进阶技巧,包括硬件选择、软件准备、常见问题处理及深度学习环境配置。特别推荐使用三星EVO Plus SD卡和官方电源以确保稳定性,适合开发者快速掌握嵌入式设备系统重装的核心技术。

weixin_28273593的博客 611

《Long-CLIP: Unlocking the Long-Text Capability of CLIP》

总的来说,Long-CLIP是一个改进的视觉-语言预训练模型,它通过知识保留的位置上插值和主要成分匹配策略,有效解决了原始CLIP模型在处理长文本输入时的限制。这一模型不仅在长文本图像检索任务中表现出色,而且在零样本图像分类任务中保持了与原始CLIP相当的性能,同时还能以即插即用的方式增强图像生成任务中的长文本处理能力。

Angelina_Jolie的博客 1381

一道有意思的简单题 [NOIP2010 普及组] 接水问题

每一次新来的同学的接水时间都加在现在已有的水龙头中接水时间最短的,总时间就为n次操作后水龙头中接水时间的最长值。

zaqjkl的博客 324

STM32CubeMX实战:TIM定时器中断配置避坑指南(附100ms精准定时代码)

本文深入解析STM32CubeMX配置TIM定时器中断的常见误区与避坑技巧,重点阐述时钟源、预分频器与自动重装载值的精准计算方法。通过实战案例,提供一份可直接复用的100ms精准定时中断代码模板,并分享调试验证方法,帮助开发者构建稳定可靠的嵌入式系统心跳。

grafana8visual的博客 500

【寒假每日一题】洛谷 P1190 [NOIP2010 普及组] 接水问题

即 j 同学第 x 秒结束时完成接水,则 k 同学第 x + 1 秒立刻开始接水。第 4 秒结束时,1,2 号同学每人的已接水量为 4,5 号同学的已接水量为 1。第 3 秒结束时,1,2 号同学每人的已接水量为 3,4 号同学的已接水量为 2。4 号同学接完水,5 号同学接替 4 号同学开始接水。第 1 秒结束时,1,2,3 号同学每人的已接水量为 1,3 号同学接完水,4 号同学接替 3 号同学开始接水。第 2 秒结束时,1,2 号同学每人的已接水量为 2,4 号同学的已接水量为 1。

m0_57587757的博客 1034

从 RAP OData 到可交付的 SAP Fiori 应用:部署与授权全链路实战笔记

摘要:本文探讨了RAP开发中常见的交付误区,指出开发者预览(FEAP)并非可部署应用,强调从服务发布到业务应用落地的完整链路。文章详细对比了不同部署路径(ABAP/BTP),解析权限管理关键点(SAP_BR_DEVELOPER的临时性),并提供了标准授权组合方案(IAM+业务目录+角色)。通过"发运跟踪"案例,展示了从开发验证到生产部署的全流程,特别提醒注意开发环境与生产环境的权限差异,避免"开发机正常、生产机403"的典型问题。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1402

petalinux2022.2启动文件编译配置

petalinux2021之前的版本里,导入目录components/yocto/下的“environment-setup-aarch64-xilinx-linux” 和 “layers/core/oe-init-build-env”的环境,能使用Yocto的devtool工具。(加入下面内容,先petalinux-build下载完成后才能有源码)制作 BOOT.BIN 启动文件:petalinux-package --boot --fsbl --fpga --u-boot --force。

wangjie36的博客 1401

P1190 [NOIP2010 普及组] 接水问题--洛谷(贪心)

P1190 [NOIP2010 普及组] 接水问题--洛谷(贪心) 这道题涉及贪心其实比较简单,关键点在于每位同学要按顺序去接水,那么为了时间最少,就是不去浪费一分一秒,才能使总接水时间最短。 我们可以设置m个长度的数组v[m]去表示m个水龙头,然后就模拟同学接水的过程,每次用min存储正在接水的m个同学中接水时间最短的那位同学,然后v[i]-min就代表着接水时间最短的那位同学所在的水龙头v[i]=0,已经接完水了,此时下一序位同学就接上。不断循环这个过程,并用sum记录时间,直到最后一位同学也开始接水

qq_63162152的博客 412

SpringBoot+Vue+kkFileView实现文档管理(文档上传、下载、在线预览)

上面在使用OpenOffice实现doc、excel、ppt等文档的管理和预览。除此之外可用kkFileView实现包括且更多文档的预览。

BADAO_LIUMANG_QIZHI的博客 1万+

P1190 [NOIP2010 普及组] 接水问题 题解

学校里有一个水房,水房里一共装有m个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为1。现在有n名同学准备接水,他们的初始接水顺序已经确定。将这些同学按接水顺序从1到n编号,i号同学的接水量为wi​。接水开始时,1到m号同学各占一个水龙头,并同时打开水龙头接水。当其中某名同学j完成其接水量要求wj​后,下一名排队等候接水的同学k马上接替j同学的位置开始接水。这个换人的过程是瞬间完成的,且没有任何水的浪费。即j同学第x秒结束时完成接水,则k同学第x1。

Kevinyu1011的博客 801

MSP430FR6043超声波传感器设计记录

1.前言 最近项目设计了一个超声波传感器 参考TI官方的板子EVM430-FR6043搭建的电路 EVM430-FR6043评估模块是一个用于评估MSP430FR6043 MCU性能的开发平台。 MSP430FR6043 MCU是一款超低功耗器件, 集成了超声波感测模拟前端 用于精确地进行超声波测量。 专为超声波水表、热量计和燃气表而设计, MSP430FR6043 器件采用低功耗加速器 (LEA), 可实现基于高速 ADC 的信号采集以及后续优化数字信号处理, 为电池供电型计量提供了一款超低功耗、高

bingdund的博客 2871

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

每天两道算法题:DAY1

在算法竞赛中,签到题是一定要拿满分的,签到题要的是快准狠,竞赛时千万不能着急、慌张,想明白之后再写,遇到 bug 在草稿纸上仔细模拟,再说一遍,千万不要着急,越着急越错。签到题一般不会很难,当发现自己做不出来时,可能是题目理解错了。一定要仔细读题!!!

2403_88695928的博客 739

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

P1190 [NOIP 2010 普及组] 接水问题

学校里有一个水房,水房里一共装有m个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为1。现在有n名同学准备接水,他们的初始接水顺序已经确定。将这些同学按接水顺序从1到n编号,i号同学的接水量为wi​。接水开始时,1到m号同学各占一个水龙头,并同时打开水龙头接水。当其中某名同学j完成其接水量要求wj​后,下一名排队等候接水的同学k马上接替j同学的位置开始接水。这个换人的过程是瞬间完成的,且没有任何水的浪费。即j同学第x秒结束时完成接水,则k同学第x1。

欢迎来到码高信奥胡老师的博客~ 343

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

NOIP2010 普及组 蒟蒻的题解报告

看到标题有人就要问了:你刚写完2017怎么跑去写2010了? 当然是因为 2011-2016的题目我都没做完呗 事实上每年都是A了3题,卡在第四题,而2010年的题目难度都不太高…… (我太弱了额啊) 下方正文——T1 数字统计原题链接 自古T1大水题,自古T4是DP。 (然而T4博弈论) 但是!这并不能阻挡 T1 简单的事实 T1 的算法非常简单,枚举直接上即可,也没什么需要注意的

Venus的博客 1126

NOIP 2010 普及组 真题全解(超详细讲解版)

有两套导弹防御系统,坐标分别为 (x1,y1) 和 (x2,y2)。有 n 枚导弹,每个导弹可以由任意一个系统拦截。有 n 名武将,任意两名武将之间有一个默契值。玩家与电脑轮流选武将,玩家先手。给定两个整数 L 和 R,请你计算在从 L 到 R(包括 L 和 R)的所有整数中,数字。有 n 个人需要接水,共有 m 个水龙头。输出:1(必胜)以及你能拿到的最大默契值。,数据范围很小,不需要复杂算法,直接暴力枚举即可。,不需要搜索,直接构造最优解。,输出这个最小的最大代价。,输出这个最短时间。

Du_chong_huan的博客 377

武汉ACM集训——贪心-4

武汉ACM集训——贪心-4 洛谷 P1190 [NOIP2010 普及组] 接水问题 题解 按照顺序排队接水,一个接完水,另一个瞬间接上。 将前 m 个数据作为 m 组,选取时间和最小的组,再该组数据中添加新数据,重复添加新数据。输出最大的时间和。 AC代码 #include <bits/stdc++.h> using namespace std; const int maxn = 1e4 + 5; int a[maxn]; // 优先队列,数值越小优先级越高 priority_queue&l

miaomiaopu的blog 190

noip2010 引水入城 - bfs + 贪心

题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠。该国的行政区划十分特殊,刚好构成一个NN行\times M×M列的矩形,如上图所示,其中每个格子都代表一座城市,每座城市都有一个海拔高度。 为了使居民们都尽可能饮用到清澈的湖水,现在要在某些城市建造水利设施。水利设施有两种,分别为蓄水厂和输水站。蓄水厂的功能是利用水泵将湖泊中的水抽取到所在城市的蓄水池中。 ...

weixin_30826095的博客 240

【题解】【洛谷P1190】【模拟】—— [NOIP2010 普及组] 接水问题

平台为全国青少年提供最专业的编程教育服务,包括提供最新最详细的编程相关资讯、最专业的竞赛指导、最合理的课程规划等。本平台利用趣味性和互动性强的教学方式,旨在激发孩子们对编程的兴趣,培养他们的逻辑思维能力和创造力,让孩子们在轻松愉快的氛围中掌握编程知识,为未来科技人才的培养奠定坚实基础。同学的位置开始接水。这个换人的过程是瞬间完成的,且没有任何水的浪费。名同学准备接水,他们的初始接水顺序已经确定。名同学的接水量,按照上述接水规则,问所有同学都接完水需要多少秒。号同学接完水,即所有人完成接水的总接水时间为。

Pantheraonca的博客 1561

[NOIP2010 普及组] 接水问题

学校里有一个水房,水房里一共装有m个龙头可供同学们打开水,每个龙头每秒钟的供水量相等,均为1。现在有n名同学准备接水,他们的初始接水顺序已经确定。将这些同学按接水顺序从1到n编号,i号同学的接水量为wi​。接水开始时,1到m号同学各占一个水龙头,并同时打开水龙头接水。当其中某名同学j完成其接水量要求wj​后,下一名排队等候接水的同学k马上接替j同学的位置开始接水。这个换人的过程是瞬间完成的,且没有任何水的浪费。即j同学第x秒结束时完成接水,则k同学第x1。

m0_74420310的博客 823

【noip2010】接水问题

【noip】接水问题 描述 学校里有一个水房,水房里一共装有m 个龙头可供同学们打开水,每个龙头每秒钟的 供水量相等,均为1。 现在有n 名同学准备接水,他们的初始接水顺序已经确定。将这些同学按接水顺序从1 到n 编号,i 号同学的接水量为wi。接水开始时,1 到m 号同学各占一个水龙头,并同时打 开水龙头接水。当其中某名同学j 完成其接水量要求wj 后,下一名排队等候

zyf2000 2963

NOIP 2010 普及组解题报告

<br />NOIP 2010普及组解题报告<br />北京市八一中学王祺磊<br />感谢:<br />我也学习一下,现在的流行趋势,先开始感谢,但这真的是发自内心的感觉,让我发出一下这些感谢。<br />一、感谢和我一起并肩战斗信息学奥赛教学一线的老师们,是你们给了我温暖,让我感受到一个温馨的集体,在其中,我们一起学习,一起研讨;<br />二、感谢一直和我一起战斗在一起的孩子们,是你们跟我一起,在风雨中奋斗,一起成长;<br />三、感谢我的几位师长,是你们一直在我成长的过程中,指引我前进的方向;<b

我的学习笔记 8664
上一篇: string
下一篇: 洛谷 运势
B757-300
博客等级 码龄4年 259粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值