【OD】【E卷】【真题】【100分】光伏场地建设规划(PythonJavajavaScriptC++C)

题目描述

祖国西北部有一片大片荒地,其中零星的分布着一些湖泊,保护区,矿区;
整体上常年光照良好,但是也有一些地区光照不太好。

某电力公司希望在这里建设多个光伏电站,生产清洁能源对每平方公里的土地进行了发电评估,
其中不能建设的区域发电量为0kw,可以发电的区域根据光照,地形等给出了每平方公里年发电量x千瓦。
我们希望能够找到其中集中的矩形区域建设电站,能够获得良好的收益。

输入描述

第一行输入为调研的地区长,宽,以及准备建设的电站【长宽相等,为正方形】的边长最低要求的发电量
之后每行为调研区域每平方公里的发电量

输出描述

输出为这样的区域有多少个

示例1

输入

2 5 2 6
1 3 4 5 8
2 3 6 7 1

输出

4

说明

输入含义:
调研的区域大小为长2宽5的矩形,我们要建设的电站的边长为2,建设电站最低发电量为6.
输出含义:
长宽为2的正方形满足发电量大于等于6的区域有4个。

示例2

输入

5 1 6
1 3 4 5 8
2 3 6 7 1

输出

3

解题思路

本题可以使用动态规划前缀和思想解题。

解题思路如下:

首先,将每一行在水平方向上选取c个相邻地块进行发电量合并,用例中是2块相邻的地合并 image-20230305113929640

行合并完后,接下来对列进行合并

image-20230305113942246

样的话,最终得到【9,16,22,21】

其中9,起始就是下图中绿色部分,是一个c*c的区域,9是这个区域的发电量总和。其他的16,22,21也同理。

image-20230305111558836

因此,9,16,22,21每一个都是符合要求发电站发电量>6的区域,因此结果输出4个

Java

import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);// 输入地区长r,宽c,电站边长s,最低发电量minint r = scanner.nextInt();int c = scanner.nextInt();int s = scanner.nextInt();int min = scanner.nextInt();// 输入每个区域每平方公里的发电量,存入矩阵matrix中int[][] matrix = new int[r][c];for (int i = 0; i < r; i++) {for (int j = 0; j < c; j++) {matrix[i][j] = scanner.nextInt();}}// 遍历所有可能的电站位置,计算该位置的矩形区域发电量int ans = 0;for (int i = s; i <= r; i++) {for (int j = s; j <= c; j++) {int square = 0;for (int x = i - s; x < i; x++) {for (int y = j - s; y < j; y++) {square += matrix[x][y];}}if (square >= min) ans++;}}// 输出结果System.out.println(ans);}
}

Python

def main():r, c, s, min_power = map(int, input().split())  # 输入地区长r,宽c,电站边长s,最低发电量min# 输入每个区域每平方公里的发电量,存入矩阵matrix中matrix = [list(map(int, input().split())) for _ in range(r)]# 遍历所有可能的电站位置,计算该位置的矩形区域发电量ans = 0for i in range(s, r + 1):for j in range(s, c + 1):square = 0for x in range(i - s, i):for y in range(j - s, j):square += matrix[x][y]if square >= min_power:ans += 1# 输出结果print(ans)if __name__ == "__main__":main()

JavaScript

const readline = require('readline');
const rl = readline.createInterface({input: process.stdin,output: process.stdout,
});let length, width, stationSide, minPower;
const lines = [];rl.on("line", (line) => {lines.push(line);if (lines.length === 1) {[length, width, stationSide, minPower] = lines[0].split(" ").map(Number);}if (length && lines.length === length + 1) {const matrix = lines.slice(1).map(line => line.split(" ").map(Number));let ans = 0;for (let i = stationSide; i <= length; i++) {for (let j = stationSide; j <= width; j++) {let square = 0;for (let x = i - stationSide; x < i; x++) {for (let y = j - stationSide; y < j; y++) {square += matrix[x][y];}}if (square >= minPower) {ans += 1;}}}console.log(ans);rl.close();}
});

C++

#include <iostream>
#include <vector>
using namespace std;
int main() {int r, c, s, min;// 输入调研区域的长、宽,正方形电站的边长,以及最低发电量cin >> r >> c >> s >> min;// 创建一个二维矩阵存储每个区域的发电量vector<vector<int>> matrix(r, vector<int>(c));// 输入矩阵的每个元素,即每个区域的发电量for (int i = 0; i < r; i++) {for (int j = 0; j < c; j++) {cin >> matrix[i][j];}}int ans = 0;  // 记录满足条件的正方形区域个数// 遍历所有可能的正方形区域for (int i = s; i <= r; i++) {for (int j = s; j <= c; j++) {int square = 0;  // 记录当前正方形区域的总发电量// 计算以(i, j)为右下角的正方形的总发电量for (int x = i - s; x < i; x++) {for (int y = j - s; y < j; y++) {square += matrix[x][y];}}// 如果当前正方形区域的总发电量满足最低要求,则计数+1if (square >= min) ans++;}}// 输出满足条件的正方形区域个数cout << ans << endl;return 0;
}

C语言

#include <stdio.h>int main() {int r, c, s, min;// 输入调研区域的长、宽,正方形电站的边长,以及最低发电量scanf("%d %d %d %d", &r, &c, &s, &min);int matrix[r][c];// 输入每个区域的发电量for (int i = 0; i < r; i++) {for (int j = 0; j < c; j++) {scanf("%d", &matrix[i][j]);}}int ans = 0;  // 记录满足条件的正方形区域个数// 遍历所有可能的正方形区域for (int i = s; i <= r; i++) {for (int j = s; j <= c; j++) {int square = 0;  // 记录当前正方形区域的总发电量// 计算以(i, j)为右下角的正方形的总发电量for (int x = i - s; x < i; x++) {for (int y = j - s; y < j; y++) {square += matrix[x][y];}}// 如果当前正方形区域的总发电量满足要求,则计数+1if (square >= min) ans++;}}// 输出满足条件的正方形区域个数printf("%d\n", ans);return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于测试翻译准确率的相关方法

本文提到的翻译准确率测试指标是BLEU&#xff0c;以及使用Python库-fuzzywuzzy来计算相似度 一、基于BLEU值评估 1.只评估一段话&#xff0c;代码如下 from nltk.translate.bleu_score import sentence_bleu, SmoothingFunction# 机器翻译结果 machine_translation "Ho…

【动手学深度学习】8.3 语言模型(个人向笔记)

下面是语言模型的简介 1. 学习语言模型 使用计数来建模 N元语法&#xff1a;这里的元可以理解为我们之前的时间变量。对于 N 元语法&#xff0c;我们可以把所有长度为 N 的子序列存下来。其中 1 元语法用的很少。这里其实就是算概率的时候我们不往前看所有的概率&#xff0c;…

ACL和NAT

一、ACL 1.概述 访问控制列表Access Control List是由一系列permit或deny语句组成的、有序规则的列表是一个匹配工具&#xff0c;对报文进行匹配和区分 2.ACL应用 匹配流量在traffic-filter中被调用在NAT(Natwork Address Translation)中被调用在路由策略中被调用在防火墙的…

Linux系统:本机(物理主机)访问不了虚拟机中的apache服务问题的解决方案

学习目标&#xff1a; 提示&#xff1a;本文主要讲述-本机(物理主机)访问不了虚拟机中的apache服务情况下的解决方案 Linux系统&#xff1a;Ubuntu 23.04&#xff1b; 文中提到的“本机”&#xff1a;代表&#xff0c;宿主机&#xff0c;物理主机&#xff1b; 首先&#xff0c…

OpenCV高级图形用户界面(14)交互式地选择一个或多个感兴趣区域函数selectROIs()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 允许用户在给定的图像上选择多个 ROI。 该函数创建一个窗口&#xff0c;并允许用户使用鼠标来选择多个 ROI。控制方式&#xff1a;使用空格键或…

【Unity新闻】Unity 6 正式版发布

Unity CEO Matt Bromberg 在今天自豪地宣布&#xff0c;Unity 6 正式发布&#xff01;作为迄今为止最强大和稳定的版本&#xff0c;Unity 6 为游戏和应用开发者提供了大量的新功能和工具&#xff0c;帮助他们加速开发并提升性能。 本次正式版是6.0000.0.23f1&#xff08;LTS&a…

Django学习(三)

Django的设计模式及模板层 传统的MVC&#xff08;例如java&#xff09; Django的MTV 模板层&#xff1a; 模板加载&#xff1a; 代码&#xff1a; views.py def test_html(request):#方案一# from django.template import loader# 1. 使用loader加载模板# t loader.get_…

WIFI实现透传+接线图

单片机通过TX接WIFI模块的RX将设置的AT代码写入WIFI模块&#xff08;连接WIFI调为设备模式&#xff08;有设备&#xff0c;路由&#xff0c;双模等模式&#xff09;&#xff09; WIFI模块将响应信号通过TX通过CH340发给PC的RX 通过STC-ISP或安信可串口调试助手查看响应信息 …

Parallels Desktop20最新版本虚拟机 让双系统无缝切换成为现实!

Parallels Desktop 20最新版本虚拟机&#xff1a;让双系统无缝切换成为现实&#xff01; 嘿&#xff0c;各位小伙伴们&#xff5e;&#x1f389; 如果你是像我一样&#xff0c;既爱 Windows 又放不下 macOS 的纠结星人&#xff0c;那今天这篇分享你可要仔细看啰&#xff01;&am…

Linux学习笔记9 文件系统的基础

一、查看文件组织结构 Linux中一切都是文件。 Linux和Win的文件系统不是一个结构&#xff0c;Linux存在的根目录是所有目录的起点。 所有的存储空间和设备共享一个根目录&#xff0c;不同的磁盘块和分区挂载在其下&#xff0c;成为某个子目录的子目录&#xff0c;甚至设备也挂…

Windows系统部署redis自启动服务【亲测可用】

文章目录 引言I redis以本地服务运行(Windows service)使用MSI安装包配置文件,配置端口和密码II redis服务以终端命令启动缺点运行redis-server并指定端口和密码III 知识扩展确认redis-server可用性Installing the Service引言 服务器是Windows系统,所以使用Windows不是re…

图像识别解决方案

图像识别解决方案是一种基于人工智能技术的图像处理和识别方法&#xff0c;能够实现对图像内容的自动分析和理解。以下是朗观视觉小编对图像识别解决方案的详细阐述&#xff1a; 一、技术原理 图像识别解决方案的核心原理是机器学习算法和深度学习网络。通过收集大量的图像数据…

【数据丢失不再怕】新手体验四款恢复数据神器

作为一个电脑新手&#xff0c;我最近遇到了一个让人头疼的问题——不小心删除了一些重要的文件&#xff01;那种感觉&#xff0c;就像是心爱的玩具突然找不到了&#xff0c;整个人都慌了。但是&#xff0c;别担心&#xff0c;我找到了四款数据恢复工具&#xff0c;它们就像我的…

Unity接入人工智能

在Unity接入人工智能中&#xff0c;本篇实现了接入百度智能云ai进行npc智能对话&#xff0c;通过http方式&#xff0c;并非插件&#xff0c;适合于所有支持Http链接的Unity版本。对于Chartgpt可以参考本篇内容的实现过程。 1-4节讲解测试&#xff0c;第5节讲解Unity中的实现&a…

15分钟学Go 第5天:数据类型

第5天&#xff1a;数据类型 在Go语言中&#xff0c;数据类型是构成程序的重要基础&#xff0c;它们定义了可以在程序中使用的数据特征。了解不同的数据类型及其用途将帮助我们更有效地编写Go代码。在本章节中&#xff0c;我们将详细探讨Go语言的基本数据类型。 1. 数据类型的…

jmeter发送post请求

在jmeter中&#xff0c;有两种常用的请求方式&#xff0c;get和post.它们两者的区别在于get请求的参数一般是放在路径中&#xff0c;可以使用用户自定义变量和函数助手等方式进行参数化&#xff0c;而post请求的参数不能随url发送&#xff0c;而是作为请求体提交给服务器。而在…

Linux 手撕线程池

前言 线程池 是 池化技术 中很典型的一个&#xff0c;它旨在高效的管理和复用线程资源&#xff01;在现在的计算机体系中&#xff0c;线程是执行任务&#xff08;调度&#xff09;的基本单位。然而&#xff0c;频繁的创建和销毁线程也会带来较大的开销&#xff0c;包括系统资源…

Unity之XR Interaction Toolkit 射线拖拽3DUI

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、想实现的功能二、实现原理1.UI挂在XRGrabInteractable、刚体、BoxCollder2.修改刚体属性3.加BoxCollder 总结 前言 VR项目里正常情况有放置两种3DUI的方式…

音视频基础知识分享

音视频基础知识分享 RKMedia的各个组件及其交互 首先上图&#xff1a; 考虑到公司业务主要是相机&#xff0c;所以&#xff0c;主要去关注图像数据流&#xff0c;对于音频数据流直接忽略。 图像数据流向&#xff1a; Camera Sensor将光信号转换成电信号&#xff08;Raw数据&…

指针——函数指针数组

&#xff08;一&#xff09;前文回顾 1、前篇代码分析 void(*signal(int , void(*)(int)))(int) ; 那么这串代码究竟是什么呢&#xff1f; 别慌&#xff0c;让我们来一步一步拆解&#xff0c;首先我们通过之前的学习&#xff0c;已经明白了什么是函数指针&#xff08;如果有…