NOIP2010提高组.引水入城

*前置题目

901. 滑雪

#include <iostream>
#include <algorithm>
#include <cstring>using namespace std;const int N = 310, INF = 0x3f3f3f3f;
const int dx[4] = {0, -1, 0, 1}, dy[4] = {1, 0, -1, 0};int n, m, h[N][N];
int f[N][N];
int ans;int dfs(int x, int y) {if (f[x][y] != -1) return f[x][y];f[x][y] = 1;for (int i = 0; i < 4; ++i) {int nx = x + dx[i], ny = y + dy[i];if (nx < 1 || nx > n || ny < 1 || ny > m || h[nx][ny] >= h[x][y]) continue;int son = dfs(nx, ny);f[x][y] = max(f[x][y], son + 1);}return f[x][y];
}int main() {ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);cin >> n >> m;for (int i = 1; i <= n; ++i) {for (int j = 1; j <= m; ++j) {cin >> h[i][j];}}memset(f, -1, sizeof f);for (int i = 1; i <= n; ++i) {for (int j = 1; j <= m; ++j) {if (f[i][j] == -1) ans = max(ans, dfs(i, j));}}cout << ans << "\n";return 0;
}

907. 区间覆盖

#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>using namespace std;const int N = 1e5 + 10, INF = 0x3f3f3f3f;int s, e, n;
struct Seg {int l, r;bool operator< (const Seg &s) const {return l < s.l;}
} segs[N];int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);cin >> s >> e >> n;for (int i = 0; i < n; ++i) cin >> segs[i].l >> segs[i].r;sort(segs, segs + n);int ans = 0;for (int i = 0; i < n;) {int r = -INF;while (i < n && segs[i].l <= s) {r = max(r, segs[i].r);i++;}ans++;if (r < s) {cout << -1 << "\n";return 0;}if (r >= e) {cout << ans << "\n";return 0;}s = r;}cout << -1 << "\n";return 0;
}

题目

497. 引水入城
在这里插入图片描述

算法标签: 记忆化搜索, 贪心, d p dp dp

思路

发现每个水库覆盖的城市必须是连续的, 因为如果不连续, 其他地方的水也无法连接到当前城市, 因此问题就转化为了最少需要多少区间能将最后的城市全部覆盖?

也就是经典的区间覆盖问题, 计算每个第一层的城市可以覆盖哪些最后一层的城市可以记忆化搜索求解

代码

#include <iostream>
#include <algorithm>
#include <cstring>
#include <vector>using namespace std;const int N = 510, INF = 0x3f3f3f3f;
const int dx[4] = {-1, 0, 1, 0}, dy[4] = {0, 1, 0, -1};int n, m, h[N][N];
struct Seg {int l, r;bool operator<(const Seg &s) const {return l < s.l;}
} f[N][N];void dfs(int x, int y) {auto &p = f[x][y];if (p.l != -1) return;p.l = N;if (x == n) p = {y, y};for (int i = 0; i < 4; ++i) {int nx = x + dx[i], ny = y + dy[i];;if (nx < 1 || nx > n || ny < 1 || ny > m || h[nx][ny] >= h[x][y]) continue;dfs(nx, ny);p.l = min(p.l, f[nx][ny].l);p.r = max(p.r, f[nx][ny].r);}}int main() {ios::sync_with_stdio(0);cin.tie(0), cout.tie(0);cin >> n >> m;for (int i = 1; i <= n; ++i) {for (int j = 1; j <= m; ++j) {cin >> h[i][j];}}memset(f, -1, sizeof f);for (int i = 1; i <= m; ++i) dfs(1, i);int cnt = 0;for (int i = 1; i <= m; ++i) {if (f[n][i].l == -1) cnt++;}if (cnt) {cout << 0 << "\n";cout << cnt << "\n";return 0;}vector<Seg> vec;for (int i = 1; i <= m; ++i) vec.push_back(f[1][i]);sort(vec.begin(), vec.end());int ans = 0;for (int i = 0, s = 1; i < m;) {int r = 0;while (i < m && vec[i].l <= s) {r = max(r, vec[i].r);i++;}ans++;if (r >= m) break;s = r + 1;}cout << 1 << "\n";cout << ans << "\n";return 0;
}

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

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

相关文章

Share02-小小脚本大大能量

各位看官你们好&#xff0c;又是一篇共享知识点的文章&#xff0c;今天我们来聊一聊脚本在我们上位组态中的作用。各个厂家的上位软件或者触屏软件都内嵌了脚本功能&#xff0c;有的是二次开发的固定指令格式&#xff0c;有的可以接收广域的标准语言指令。它带给我们更多的方便…

LangChain接入azureopenai步骤(2025年初)

背景&#xff1a; 为了快速且规范的实现ai应用&#xff0c;可使用LangChain框架&#xff0c;便于后期维护。虽然deepseek异军突起&#xff0c;在终端用户占有率很高&#xff0c;但是仔细查阅相关api接口&#xff0c;尤其是自有知识库需要使用的文本向量化模型方面&#xff0c;o…

阿里云国际站代理商:模型训练中断数据丢失怎么办?

定期保存训练状态&#xff1a;在训练过程中&#xff0c;设定自动保存训练状态的频率&#xff0c;将模型的参数、优化器状态、训练数据的中间结果等定期保存到存储介质上。这样&#xff0c;当中断发生时&#xff0c;可以恢复到上次保存的状态&#xff0c;避免训练进度的损失。 …

C++17更新内容汇总

C17 是 C14 的进一步改进版本&#xff0c;它引入了许多增强特性&#xff0c;优化了语法&#xff0c;并提升了编译期计算能力。以下是 C17 的主要更新内容&#xff1a; 1. 结构化绑定&#xff08;Structured Bindings&#xff09; 允许同时解构多个变量&#xff0c;从 std::tup…

2025年Axure RP9无法免费使用Axure Cloud的解决方案

解决方案 更换新账号&#xff0c;换了一个邮箱注册&#xff0c;再登陆&#xff0c;又会给你30天的试用期。 对&#xff0c;办法就是换个邮箱注册&#xff0c;又续上30天的试用期。

供应链中的的“四流合一”

在供应链中&#xff0c;物流、资金流、信息流、商流是共同存在的&#xff0c;商流、信息流和资金流的结合将更好的支持和加强供应链上、下游企业之间的货物、服务往来&#xff08;物流&#xff09;。 一、商流 在供应链中&#xff0c;上下游供应商的资金链条均可被金融服务机构…

MonkeyDev 如何创建一个root级级别的app

前提条件:有越狱的手机,XCode中已经安装了Monkeydev 1. 和普通应用一个创建一个ios的工程 2. 在App的TARGETS>build setting> 中设置Apple Development 3. 设置User-Defined的配置 CODE_SIGNING_ALLOWED = NO MonkeyDevBuildPackageOnAnyBuild = NO MonkeyDevClearUi…

Excel时间类型函数(包括today、date、eomonth、year、month、day、weekday、weeknum、datedif)

目录 1. TODAY()2. DATE()3. EOMONTH()4. YEAR()5. MONTH()6. DAY()7. WEEKDAY()8. WEEKNUM()9. DATEDIF()10.&#x1f4cc; 函数扩展与应用11. &#x1f4da; 时间函数基础概念与分类 Excel 提供了许多 日期与时间类型的函数&#xff0c;用于操作与处理日期或时间数据。这些函…

Lumerical ------ Edge coupler design

Lumerical ------ Edge coupler design 引言正文无 Si Substrate 的仿真步骤有 Si Substrate 的仿真步骤引言 本文,我们将使用官方提供的 Edge coupler 设计教程,但是中间会带有作者本人的设计的感悟。 正文 无 Si Substrate 的仿真步骤 打开 Edge_Coupler_No_Substrate.l…

Spring笔记06-数据持久化

在 Spring 中&#xff0c;数据持久化是将应用程序中的数据保存到持久化存储&#xff08;如数据库&#xff09;中的过程 &#xff0c;主要通过以下几种方式实现&#xff1a; 1. JDBC&#xff08;Java Database Connectivity&#xff09; 原理&#xff1a;JDBC 是 Java 访问关系…

spring boot集成reids的 RedisTemplate 序列化器详细对比(官方及非官方)

RedisTemplate 序列化器详细对比&#xff08;官方及非官方&#xff09; 1. 官方序列化器 (1) JdkSerializationRedisSerializer 特点&#xff1a; 基于 Java 原生序列化&#xff08;Serializable&#xff09;。支持复杂对象&#xff08;需实现 Serializable 接口&#xff09;…

ssh私钥文件登录问题:Load key invalid format

问题 在mac上面使用私钥文件登录时候&#xff0c;出现了如下错误&#xff1a; Load key “xxx.pem”: invalid format 但是&#xff0c;这个私钥文件在win上面能够正常使用ssh进行远程登录。在mac上面不能。而且&#xff0c;分别在win和mac上面分别查看了这两个私钥文件的md5…

AI战略群与星际之门:软银AI投资版图计划深度解析

一、星际之门:万亿美元级 AI 基础设施革命 1.1 项目背景与战略定位 在 AI 技术迅猛发展的今天,算力已成为推动其前进的核心动力。软银联合 OpenAI、甲骨文、英伟达、微软、arm推出的 “星际之门”(Stargate)计划,无疑是 AI 领域的一颗重磅炸弹。作为 AI 领域史上最大单笔…

教务系统ER图

实体 1. 学生&#xff1a;具有姓名、学号、性别、系编号、电话、出生年月等属性。学号通常是学生的唯一标识。 2. 课程&#xff1a;包含课程编号、课程名称、课程学分、课程学时等属性。课程编号一般用于唯一标识一门课程。 3. 教师&#xff1a;属性有教师编号、教师名字、性别…

大数据(4.4)Hive多表JOIN终极指南:7大关联类型与性能优化实战解析

目录 背景一、Hive JOIN类型与语法详解1. 基础JOIN类型2. 高级JOIN类型 二、JOIN实战案例与调优案例1&#xff1a;两表内连接&#xff08;订单与用户关联&#xff09;案例2&#xff1a;多表链式JOIN&#xff08;用户-订单-商品&#xff09;案例3&#xff1a;处理数据倾斜&#…

【28BYJ-48】STM32同时驱动4个步进电机,支持调速与正反转

资料下载&#xff1a;待更新。。。。 先驱动起来再说&#xff0c;干中学&#xff01;&#xff01;&#xff01; 1、实现功能 STM32同时驱动4个步进电机&#xff0c;支持单独调速与正反转控制 需要资源&#xff1a;16个任意IO口1ms定时器中断 目录 资料下载&#xff1a;待更…

[Lc6_记忆化搜索] 不同路径 | 解决智力问题 | 有序三元组中的最大值

目录 1.不同路径 题解 2140. 解决智力问题 题解 2873. 有序三元组中的最大值 题解 1.不同路径 链接&#xff1a;62. 不同路径 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步…

软件重构与项目进度的矛盾如何解决

软件重构与项目进度之间的矛盾可以通过明确重构目标与范围、采用渐进式重构策略、优化项目管理流程、提高团队沟通效率、建立重构意识文化等方式解决。其中&#xff0c;采用渐进式重构策略尤为关键。渐进式重构是指在日常开发过程中&#xff0c;以小步骤持续进行重构&#xff0…

多台服务器上docker部署 Redis 集群

规划集群节点 确保你的服务器有固定 IP&#xff0c;比如&#xff1a; 172.16.17.100 172.16.17.101 172.16.17.102 每台服务器运行 2 个 Redis 节点&#xff0c;总共 6 个节点&#xff0c;满足 Redis Cluster 最小节点数要求。 2. 在每台服务器上运行 Redis 在每台服务器上执行…

【Pandas】pandas DataFrame dtypes

Pandas2.2 DataFrame Attributes and underlying data 方法描述DataFrame.index用于获取 DataFrame 的行索引DataFrame.columns用于获取 DataFrame 的列标签DataFrame.dtypes用于获取 DataFrame 中每一列的数据类型 pandas.DataFrame.dtypes pandas.DataFrame.dtypes 属性用…