UVa 789 Indexing

发布时间:2026/8/31 15:33:08

UVa 789 Indexing
题目描述给定一段由大写字母组成的文本以及一个字符KEYKEYKEY。文本中的单词由空格分隔每个单词长度不超过808080单词不会跨行每行长度不超过808080。要求输出一个按字典序升序排列的索引列出所有以KEYKEYKEY开头的单词每个单词后跟它出现的所有行号行号从111开始编号。同一行中一个单词出现多次行号只应出现一次。输入格式输入第一行为一个字符KEYKEYKEY。随后若干行文本由大写字母和空格组成。文本可能包含标点符号如逗号、句号这些标点符号应被视为单词的一部分根据样例TEXT.中的句点被视为单词的一部分但输出中只显示TEXT。实际上题目描述中“words”可能仅指由字母组成的连续序列但输入可能包含标点。样例中KEY,的逗号被忽略TEXT.的句点被忽略因此需要去除单词首尾的非大写字母字符。输入以文件结束终止。输出格式按字典序升序输出所有以KEYKEYKEY开头的单词每行格式为单词后跟一个空格然后是该单词出现的所有行号行号之间用空格分隔。每个单词只输出一次。样例输入T CONSIDER SEVERAL LINES OF TEXT AND ONE CHARACTER CALLED KEY, SPECIFIED ON A LINE PRECEDING THE TEXT. THE WORDS IN THE TEXT ARE SEPARATED BY SINGLE SPACE. THERE ARE NO WORDS SPLITTED BETWEEN TWO LINES. WRITE A PROGRAM TO DISPLAY AN INDEX OF ALL WORDS WITHIN THE TEXT STARTING WITH THE KEY. THE INDEX MUST BE ALPHABETICALLY SORTED. EACH WORD IN THE INDEX MUST BE FOLLOWED BY THE LIST OF THE LINE NUMBERS IN WHICH IT APPEARS.样例输出TEXT 1 2 5 THE 2 5 6 7 THERE 3 TO 5 TWO 3题目分析文本中的单词由连续的大写字母序列构成但可能存在非字母字符如标点附着在单词首尾。处理时需去除单词首尾的非大写字母字符仅保留大写字母组成的核心单词。然后筛选出首字符等于KEYKEYKEY的单词记录其出现的行号去重。最后按字典序输出所有符合条件的单词及其行号集合。解题思路实现步骤确定如下步骤1\texttt{1}1. 读取KEYKEYKEY字符忽略后续换行。步骤2\texttt{2}2. 初始化行号计数器lineNumbers1\textit{lineNumbers} 1lineNumbers1。使用std::mapstring, setint indexing存储每个单词及其出现行号的集合。步骤3\texttt{3}3. 循环读取每一行文本。对于每行使用字符串流istringstream提取每个单词以空格分隔。对每个单词循环去除首部非大写字母字符再循环去除尾部非大写字母字符。若处理后的单词非空且首字符等于KEYKEYKEY则将该行号插入到该单词对应的集合中。步骤4\texttt{4}4. 处理完一行后行号加111。步骤5\texttt{5}5. 所有行读完后按字典序遍历indexing输出每个单词和其行号集合行号升序因set自动排序。该算法时间复杂度O(Llog⁡W)O(L \log W)O(LlogW)其中LLL为单词总数WWW为不同单词数空间复杂度O(W)O(W)O(W)满足输入规模。代码实现// Indexing// UVa ID: 789// Verdict: Accepted// Submission Date: 2017-06-11// UVa Run Time: 0.110s//// 版权所有C2017邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;intmain(intargc,char*argv[]){cin.tie(0),cout.tie(0),ios::sync_with_stdio(false);mapstring,setintindexing;charkey;cinkey;cin.ignore(1024,\n);string line,word;intlineNumbers1;while(getline(cin,line)){istringstreamiss(line);while(issword){while(word.length()0!isupper(word.front()))word.erase(word.begin());while(word.length()0!isupper(word.back()))word.pop_back();if(word.length()0word.front()key)indexing[word].insert(lineNumbers);}lineNumbers1;}for(autoentry:indexing){coutentry.first;for(autonumber:entry.second)cout number;cout\n;}return0;}总结本题通过使用std::map和std::set实现了单词到行号的映射并自动完成去重和排序。关键在于正确提取单词的核心部分去除前后非大写字母字符。输入可能包含标点但单词由大写字母组成标点不被视作单词的一部分但样例显示标点会被忽略因此去除首尾非大写字母即可。输出按字典序升序行号升序完全符合要求。该解法简洁高效适用于类似索引生成任务。

相关新闻

UVa 787 Maximum Sub‑sequence Product

UVa 787 Maximum Sub‑sequence Product

2026/8/31 15:33:08

题目描述 给定一个整数序列,要求找出其中非空连续子序列的最大乘积。序列中的每个数最多 555 位,序列长度最多 100100100。输入包含多个序列,每个序列以数字 -999999 结束(该数字不属于序列)。输出每个序列的最大子序列…

基于SpringBoot的家政服务平台系统(源码+lw+部署文档+讲解等)

基于SpringBoot的家政服务平台系统(源码+lw+部署文档+讲解等)

2026/8/31 15:23:08

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

SSM框架整合实战:健身房管理系统从设计到前后端对接全解析

SSM框架整合实战:健身房管理系统从设计到前后端对接全解析

2026/8/31 15:23:08

简介:本资源是一套基于SSM(SpringSpringMVCMyBatis)框架开发的B/S架构健身房管理系统完整源码,面向计算机、电子信息工程等专业的本科生及毕业设计群体,适用于高分毕设、课程设计与期末大作业场景。系统采用Java 1.8、…

基于Spark和协同过滤的短视频推荐系统设计与实现

基于Spark和协同过滤的短视频推荐系统设计与实现

2026/8/31 17:43:14

每年到毕业设计选题季,总能看到两类学生:一类想选个“看起来厉害”的题目,结果难度失控,做到最后连系统都跑不起来;另一类选了最稳妥的管理系统,答辩时被老师追问“技术难点在哪里”,一句话都答…

版本更新后玩家现状分析:从埋点到看板的完整数据链路

版本更新后玩家现状分析:从埋点到看板的完整数据链路

2026/8/31 17:43:14

版本更新上线后,最怕的不是玩家反馈多,而是团队对“玩家现状”两眼一抹黑。以《异环》1.3 版本更新为例,运营和数据同学最常问的问题通常是:日活有没有起来?留存稳不稳?付费有没有波动?社区到底…

嵌入式参数一键恢复设计:从CRC校验到备份区兜底的工程实践

嵌入式参数一键恢复设计:从CRC校验到备份区兜底的工程实践

2026/8/31 17:43:14

调参一时爽,改坏火葬场。做嵌入式开发的人,几乎都经历过这样一个瞬间:前一天调试PID参数,调得设备运行如飞,今天一上电,设备要么疯转,要么直接死机。更让人头大的是,产品已经交付到现…

动态库全局变量:从stdout看符号解析与符号覆盖

动态库全局变量:从stdout看符号解析与符号覆盖

2026/8/31 17:43:14

动态库里的全局变量,平时写业务代码很难注意到,但一旦你开始做插件系统、写共享日志库、或者把一套 C 模块拆成 .so 来复用,它就会以最隐晦的方式坑你一次。这次我们用 Linux 下的 gcc glibc 环境,以fprintf和stdout为线索&#…

基于YOLOv8的纸箱质量检测实战:从数据集构建到部署

基于YOLOv8的纸箱质量检测实战:从数据集构建到部署

2026/8/31 17:43:14

简介:本资源是面向计算机视觉初学者与工业质检场景开发者的YOLO系列算法实战数据集,聚焦快递物流环节中包装纸盒质量自动判别任务,解决Box、Box_broken、Box_damaged等五类常见缺陷的检测需求。数据集共2000个文件,含1040张高质量…

用C#从零打造Windows BLE低功耗蓝牙调试助手

用C#从零打造Windows BLE低功耗蓝牙调试助手

2026/8/31 17:33:13

简介:这是一套面向C#开发者与嵌入式蓝牙调试工程师的低功耗蓝牙(BLE)实战工具源码,专为解决Windows平台下BLE设备(如HC-08模块)快速联调缺乏成熟GUI工具的痛点而设计。资源基于VS2019开发,兼容W…

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/8/31 1:38:25

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/8/31 7:20:57

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/8/31 17:18:46

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

MCU无DAC如何用定时器+DMA 2D输出高保真任意波形

MCU无DAC如何用定时器+DMA 2D输出高保真任意波形

2026/8/31 0:02:27

接到一个仪表类项目,要在 LAT1189 上输出几种不同波形:正弦、三角、带可调死区的脉冲,频率和幅度都得能实时改。板子上没有 DAC,就一个定时器加几个 DMA 通道。我一开始觉得在定时器中断里改比较寄存器也能应付,后来把…

Cortex-M3 Flash下载失败?从编程错误标志到供电瞬态排查

Cortex-M3 Flash下载失败?从编程错误标志到供电瞬态排查

2026/8/31 0:02:27

前两周调试一块带着Cortex-M3内核的板子,IDE里下载固件时突然弹出一行刺眼的错误: error: flash download failed - cortex-m3 。这种报错在嵌入式开发里太常见了,常见到很多人第一反应就是换根数据线、重插一下调试器,但重启三…

STM32 TouchGFX屏幕切换Transition优化:原理、配置与排障实战

STM32 TouchGFX屏幕切换Transition优化:原理、配置与排障实战

2026/8/31 0:02:27

做STM32 GUI开发的朋友应该都有体会——界面搭得再漂亮,一旦屏幕切换卡成PPT,整个产品的档次瞬间就没了。早期我在LAT1212这个基于STM32的GUI工程上用TouchGFX做二次开发,最头疼的不是画界面,而是怎么让切换动画既流畅又自然。Tou…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/31 17:18:51

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/31 17:18:48

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/31 17:18:48

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…