当前位置: 首页 > news >正文

【集合和映射】USACO Bronze 2019 December - 我在哪Where Am I?

题目描述

农夫约翰在马路上散步,结果觉得自己可能迷路了!
在这条路上有 NNN 个农场(1≤N≤1001 \leq N \leq 1001N100),它们排成一行。

不幸的是,这些农场都没有门牌号,使得农夫约翰很难判断自己在路上的位置。
不过,每个农场都有一个彩色的邮箱,所以农夫约翰希望:如果他观察到自己附近邮箱的颜色,就能唯一确定自己所处的位置。

每个邮箱的颜色用一个范围在 A..ZA..ZA..Z 的字母表示,因此整条路的邮箱可以表示为一个长度为 NNN 的字符串。 其中可能会有多个邮箱颜色相同。

农夫约翰想知道:最小的整数 KKK 是多少,才能保证无论他观察到连续 KKK 个邮箱的颜色,都能唯一确定这段序列在路上的位置。

例如,若邮箱序列是 ABCDABC

  • K=3K = 3K=3 时,如果他看到 ABC,则可能是开头的前三个邮箱,也可能是末尾的后三个邮箱,无法唯一确定。
  • K=4K = 4K=4 时,任意连续的 444 个邮箱颜色序列都是唯一的,因此可以唯一确定位置。

输入格式

第一行输入一个整数 NNN
第二行输入一个长度为 NNN 的字符串,表示邮箱的颜色,每个字符在 A..ZA..ZA..Z 范围内。

输出格式

输出一个整数,表示最小的 KKK

样例输入

7
ABCDABC

样例输出

4

提交链接

Where Am I?

思路分析

找到最小的 K,使得所有长度为 K 的子串都是 互不相同的

📌 把输入的字符串看作一条颜色序列。

我们要找到最小的 K,使得所有长度为 K 的连续子串都不重复。

举例:

  • 字符串 "ABCDABC"
    • 长度为 3 的子串:ABC, BCD, CDA, DAB, ABC → 有重复 ❌
    • 长度为 4 的子串:ABCD, BCDA, CDAB, DABC → 全部不同 ✅
    • 因此答案是 K = 4

🧠 核心:枚举子串长度 + 检查唯一性

  1. 枚举 K(从 1 到 N)。
  2. 对于每个 K,提取所有长度为 K 的子串。
  3. setmap 判断是否有重复。
    • 如果有重复 → 说明这个 K 不够。
    • 如果没有重复 → 说明这个 K 可行。
  4. 第一个满足条件的 K 就是答案 🏆。

参考代码

#include <bits/stdc++.h>
using namespace std;int main()
{// freopen("whereami.in" , "r" , stdin);// freopen("whereami.out" , "w" , stdout);int n;cin >> n;string color;cin >> color;color = ' ' + color;for(int s = 1; s <= n; s++)  //枚举看到的长度{map<string , int>m;bool check = true;for(int i = 1; i <= n - s + 1; i++)  //每一个起始位置 对应一个字符串{string door = color.substr(i , s);if(m.count(door)){check = false;break;}	m[door] = 1;}if(check == true){cout << s;return 0;}}return 0;
}
http://www.dtcms.com/a/347820.html

相关文章:

  • 机器学习案例——预测矿物类型(模型训练)
  • DS18B20温度传感器详解
  • 电阻的功率
  • 多光谱相机检测石油石化行业的跑冒滴漏的可行性分析
  • 电蚊拍的原理及电压电容参数深度解析:从高频振荡到倍压整流的完整技术剖析
  • 决策树基础学习教育第二课:量化最优分裂——信息熵与基尼系数
  • 01_Python的in运算符判断列表等是否包含特定元素
  • [Vid-LLM] 创建和训练Vid-LLMs的各种方法体系
  • crypto.randomUUID is not a function
  • 一个备份、去除、新增k8s的node标签脚本
  • Redis(八股二弹)
  • 玳瑁的嵌入式日记D24-0823(数据结构)
  • 每日一题8.23
  • Day26 树的层序遍历 哈希表 排序算法 内核链表
  • 线程池理解
  • CMake安装教程
  • 传统 AI 与生成式 AI:IT 领导者指南
  • 10.Shell脚本修炼手册---脚本的条件测试与比较
  • 如何查看MySQL 的执行计划?
  • 引领GEO优化服务新潮流 赋能企业数字化转型
  • 信贷模型域——信贷获客模型(获客模型)
  • AI大模型 限时找我领取
  • Transformer核心概念I-token
  • Java:对象的浅拷贝与深拷贝
  • 获取高德地图经纬度解析地址的免费API接口(无调用限制)
  • JWT实现Token登录验证
  • 任务型Agent:执行计划详细设计
  • 计算机组成原理(11) 第二章 - 存储系统的基本概念
  • Introduction to GIS ——Chapter 1(Introduction)
  • 控制建模matlab练习15:线性状态反馈控制器-④最优化控制LQR