UVA-1471 防线 题解答案代码 算法竞赛入门经典第二版
📅 2026/7/8 23:22:02
👁️ 次浏览
GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版一道思路比较巧妙的题目我是完全按照算法竞赛入门经典书中的方式去做的。首先用O(n)计算出每个节点作为开头的连续子序列长度以及作为结尾的连续子序列长度。然后遍历数组以为开头的连续子序列长度作为当前值。然后查找从1到i-1作为结尾的最长的值且结尾的数字小于当前数组的数字。查找过程使用set数据结构。set中也是在遍历中动态添加数据的遍历到第i个数据就添加i-1的数据到set然后再查找。set中存储的结构按照数组值优先排序相同时按照【作为结尾的连续子序列长度】排序升序。每添加一个值时去除无用的值1. set中存在当数组值更小且子序列长度更长的值时插入的值无用应该被抛弃。2. set中存在数组值更大且子序列长度更短的值这些值应被抛弃。然后set中就仅存在数组值更大子序列长度也更长的值了。这样我们查找比当前遍历的数组值小的那个元素就是子序列长度更长的值。AC代码#include stdio.h #include string.h #include set using namespace std; #define MAXN 200005 int arr[MAXN]; int n; // leftArr是以i开头的连续子序列长度 // rightArr是以i结尾的连续子序列长度 int leftArr[MAXN], rightArr[MAXN]; struct Stu { int arrV; int value; }; bool operator(const Stu left, const Stu right) { if (left.arrV ! right.arrV) return left.arrV right.arrV; return left.value right.value; } setStu se; void init() { se.clear(); int i, left; memset(leftArr, 0, sizeof(leftArr)); memset(rightArr, 0, sizeof(rightArr)); leftArr[0] 1; left 0; for (i 1; i n; i) { if (arr[i] arr[i - 1]) { leftArr[left]; if (i n - 1) rightArr[i] leftArr[left]; } else { rightArr[i - 1] leftArr[left]; left i; leftArr[i] 1; if (i n - 1) rightArr[i] 1; } } for (i 1; i n; i) { if (leftArr[i]) continue; leftArr[i] leftArr[i - 1] - 1; } for (i n - 1; i 0; --i) { if (rightArr[i]) continue; rightArr[i] rightArr[i 1] - 1; } // output /* for (i 0; i n; i) printf(%2d , arr[i]); putchar(\n); for (i 0; i n; i) printf(%2d , leftArr[i]); putchar(\n); for (i 0; i n; i) printf(%2d , rightArr[i]); putchar(\n); */ } int computed() { int i, j, k; bool flag; int value, maxValue leftArr[0]; for (i 1; i n; i) { Stu item {arr[i - 1], rightArr[i - 1]}; se.insert(item); auto ip se.find(item); flag false; if (ip ! se.begin()) { ip--; // 如果前一个元素的值大于当前元素那么当前值没有插入的必要 if (ip-value item.value) { se.erase(item); flag true; } else if (ip-arrV item.arrV) // arr[i]的值相等且当前值value更大则前一个值没有存在的必要 se.erase(ip); } if (!flag) { // 向后删除value值更小没有存在必要的元素 ip se.find(item); ip; while (ip ! se.end()) { if (ip-value item.value) se.erase(ip); else break; } } // 对于rightArr[i], 从set中找最合适的元素 ip se.lower_bound({arr[i], 0}); if (ip se.begin()) value ip-value; else { --ip; value leftArr[i] ip-value; } if (value maxValue) maxValue value; } return maxValue; } int main() { int t, i; scanf(%d, t); while (t--) { scanf(%d, n); for (i 0; i n; i) scanf(%d, arr[i]); init(); printf(%d\n, computed()); } return 0; }
本文深入剖析了本地部署AI的优势与劣势,包括数据隐私保护、无使用限制、深度定制能力及离线使用等优势,同时也指出了硬件成本高昂、技术门槛不低及维护成本持续等劣势。文章针对不同需求场景,如数据敏感度、定制需求、网络环境及预算能力&…
📅 2026/7/8 23:22:02
USVInland与FloW数据集:水上无人驾驶感知技术的三栖实战手册1. 水上无人驾驶数据集的战略价值与技术挑战当陆地自动驾驶还在为复杂城市场景绞尽脑汁时,水上无人驾驶已经悄然开辟了新的技术战场。水面环境的独特性造就了完全不同于陆地的感知范式——动态…
📅 2026/7/8 23:22:02
4D毫米波雷达水上应用:WaterScenes数据集在3类感知任务中的性能基准水面自动驾驶正迎来技术突破的关键时刻。当无人船在波涛汹涌的水域航行时,传感器系统需要应对比陆地环境更复杂的挑战——水面反光、雾气干扰、动态波浪以及各类漂浮物。传统3D雷达和激…
📅 2026/7/8 23:22:02
博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…
📅 2026/7/9 0:18:15
更多请点击:
https://intelliparadigm.com
第一章:Copilot与Cursor的底层定位差异 Copilot 和 Cursor 虽同属 AI 编程助手范畴,但其设计哲学、运行机制与集成深度存在本质区别。Copilot 是 GitHub 推出的云原生代码补全服务,核心…
📅 2026/7/9 0:18:15
5分钟学会:如何将B站缓存视频永久保存为MP4格式 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter
你是否曾经遇到过这样的情况…
📅 2026/7/9 0:18:15
如何用3个实战步骤掌握暗黑2存档编辑器的终极修改技巧 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor
当你在暗黑破坏神2中花费数十小时打造的角色因为装备配置不合理而卡关,或者想要测试新的技能组合却不想重新练级…
📅 2026/7/9 0:18:15
IntelliJ IDEA Markdown插件深度解析:专业文档编写解决方案 【免费下载链接】idea-markdown Markdown language support for IntelliJ IDEA (abandonned). 项目地址: https://gitcode.com/gh_mirrors/id/idea-markdown
idea-markdown插件为IntelliJ IDEA系列…
📅 2026/7/9 0:18:15
如何在SketchUp中轻松实现3D打印:STL导入导出完全指南 【免费下载链接】sketchup-stl A SketchUp Ruby Extension that adds STL (STereoLithography) file format import and export. 项目地址: https://gitcode.com/gh_mirrors/sk/sketchup-stl
你是否曾经…
📅 2026/7/9 0:16:15
掌握Docker多阶段构建镜像优化技巧在容器化技术日益普及的今天,Docker已成为开发与运维领域的基石工具。然而,随着应用复杂度提升,构建出的Docker镜像体积庞大、层数繁多、安全性欠佳等问题逐渐凸显,直接影响着部署效率、传输速度…
📅 2026/7/9 0:00:13
在当今快速迭代的IT运维与开发领域,自动化已成为提升效率、保障一致性的核心支柱。Ansible作为一款强大的IT自动化工具,以其无代理、简单易用的特点广受欢迎。而AWX,作为Ansible上游项目提供的企业级Web界面、API及任务引擎,则将A…
📅 2026/7/9 0:00:13
1. 项目概述:当动画成为性能瓶颈在Unity项目开发的中后期,尤其是涉及大规模场景、海量角色或复杂特效时,动画系统往往会成为性能的“阿喀琉斯之踵”。传统的骨骼动画(Skinned Mesh Renderer)虽然功能强大,但…
📅 2026/7/9 0:00:13
1. 项目背景与核心需求 在嵌入式系统开发中,快速精确的数据检索是一个常见但极具挑战性的需求。特别是在工业控制、医疗设备和物联网终端等场景下,系统往往需要在毫秒级时间内完成关键参数的读取和写入操作。传统基于Flash存储的方案存在擦写次数有限、操…
📅 2026/7/8 14:10:54
1. 工业电流环信号传输的基础认知在工业自动化领域,4-20mA电流环传输技术已经持续服役超过半个世纪。这种看似简单的信号传输方式之所以能经久不衰,核心在于其独特的抗干扰能力——电流信号在长距离传输时几乎不受线路电阻和电压波动的影响。我曾在化工厂…
📅 2026/7/8 14:10:54
最近在项目里尝试用 YOLO 做目标检测,从环境搭建到模型训练,再到推理部署,整个过程踩了不少坑。网上的资料虽然多,但要么版本老旧,要么步骤零散不成体系,对于刚入门的新手来说,很容易卡在某个环…
📅 2026/7/8 11:28:59
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/8 14:10:54
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/8 14:10:54
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/8 14:10:54