UVA10382 - Watering Grass 题解

使用 Simulink + Simscape Electrical 实现一个变压器耦合式单相全波整流器的仿真模型 本文介绍了基于Simulink的变压器耦合式单相全波整流器建模与仿真方法。详细说明了从项目创建、模块添加、电路搭建到参数配置的完整建模过程,重点分析了整流器的效率与损耗特性,包括变压器损耗和二极管导通损耗。通过仿真展示了输入输出波形特征,并提出了选用高效元件、优化变压器设计等改进建议。该案例为电力电子系统建模提供了实用参考,有助于深入理解整流电路工作原理和性能优化方法。 阅读详情

原题链接

解决题目

先通过勾股定理求出每个圆向左向右实际能覆盖的距离 k k k,将题目中的圆转化为矩形。

可以看出来这是一道贪心问题。我这里使用的方法是从右往左覆盖草坪,并用 l a s t last last 标记当前覆盖到的位置。

每次循环中从左向右枚举右侧( e d ed ed)能到达当前位置 l a s t last last 的圆圈。标记出现的第一个符合要求的圆圈, l a s t last last 跳到该圆圈的左侧( s t st st)。因为这些圆圈已经按照左侧( s t st st)由大到小的顺序排序,因此枚举出来的一定是符合要求的最靠左侧的圆圈,覆盖草坪的速度最快,且不用考虑对之后选择的影响,因此一定最优。

#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

const int N = 10000;

struct node {
	double st;
	double ed;
	bool operator < (const node &K) const {
		return st < K.st;
    	//排序时 st 小的在前
	}
}a[N + 5];

int n, cnt, l, w;
double ww;

int main() {
	while (~scanf("%d%d%d", &n, &l, &w)) {
		ww = double(w) / 2;
		cnt = 0;
		for (int i = 1; i <= n; i++) {
			double x, y, k;
			scanf("%lf%lf", &x, &y);
			if (y <= ww) {
        		//如果连宽度也不能覆盖则跳过
				continue;
			}
			cnt++;
			k = sqrt(y * y - ww * ww);
        	//计算向左向右实际覆盖距离
			a[cnt].st = x - k;
			a[cnt].ed = x + k;
		}
		n = cnt;
		sort(a + 1, a + n + 1);
		double last = l;
		int lastp = n + 1;
		int ans = 0;
		bool flag;
		while (last > 0) {
			flag = false;
			for (int i = 1; i < lastp; i++) {
        		//只循环到上一次符合要求的圆圈所在位置
				if (a[i].ed >= last && a[i].st < last) {
					flag = true;
					last = a[i].st;
					lastp = i;
					ans++;
					break;
				}
			}
			if (!flag) {
        		//没有找到符合要求的圆圈,无法完成浇灌
				printf("-1\n");
				break;
			}
		}
		if (flag) {
			printf("%d\n", ans);
		}
	}
	return 0;
}

注意事项

  1. 题目是多组数据,组数不指定。我这里使用 while (~scanf("%d%d%d", &n, &l, &w)),当读到文件结尾时终止循环;
  2. 第 28 行,如果连宽度都不能覆盖则跳过;我刚开始时没有跳过,导致之后循环时加上了这些圆圈。会导致除样例外全错;
  3. 第 46 行我用了一个 l a s t p lastp lastp 变量,目的是让循环时只循环到上一次符合要求的圆圈,减少无法复制时的循环次数;
  4. 题目是多组数据,因此 c n t cnt cnt 等变量需要初始化,避免影响这次循环。
  5. LibreOJ 或一本通中的题目稍有不同,数据组数确定为 T T T。每次循环减去一并判断即可:
int T;
scanf("%d", &T);
while (T--) {
	...
}
如何免费快速的部署一个自用免VIP的自动追剧工具!NAS新玩法!豆瓣与迅雷结合,轻松实现自动下载电影自动追剧功能(支持Windows,群晖nas,飞牛nas,软路由,服务器等Docker快速部署) 追剧党狂喜!豆瓣追剧神器,自动添加云盘,自动下载,微信通知,一键搞定! 阅读详情

相关推荐

Windows 64 位系统下安装配置 DOSBox 及 debug.exe

该篇博客同样作为类似问题 “如何在 Windows 64 位系统下进入 debug” 的答案。 很多同学初看王爽的《汇编语言》,或者因为其它原因需要进入 debug 调试模式下学习汇编语言的时候,会发现进入不了,出现类似以下的错误提示。 这是因为他们使用的是 64 位的 Windows 系统(Win 7,Win 8 以及 Win 10 等),而 64 位 Windows 系统不再支持在命令提示符窗口下进入 debug 调试模式。那么对于使用 64 位 Windows 系统的用户来说,该怎样才能够顺利进入 d

加号减减号的博客 5万+

喷水装置 I

描述 现有一块草坪,长为20米,宽为2米,要在横中心线上放置半径为Ri的喷水装置,每个喷水装置的效果都会让以它为中心的半径为实数Ri(0< Ri <15)的圆被湿润,这有充足的喷水装置i(1< i <600)个,并且一定能把草坪全部湿润,你要做的是:选择尽量少的喷水装置,把整个草坪的全部湿润。 输入 第一行m表示有m组测试数据 每一组测试数据的第一行有一个整数数n,n表示共有n个喷水装置,随

565

Linux下用SquareLine Studio开发LVGL界面:从安装到实战的完整避坑指南

本文提供了一份在Linux系统下使用SquareLine Studio开发LVGL图形界面的完整实战指南。内容涵盖从SDL库安装、SquareLine Studio环境配置、界面可视化设计,到工程导出、源码编译及常见错误排查的全流程。重点解析了如何将设计界面无缝集成到Linux开发流程中,并针对嵌入式设备移植提供了关键步骤,旨在帮助开发者高效避坑,快速上手LVGL界面开发。

egg99的博客 905

喷水装置(贪心 区间覆盖问题)

参考:[洛谷日报第74期]贪心讲解I_思路 第1部分 基础算法(提高篇)--第1章 贪心算法1424:【例题3】喷水装置_zqhf123的博客-优快云博客 喷水装置 长L米,宽W米的草坪里装有n个浇灌喷头。每个喷头都装在草坪中心线上(离两边各W/2米)。我们知道每个喷头的位置(离草坪中心线左端的距离),以及它能覆盖到的浇灌范围。 请问:如果要同时浇灌整块草坪,最少需要打开多少个喷头? 输入格式: 输入包含若干组测试数据。 第一行一个整数T表示...

qq_51738428的博客 1511

关于石墨烯费米能级和偏置电压之间的关系问题

石墨烯费米能级与电压的关系问题

qq_37946542的博客 3514

Python实战:3步搞定视频去重,告别重复文件烦恼(附完整代码)

本文提供了一套基于Python的视频去重实战方案,通过三步流程(抽帧、生成内容指纹、相似度比对)高效识别重复视频文件。文章详细介绍了使用dHash算法生成视频指纹的核心原理,并提供了完整的代码实现,帮助用户快速构建自己的视频去重工具,告别重复文件管理烦恼。

weixin_29054245的博客 379

UVA - 10382 Watering Grass(降维处理,贪心不停)

题目链接:https://cn.vjudge.net/contest/311860#problem/C Sample Input 8 20 2 5 3 4 1 1 2 7 2 10 2 13 3 16 2 19 4 3 10 1 3 5 9 3 6 1 3 10 1 5 3 1 1 9 1 Sample Output 6 2 -1 解析:刚开始输入三个数,8 20 2。8个圆,矩形的长宽分别...

zaiyang遇见 270

【每天一个知识点】多视图子空间聚类(Multi-view Subspace Clustering)

本文深入解析了多视图子空间聚类技术,这是一种处理多源异构数据的先进方法。它通过融合多个数据视图(如文本、图像、网络结构)的共识与互补信息,学习统一的潜在子空间表示,从而获得比单一视图更鲁棒、准确的聚类结果。文章详细阐述了其核心思想、主流技术流派(如图融合、共同潜在子空间、张量及深度学习方法),并提供了Python实战代码与调优经验,适用于跨模态检索、生物信息学等多领域复杂数据分析。

weixin_29065015的博客 459

UVa 10382 - Watering Grass(区间覆盖问题)

UVa 10382 - Watering Grass(区间覆盖问题) n sprinklers are installed in a horizontal strip of grass l meters long and w meters wide. Each sprinkler is installed at the horizontal center line of the strip. Fo...

weixin_43179892的博客 273

当传统CFD遇上AI:PINN如何帮我们省下90%的仿真计算时间?

本文探讨了物理信息神经网络(PINN)在计算流体力学(CFD)中的应用,如何通过无网格方法节省90%的仿真计算时间。PINN将物理定律编码到神经网络中,显著减少传统CFD中的网格生成和计算时间,同时保持高精度。文章还对比了PINN与传统方法的性能,并讨论了其独特优势和当前局限。

weixin_32678995的博客 319

大数据领域数据采集的人工智能辅助技术

在大数据时代,“数据是石油”的隐喻早已深入人心,但采集高质量数据的过程却像“在大海里捞针”——数据源分散如繁星、格式杂乱如碎片、质量参差不齐如泥沙,传统采集方法(写死的脚本、固定的ETL流程)早已力不从心。这篇文章将带你走进AI辅助数据采集的世界:我们会用“智能捕鱼船”的比喻拆解AI如何解决传统采集的痛点,深入解析“数据源自动发现”“自适应数据解析”“实时质量管控”等核心技术的原理,用代码示例还原AI采集的真实流程,最后探讨多模态采集、联邦学习等未来趋势。

小程序开发 2354

LOJ#10002 喷水装置(贪心)

题目链接 题目描述 长L米,宽W 米的草坪里装有n 个浇灌喷头。每个喷头都装在草坪中心线上(离两边各W/2​​米)。我们知道每个喷头的位置(离草坪中心线左端的距离),以及它能覆盖到的浇灌范围。 请问:如果要同时浇灌整块草坪,最少需要打开多少个喷头? 输入格式 输入包含若干组测试数据。 第一行一个整数T 表示数据组数; 每组数据的第一行是整数n、L 和W; 接下来...

悲伤无声地涌出来 2241

第十五章数据管理成熟度评估【6’】(DAMA-CDGA 2022年以后历年模拟题真题汇总,基本包含所有考点。)

第十五章数据管理成熟度评估【6’】(DAMA-CDGA 2022年以后历年模拟题真题汇总,基本包含所有考点。)

JasonH2021的博客 402

UVA 10382 Watering Grass(区间覆盖,贪心)题解

题意:有一块草坪,这块草坪长l 米,宽 w 米,草坪有一些喷头,每个喷头在横坐标为 p 处,每个喷头的纵坐标都是(w/2) ,并且喷头的洒水范围是一个以喷头为圆心,半径为 r 米的圆。每次最少需要打开多少个喷头来给草坪洒水,并且草坪各处都能被洒到,不行输出-1 思路:这是一道区间覆盖(贪心)题: 有一堆区间 l1, r1;l2, r2...ln,rn,问你最少用几个能覆盖0~P的长度...

weixin_30782293的博客 130

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

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

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

UVA 10382 Watering Grass

https://cn.vjudge.net/problem/UVA-10382 https://uva.onlinejudge.org/external/103/10382.pdf 题目 草地上有许多喷水的水龙头,知道半径和位置,需要完全覆盖草地,选出最少的水龙头。输出最少的数量。 题解 画出三角形,变成区间覆盖问题 尽量选右端点靠右的区间(前提是包含当前的点),然后把当...

234

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

UVA - 10382- Watering Grass

uva 10382 - Watering Grass(区域覆盖问题)    Sample Input 8 20 2 5 3 4 1 1 2 7 2 10 2 13 3 16 2 19 4 3 10 1 3 5 9 3 6 1 3 10 1 5 3 1 1 9 1 Sample Output 6 2 -1 题目大意: 有一块草坪,长为l,宽为w,在它

Rainbow__sea的博客 699

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

UVA - 10382 Watering Grass(贪心)

贪心 区间覆盖

riversu 432

UVa 10382 - Watering Grass

链接: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=113&page=show_problem&problem=1323 原题: n sprinklers are installed in a horizontal strip of grass l meters l

D_Double's Journey 4592

Watering Grass UVA - 10382 贪心

问题 https://vjudge.net/problem/UVA-10382 分析 将一个点的覆盖范围看作是一个长方形,舍弃弓形区域,变成区间覆盖问题,用贪心法 注意:bb-ww/4有可能小于0,要筛出 #include <iostream> #include <cstdio> #include <cmath> #include <cstring>...

zpf1998的博客 173

Watering Grass UVA - 10382 详细的解释

Watering Grass UVA - 10382 题目链接 题意:有一个草坪长l米,宽w米,每个洒水器安在草坪的水平中心线上,题目给出数据n个喷水器,l,w,接下来给出每一个洒水器距中心线左端的距离以及其工作半径,求灌溉整个草条所需的最小洒水器数量。 思路: 首先,这道题有点坑,一直过不去,我就把所有数定义成double型,就过了。(听大佬说有精度误差,就算强制转换也不行。) 好气啊。。。。。...

zab123的博客 224

uva10382 - Watering Grass(区间覆盖变形)

题目:uva10382 - Watering Grass(区间覆盖变形) 题目大意:要给一片草坪浇水,给定草坪的长度和宽度,给出每个喷头的圆心C和喷水的半径R,问最少要几个喷头可以给整片草坪都浇上水。 解题思路:区间覆盖问题的变形,因为草坪有宽度W,所以这个每个喷头的有效范围是[C- sqrt(R* R - 0.25 * W * W , C + sqrt (R*R - 0

1690

UVA10382 Watering Grass 贪心

题意是用最少的圆覆盖一个矩形区域,其实一个园相当于一个区间。然后就是用最少的小区间覆盖大区间的问题。贪心搞之。。。。 在一个小问题上纠结了好久,不应该。居然直接拿x-r了。。高中几何全部丢给老师了   Watering Grass Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu

774

UVA 10382 - Watering Grass

Watering Grass Input: standard input Output: standard output Time Limit: 3 seconds n sprinklers areinstalled in a horizontal strip of grass l meters long and wmeters wide. Each sprinkler is i

zhaosdfa 1289

Watering Grass

UVA 10382 Watering Grass (贪心 + 区间覆盖问题) **n sprinklers are installed in a horizontal strip of grass l meters long and w meters wide. Each sprinkler is installed at the horizontal center line of the str...

我想要西瓜 422

UVA 10382 Watering Grass 区间覆盖问题 -

题目地址:http://vjudge.net/problem/UVA-10382 第一想法: 1)ri*2 2)肯定为了让决策有序化,按p排序 3)很明显 ,状态两种:开与不开,而且位置固定的,那么就可以看成由n个区间,求能覆盖整个区间的最小数量,那不是就贪心的区间覆盖问题嘛

BRCOCOLI的博客 361

Watering Grass UVA-10382

n sprinklers are installed in a horizontal strip of grass l meters long and w meters wide. Each sprinkler is installed at the horizontal center line of the strip. For each sprinkler we are given its p...

touso的博客 262
上一篇: 洛谷 P1591 阶乘数码 题解
下一篇: 初学LL 库,点灯问题的记录
ucTms
博客等级 码龄7年 10粉丝 5原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值