新闻详情

新闻详情

首页 / 资讯中心 / 详情

UVA-12265 贩卖土地 题解答案代码 算法竞赛入门经典第二版

发布时间:2026/11/15 11:20:09来源:尧图网络
UVA-12265 贩卖土地 题解答案代码 算法竞赛入门经典第二版
GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版虽然算法竞赛入门经典书中标的是两个星号表示难度较高但是从方法和代码量上来看我觉得和两颗星的难度还差的比较远。当然或许是我直接看了书中的分析再做的缘故。参考书中的方式我的实现如下1. 首先计算每个格子向上连续的空地格数。一起计算的话只需要O(mn)即可。2. 然后是遍历每行再遍历每行中的每个元素计算最大的周长。3. 这里使用了一个链表存储这个元素前面元素的空地和格数根据一定规则调整和删除元素3.1. 如果当前格子是沼泽那么清空链表因为前面的所有元素都不能使用了。3.2. 如果当前元素的高度比之前的短那么之前的更长元素统一调整成当前元素的长度。因为如果要想组成矩形当前高度会作为之前元素的永远的限制。3.3. 如果某个元素的前面的元素要更高或者一样高那么这个元素没必要存在。即之前元素高度和你一样但是矩形长度比你更长因此不管后面走多少步都不会选择你。然后是遍历链表找到最大值并统计最后输出。AC代码#include stdio.h #include map #include list #define MAXMN 1005 using namespace std; int arr[MAXMN][MAXMN]; int m, n; // 当前格往上的连续最高格 int arrTop[MAXMN][MAXMN]; // 存放结果数据 mapint, int mp; void outputArr() { int i, j; for (i 0; i m; i) { for (j 0; j n; j) printf(%d, arrTop[i][j]); putchar(\n); } putchar(\n); } void getArrTop() { int i, j; for (i 0; i n; i) { arrTop[0][i] arr[0][i]; for (j 1; j m; j) { if (arr[j][i] 0) arrTop[j][i] 0; else arrTop[j][i] arrTop[j - 1][i] 1; } } } struct Node { int num, top; }; void printList(listNode ls) { for (auto ip ls.begin(); ip ! ls.end(); ip) { printf(top %d num %d\n, ip-top, ip-num); } } void computed(int line) { int i, j, maxV, value; listNode ls; auto ip ls.begin(), ipt ls.begin(); for (i 0; i n; i) { if (arr[line][i] 0) { // 清空list ls.clear(); continue; } Node no {i, arrTop[line][i]}; ls.push_back(no); // 统一调整限高 for (ip ls.begin(); ip ! ls.end(); ip) { if (ip-top no.top) ip-top no.top; } // 统一计算去掉的情况 ip ls.begin(), ipt ls.begin(); ip; while (ip ! ls.end()) { if (ip-top ipt-top) { ip ls.erase(ip); } else { ipt ip; ip; } } // 统一计算最大值 maxV 0; for (ip ls.begin(); ip ! ls.end(); ip) { value ip-top * 2 2 * (i - ip-num 1); if (maxV value) maxV value; } if (maxV ! 0) { if (!mp[maxV]) mp[maxV] 1; else mp[maxV]; } } } int main() { int t; int i, j; char c; scanf(%d, t); while (t--) { scanf(%d %d, m, n); for (i 0; i m; i) { getchar(); for (j 0; j n; j) { scanf(%c, c); if (c .) arr[i][j] 1; else arr[i][j] 0; } } getArrTop(); mp.clear(); for (i 0; i m; i) computed(i); for (auto ip mp.begin(); ip ! mp.end(); ip) { printf(%d x %d\n, ip-second, ip-first); } } return 0; }
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/15 4:54:16

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/15 2:04:12

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/14 10:11:15

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/14 17:14:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/14 16:35:50

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/15 4:06:36

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉