news 2026/5/13 2:31:35

P2701 [USACO5.3] 巨大的牛棚 Big Barn

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
P2701 [USACO5.3] 巨大的牛棚 Big Barn

题目传送门

正方形DP

#include <bits/stdc++.h> using namespace std; // 全局变量定义 int n, t; // n: 农场大小(n×n),t: 果树数量 int a[1010][1010]; // 原始农场地图:a[i][j] = 1 表示有树,0 表示空地 int f[1010][1010]; // DP 数组:f[i][j] 表示以 (i, j) 为右下角的最大空旷正方形的边长 int ans = 0; // 记录全局最大正方形边长 int main() { // 输入农场大小 n 和果树数量 t cin >> n >> t; int x, y; // 读入 t 棵果树的位置,并在地图中标记为 1(表示不可用) while (t--) { cin >> x >> y; a[x][y] = 1; // 注意:题目坐标从 1 开始,直接使用即可 } // 动态规划填表:遍历整个 n×n 农场 for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { // 如果当前位置是空地(没有树) if (a[i][j] == 0) { // 状态转移方程: // f[i][j] = min(左边, 上边, 左上角) + 1 // 原理:要形成更大的正方形,左、上、左上三个方向必须都能支撑 f[i][j] = min( min(f[i][j - 1], f[i - 1][j]), f[i - 1][j - 1] ) + 1; } // 如果 a[i][j] == 1(有树),则 f[i][j] 保持为 0(无法作为正方形的一部分) // 更新全局最大边长 ans = max(ans, f[i][j]); } } // 输出最大可建牛棚的边长 cout << ans; return 0; }

悬线法DP

#include<bits/stdc++.h> using namespace std; const int N=1010; int a[N][N],l[N][N],r[N][N],u[N][N]; int n,t,ans=0; int main() { scanf("%d%d",&n,&t); int x,y; while(t--) { scanf("%d%d",&x,&y); a[x][y]=1; } for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { if(a[i][j]==0){ l[i][j]=r[i][j]=j; u[i][j]=1; } } } // 向左扩展:计算每行每个位置能向左延伸到的最左列 for (int i = 1; i <= n; ++i) for (int j = 2; j <= n; ++j) if (!a[i][j] && !a[i][j - 1]) l[i][j] = l[i][j - 1]; // 向右扩展:计算每行每个位置能向右延伸到的最右列 for (int i = 1; i <= n; ++i) for (int j = n - 1; j >= 1; --j) if (!a[i][j] && !a[i][j + 1]) r[i][j] = r[i][j + 1]; // 向上扩展:计算每个位置向上连续空地的高度 for (int i = 2; i <= n; ++i) for (int j = 1; j <= n; ++j) if (!a[i][j] && !a[i - 1][j]) u[i][j] = u[i - 1][j] + 1; // 动态维护左右边界并更新答案 for (int i = 1; i <= n; ++i) for (int j = 1; j <= n; ++j) { // 如果不在第一行,且当前和上方都是空地,则继承上一行的左右边界(取更紧的) if (i != 1 && !a[i][j] && !a[i - 1][j]) { l[i][j] = max(l[i][j], l[i - 1][j]); r[i][j] = min(r[i][j], r[i - 1][j]); } // 当前位置能形成的最大正方形边长 = min(宽度, 高度) // 宽度 = r[i][j] - l[i][j] + 1,高度 = Up[i][j] ans = max(ans, min(r[i][j] - l[i][j] + 1, u[i][j])); } cout << ans << endl; return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/2 14:45:31

CppCon 2024 学习:Hidden Overhead of a Function API

➡ 函数 API 的设计对性能的影响&#xff0c;往往比函数内部逻辑更大。 很多人谈性能时&#xff0c;只想着&#xff1a; 算法复杂度分支、循环SIMD 或微架构优化 函数 API 设计本身就可能决定性能的上限。 为什么 API 设计比函数逻辑影响更大&#xff1f; 原因与现代 CPU、…

作者头像 李华
网站建设 2026/5/12 1:19:55

深入理解 PHP-FPM 的最佳配置

大多数开发者来说&#xff0c;PHP-FPM 的配置并不是日常工作中需要深入研究的东西。这没什么问题&#xff0c;毕竟不是每个人都想或需要在服务器调优上花时间。况且&#xff0c;现在有很多托管服务&#xff08;宝塔, 1panel等&#xff09;可以帮你把服务器配置好&#xff0c;安…

作者头像 李华
网站建设 2026/5/9 10:27:20

农田 / 防汛 / 气象通用,翻斗雨量传感器一站式监测​

工作原理承水口收集的雨水&#xff0c;经过上筒&#xff08;漏斗&#xff09;&#xff0c;注入计量翻斗——翻斗是用工程塑料注射成型的用中间隔板分成两个等容积的半锥斗室。它是一个机械双稳态结构&#xff0c;当一个斗室接水时&#xff0c;另一个斗室处于等待状态。当所接雨…

作者头像 李华
网站建设 2026/5/7 0:54:18

2025年经销商ERP软件系统选型指南:4款主流ERP系统对比分析

为经销商提供2025年ERP软件系统选型参考。本文客观分析了4款主流ERP系统&#xff0c;包括万达宝、Netsuite、金蝶和Odoo&#xff0c;帮助您根据业务需求做出合适的选择。引言对于经销商而言&#xff0c;选择一款合适的ERP软件系统是提升运营效率、优化供应链和增强客户关系的关…

作者头像 李华
网站建设 2026/5/10 9:34:08

远程测试工作的机遇与挑战

测试行业的范式转移 随着全球化协作体系的完善与云计算技术的普及&#xff0c;远程测试已从应急方案演变为行业新常态。2025年的测试领域正经历着工作模式的深刻重构——分布式团队通过虚拟化环境执行功能验证&#xff0c;利用云平台开展兼容性测试&#xff0c;依托协同工具进…

作者头像 李华
网站建设 2026/4/29 9:54:22

跳出进货误区!用对数据维度,新品首月热销不压货

数帮主打破服装经营的信息壁垒&#xff0c;用数据决策替代经验判断&#xff0c;为进货、库存、营销全环节提供科学支撑。无需再靠运气 “赌” 换季行情&#xff1a;新品能精准匹配本地客群需求&#xff0c;库存周转效率大幅提升&#xff0c;清库时既能快速去化积压货品&#xf…

作者头像 李华