UVa 698 Index
📅 2026/7/19 7:01:08
👁️ 次浏览
题目描述给定一个索引词列表和若干行文本需要为每个在文本中出现的索引词生成索引条目内容包括该词出现的行号。行号从111开始编号。若一个词在连续多行出现则合并为范围如3-4。若同一词在词典中出现多次重复的索引词则输出同样多次。索引词由字母和数字组成长度不超过101010大小写不敏感输出时统一大写。每行文本中单词由非字母数字字符分隔。输入格式多个测试用例。每个测试用例以若干行索引词开始每行一个词以空行结束。然后若干行文本以空行结束。整个输入以另一个空行结束即最后一个测试用例后的空行。输出格式对于每个测试用例输出Case X:其中XXX为用例编号从111开始。然后对于每个在文本中出现的索引词若词典中有多个相同词则输出多次输出该词输出格式为词 行号列表每个行号列表用逗号和空格分隔连续行合并为范围。最后在每个用例后输出一个空行。样例输入empty character of for it An empty line has no characters in it at all (except for the end of line character). No word will have more than ten characters in it. The end of the cases will be followed by another empty line. It follows the empty line ending the text of the last case. Repeat A line A repeat of a word on a line does not result in a repeat of the line number in the index.输出Case 1 CHARACTER 2 EMPTY 1, 4 FOR 1 IT 1, 3-4 OF 2-3, 5 Case 2 A 1 LINE 1-2 REPEAT 1题目分析本题要求对文本中的单词进行索引。关键步骤读入索引词列表转为大写存入mapstring, int记录每个词在词典中出现的次数用于重复输出以及mapstring, vectorpairint,int存储每个词出现的行号区间。逐行读入文本对每行提取所有由字母和数字组成的单词忽略其他字符转为大写。若该词在词典中则记录行号若该行号与前一个记录的行号连续则扩展当前区间否则新建区间。输出时按字典序排序因此我们采用map自然排序字典序。解题思路读入索引词列表存入mapstring, int counter记录出现次数和mapstring, vectorpairint,int indexing记录行号区间。逐行读入文本对每行遍历字符提取单词字母或数字转为大写若在indexing中存在则记录行号。记录行号时若该词已有一个区间且当前行号等于区间末尾1 11则扩展区间否则新建区间。输出按indexing的键顺序字典序对每个词若其区间列表非空则输出该词和行号区间列表用逗号和空格分隔连续区间合并为a-b。若counter[word] 1则输出多次。复杂度分析设文本行数为RRR每行单词数WWW索引词数TTT。总复杂度O(R⋅W⋅logT)O(R \cdot W \cdot \log T)O(R⋅W⋅logT)。代码实现// Index// UVa ID: 698// Verdict: Accepted// Submission Date: 2017-06-22// UVa Run Time: 0.040s//// 版权所有C2017邱秋。metaphysis # yeah dot net#includebits/stdc.husingnamespacestd;intmain(){cin.tie(0),cout.tie(0),ios::sync_with_stdio(false);mapstring,intcounter;mapstring,vectorpairint,intindexing;string line,word;intcases0;while(getline(cin,word)){counter.clear();indexing.clear();do{for(inti0;iword.length();i)word[i]toupper(word[i]);counter[word];if(counter[word]1)continue;indexing.insert(make_pair(word,vectorpairint,int()));}while(getline(cin,word),word.length()0);intlineNumbers1;while(getline(cin,line),line.length()0){intidx0;while(idxline.length()){if(isalpha(line[idx])||isdigit(line[idx])){string block;while(idxline.length()){if(isalpha(line[idx])||isdigit(line[idx]))blocktoupper(line[idx]);elsebreak;idx1;}if(indexing.find(block)!indexing.end()){if(indexing[block].size()0){indexing[block].push_back(make_pair(lineNumbers,lineNumbers));}else{if(lineNumbers!indexing[block].back().second){if(indexing[block].back().second1lineNumbers)indexing[block].back().second1;elseindexing[block].push_back(make_pair(lineNumbers,lineNumbers));}}}}elseidx1;}lineNumbers1;}coutCase cases\n;for(autoentry:indexing){if(entry.second.size()0)continue;for(inti0;icounter[entry.first];i){coutentry.first;boolfirsttrue;for(autop:entry.second){if(first)firstfalse;elsecout,;cout ;if(p.firstp.second)coutp.first;elsecoutp.first-p.second;}cout\n;}}cout\n;}return0;}总结本题通过扫描文本提取单词并利用区间合并技术记录行号范围最后按字典序输出索引。关键点包括正确提取单词字母数字序列。大小写不敏感统一转为大写。重复索引词需要输出多次。连续行号合并为范围。该解法是文本索引的经典实现适合作为字符串处理和映射容器的练习。
1. 项目概述与核心价值最近在做一个需要跨设备同步数据的桌面应用,核心需求之一就是实现稳定可靠的文件双向传输。简单来说,就是客户端能上传文件到服务端,也能从服务端下载指定的文件。听起来像是FTP的简化版,但用Qt/C自己撸一套…
📅 2026/7/18 4:49:24
1. 项目概述:从BMP到PNG,VC中的图像格式跨越在Windows桌面应用开发,尤其是那些涉及图形界面、图像处理或者游戏开发的场景里,我们经常会遇到一个经典问题:如何让程序里的图标、贴图或者UI元素拥有漂亮的透明背景&#…
📅 2026/7/18 4:49:24
最近,一段“乌梅不用跪!朕说了乌梅不!用!跪!”的对话截图在技术圈悄然流传。表面看是职场情绪段子,但戳中的却是技术管理者们最真实的痛点——当你的团队在架构设计、技术选型或代码规范上反复踩坑时&#…
📅 2026/7/18 4:48:24
1. 项目概述:从“备份文件”到“安全灾难”的隐秘通道在Web安全的世界里,最致命的漏洞往往不是那些需要复杂利用链的远程代码执行,而是那些由开发者“无心插柳”留下的、看似无害的“后门”。源码泄露与备份文件利用,就是这类问题…
📅 2026/7/19 7:00:27
1. Kivy自定义窗口部件开发实战:从零构建简易画板应用作为一款跨平台的Python GUI框架,Kivy在移动端和桌面端应用开发中展现出独特优势。今天我们就通过开发一个简易画板应用,来深入掌握Kivy的核心开发模式——自定义窗口部件(Widget)的创建与…
📅 2026/7/19 7:00:27
RAID扩容慢到抓狂?打开这个选项,速度直接翻倍!最近在给公司的一台Dell服务器做RAID扩容时,遇到了一个让人抓狂的问题——原本预计几小时完成的扩容操作,实际运行了整整一天还没完成!经过深入排查࿰…
📅 2026/7/19 7:00:27
1. 数字电路设计基础与仿真工具概述数字电路设计是现代电子工程的核心技能之一,它涉及使用逻辑门、触发器等基本构建块来创建能够处理二进制信号的电路系统。与模拟电路不同,数字电路工作在离散的电压水平(通常表示为0和1)&#x…
📅 2026/7/19 7:00:27
1. 嵌入式处理器概述嵌入式处理器是专为特定应用场景设计的计算核心,与通用处理器相比具有低功耗、高实时性和定制化特性。这类处理器广泛应用于工业控制、汽车电子、消费电子等领域,承担着数据采集、信号处理和系统控制等关键任务。根据架构不同&#x…
📅 2026/7/19 7:00:27
前言
“海风日记“提供了两种日记详情页样式:DiaryDetailPage 的纸张风格,和 DiaryDetail2Page 的卡片风格。本文介绍第二种风格——卡片式详情页,以琥珀渐变卡片展示日期,配以白色正文卡片,整体风格更现代、更精致。…
📅 2026/7/19 6:59:27
1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…
📅 2026/7/19 0:00:51
1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…
📅 2026/7/19 0:00:51
更多请点击:
https://intelliparadigm.com
第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…
📅 2026/7/19 0:00:51
1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…
📅 2026/7/19 0:00:51
1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…
📅 2026/7/19 0:00:51
更多请点击:
https://intelliparadigm.com
第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…
📅 2026/7/19 0:00:51
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/18 7:01:02
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/18 17:01:33
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/19 5:02:03