暴力枚举刷题1

news2024/11/28 8:28:44
题目来源:统计方形(数据加强版) - 洛谷
参考书籍:《深入浅出程序设计竞赛(基础篇)》

解题思路:这道理适合用暴力枚举求解。我把书上提到的四种枚举方法分享给大家。

解题1:减少枚举量

以某个坐标为顶点,统计其正方形和长方形。

#include<iostream>
#include<algorithm>

using namespace std;

typedef long long LL;

int main()
{
	LL n, m,squ = 0,rec = 0;
	cin >> n >> m;
	for (LL x = 0; x <= n; x++)
	{
		for (LL y = 0; y <= m; y++)
		{
			LL tmp = min(x, y) + min(y, n - x) + min(n - x, m - y) + min(m - y, x);
			squ += tmp;
			rec += n * m - tmp; //长方形
		}
	}
	printf("%lld %lld", squ / 4, rec / 4);
	return 0;
}

解题2 :去掉重复情况,只枚举方形的右下角顶点。

#include<iostream>
#include<algorithm>

using namespace std;

typedef long long LL;

int main()
{
	LL n, m, squ = 0, rec = 0;
	cin >> n >> m;
	for (LL x = 0; x <= n; x++)
	{
		for (LL y = 0; y <= m; y++)
		{
			LL tmp = min(x, y);
			squ += tmp;
			rec += x * y - tmp; //长方形
		}
	}
	printf("%lld %lld", squ , rec);
	return 0;
}

解题3:枚举其他要素。枚举方形的边长,其实就是统计n ✖m的大矩形中包含多少个边长为a ✖b的小矩形。答案:(n - a + 1) *(m - b +1)

#include<iostream>
#include<algorithm>

using namespace std;

typedef long long LL;



int main()
{
	LL n, m, squ = 0, rec = 0;
	cin >> n >> m;
	for (LL x = 1; x <= n; x++)
	{
		for (LL y = 1; y <= m; y++)
		{
			if (x == y)
			{
				squ += (n - x + 1) * (m - y + 1);//正方形
			}
			else
			{
				rec += (n - x + 1) * (m - y + 1);//长方形
			}
		}
	}
	printf("%lld %lld", squ, rec);
	return 0;
}

解题 4 :减少枚举量

在这个问题中,我们需要确定一个 n ✖m 方格的矩形包含多少个正方形和长方形(不包含正方形)。为了计算这个,我们可以用以下方法:

  1. 计算正方形的数量:

    • 对于一个 n ✖m 的矩形,最小的正方形是 1×1 的方格,然后是 2×2,直到 min(n,m)×min(n,m)。
    • 所以,1×1 的正方形有 n×m 个。
    • 2×2 的正方形有 (n−1)×(m−1) 个,以此类推。
    • 总正方形的数量是\sum_{i=1}^{min(n,m)}(n-i+1)(m-i+1)

    2  .计算长方形的数量:

       在一个 n×m 的矩形上,计算所有可能的长方形(包括正方形)的数量,可以通过计算所有可能的顶点对来完成。每个长方形由其对角线上的两个顶点唯一确定。要形成一个长方形,我们需要选择两个不同的水平坐标和两个不同的垂直坐标。

  1. 选择水平坐标:在长度为 n 的矩形,有 n+1 个水平的格线。从这n+1 个格线中选择两个不同的格线作为长方形的上下边界,可以有 C(n+1,2) 种选择方法,这是因为顶点对的选择是组合而不是排列(顺序不重要)。

  2. 选择垂直坐标:同理,在宽度为 m 的矩形,有m+1 个垂直的格线。选择两个不同的垂直格线作为长方形的左右边界,可以有 C(m+1,2) 种选择方法。

  3. 计算组合:要形成一个长方形,我们需要同时选择水平和垂直坐标,所以这两种选择的组合数是乘积形式的:C(n+1,2)×C(m+1,2)。

  4. 化简组合公式:组合公式 C(x,2)=x(x−1)​ /2可以应用于这两个选择,所以总的可能的长方形数量是:\frac{(n+1)}{2}n *\frac{(m+1)}{2}m=\frac{n*m(n+1)(m+1)}{4}

#include<iostream>
#include<algorithm>

using namespace std;

typedef long long LL;

int main()
{
	LL n, m, squ = 0, rec = 0;
	cin >> n >> m;
	for (LL x = 1; x <= min(n,m); x++)
	{
		squ += (n - x + 1) * (m - x + 1) ;//正方形					
	}
	rec  = n * m* (n + 1) * (m+ 1) /4 - squ ;//长方形
	printf("%lld %lld", squ, rec);
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1450558.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【AI绘画】硬核解读Stable Diffusion(完整版) 小白必收藏!!!

手把手教你入门绘图超强的AI绘画&#xff0c;用户只需要输入一段图片的文字描述&#xff0c;即可生成精美的绘画。给大家带来了全新保姆级教程资料包 &#xff08;文末可获取&#xff09; 2022年可谓是AIGC&#xff08;AI Generated Content&#xff09;元年&#xff0c;上半年…

C# CAD SelectionFilter下TypedValue数组

SelectionFilter是用于过滤AutoCAD实体的类&#xff0c;在AutoCAD中&#xff0c;可以使用它来选择具有特定属性的实体。构造SelectionFilter对象时&#xff0c;需要传入一个TypedValue数组&#xff0c;它用于定义选择规则。 在TypedValue数组中&#xff0c;每个元素表示一个选…

【制作100个unity游戏之25】3D背包、库存、制作、快捷栏、存储系统、砍伐树木获取资源、随机战利品宝箱7(附带项目源码)

效果演示 文章目录 效果演示系列目录前言新增简单的泛型单例消耗品源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列&#xff01;本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第25篇中&#xff0c;我们将探索如何用unity制作一个3D背包、库存、…

HTML5+CSS3+JS小实例:锥形渐变彩虹按钮

实例:锥形渐变彩虹按钮 技术栈:HTML+CSS+JS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge" /…

无人机导航技术,无人机导航理论基础,无人机导航技术应用发展详解

惯性/卫星定位组合是一种比较理想的组合导航系统。在无人机导航领域&#xff0c;多年来惯性/卫星定位组合导航系统的研究一直受到普遍的关注&#xff0c;大量的理论研究成果得到实际应用。 常见的几类导航系统 单一导航 卫星导航系统 、多普勒导航、惯性导航系统(INS) 、图形…

【知识整理】产研中心岗位评定标准之大数据岗位

为贯彻执行集团数字化转型的需要,该知识库将公示集团组织内各产研团队不同角色成员的职务“职级”岗位的评定标准; 一、定级定档目的 通过对公司现有岗位及相应岗位员工的工作能力、工作水平进行客观公正评定,确定各岗位的等级及同等级岗位员工对应的档级,从而为员工以后的晋升…

【Cocos入门】物理检测

目录 一、物理检测的概念二、点测试三、矩形测试四、射线测试 一、物理检测的概念 CoCos中&#xff0c;物理检测也是物理系统的一部分&#xff0c;它不是用于检测物体的物理特性的&#xff0c;而是用来查询物体的(比如某个地方是否存在物理碰撞体)。其又分成&#xff1a;点检测…

Mysql运维篇(四) Xtarbackup--备份与恢复练习

一路走来&#xff0c;所有遇到的人&#xff0c;帮助过我的、伤害过我的都是朋友&#xff0c;没有一个是敌人。如有侵权&#xff0c;请留言&#xff0c;我及时删除&#xff01; 前言 xtrabackup是Percona公司CTO Vadim参与开发的一款基于InnoDB的在线热备工具&#xff0c;具有…

【PyQt】11-QTextEdit、QPushButton

文章目录 前言一、文本输入-QTextEdit1.1 代码1.2 运行结果 二、QPushButton2.1.1 按钮上添加文本2.1.2 按键的弹跳效果2.1.3 两个信号可以绑定一个槽。2.1.4 带图标的按键运行结果 2.1.5 按键不可用以及回车默认完整代码2.2 单选按键控件运行结果 2.3 复选框&#xff08;多选框…

free pascal:fpwebview 组件通过 JSBridge 调用本机TTS

从 https://github.com/PierceNg/fpwebview 下载 fpwebview-master.zip 简单易用。 先请看 \fpwebview-master\README.md cd \lazarus\projects\fpwebview-master\demo\js_bidir 学习 js_bidir.lpr &#xff0c;编写 js_bind_speak.lpr 如下&#xff0c;通过 JSBridge 调用本…

shumei 滑块 qd参数仿写记录

在对qd参数进行仿写的过程中&#xff0c;由于缺失很多js的基础知识&#xff0c;导致进展一度非常的缓慢&#xff0c;并且不知道自己的方向是不是正确的方向。在不知道自己的方向是否正确的时候&#xff0c;这个时候自己的投入的努力都是畏首畏尾。大概是一种&#xff0c;不知道…

RabbitMQ如何保证可靠

0. RabbitMQ不可靠原因 消息从生产者到消费者的每一步都可能导致消息丢失&#xff1a; 发送消息时丢失&#xff1a; 生产者发送消息时连接MQ失败生产者发送消息到达MQ后未找到Exchange生产者发送消息到达MQ的Exchange后&#xff0c;未找到合适的Queue消息到达MQ后&#xff0c;…

【Deep Learning 1】神经网络的搭建

&#x1f31e;欢迎来到PyTorch的世界 &#x1f308;博客主页&#xff1a;卿云阁 &#x1f48c;欢迎关注&#x1f389;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f31f;本文由卿云阁原创&#xff01; &#x1f4c6;首发时间&#xff1a;&#x1f339;2024年2月16日&a…

Flutter Android开发 梳理Google Material Design颜色体系

前言 做安卓开发&#xff08;Kotlin语言&#xff09;&#xff0c;Flutter开发的人员应该都听说过谷歌一直推崇的Material Design&#xff0c;而Material Design Color是其推崇的颜色体系&#xff0c;具体来说&#xff0c;Material Design Color是一套旨在帮助设计师和开发者创…

问题:单层工业厂房柱子吊装时,其校正的内容包括( )。 #微信#经验分享#知识分享

问题&#xff1a;单层工业厂房柱子吊装时&#xff0c;其校正的内容包括(  )。 A、截面尺寸偏差 B、平面位置 C、标高 D、垂直度 E、柱的长度 参考答案如图所示

重磅更新!谷歌发布Gemini 1.5 Pro!多模态,1000K上下文!附Waitlist链接!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

[OPEN SQL] 修改数据

MODIFY语句用于修改数据库表中的数据 MODIFY拥有INSERT和UPDATE的操作&#xff0c;如果数据库表中不存在符合条件的数据则会添加该条新数据&#xff0c;反之数据库表中存在符合条件的数据则会更新该条数据 本次操作使用的数据库表为SCUSTOM&#xff0c;其字段内容如下所示 航…

【计算机网络】多路复用和多路分解

多路分解 demultiplexing 数据到达接收主机时&#xff0c;需要指定对应的套接字&#xff0c;所以在运输层报文段中放置了一些字段用于套接字的识别&#xff0c;从而将报文段定向到套接字&#xff0c;将运输层报文段数据交付到正确套接字的工作就是多路分解。多路复用 multiple…

day42 一个极简动画效果(复习相关属性)

<!DOCTYPE html> <html><head><title>动画页面</title><style>body {font-family: Arial, sans-serif;background-color: #f2f2f2;margin: 0;padding: 0;}.container {max-width: 800px;margin: 0 auto;margin-top: 100px;padding: 20px;b…

(N-144)基于微信小程序在线订餐系统

开发工具&#xff1a;IDEA、微信小程序 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术&#xff1a;vue、ElementUI、 Vant Weapp 服务端技术&#xff1a;springbootmybatisredis 本系统分微信小程序和…