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

[USACO5.5]Hidden Password

题目大意:
  求字符串最小表示。

思路:
  本来按照lbn187的课件,知道SAM可以求字符串最小表示。
  然而他并没有提供例题,就自己找了一道做。
  大体思想就是把字符串复制一遍接在后面,构建SAM,然后每次跑小的转移。
  跑n次以后就跑到了最小表示的末尾,用该状态的len值减去n就是最小表示的起始位置。
  然后交上去就MLE了。
  看了网上的题解发现求最小表示有专门的做法,也是O(n)的,还特别简单,不知道比SAM妙到哪里去了。
  核心思想就是设两个指针i和j,表示目前比较的循环串的开头位置。
  再用k表示目前比较的循环串的长度。
  当目前比较的串字典序一样大时,增加比较的长度。
  当两个不一样大时,大的那个可以直接舍去,将开头位置加上k+1,继续比较。字典序小的不变。
  一直比较到其中一个指针扫完整个字符串,这时小的那个指针就是最小表示的起始位置。

 1 #include<cstdio>
 2 #include<iostream>
 3 int n;
 4 std::string s,t;
 5 int solve() {
 6     int i=0,j=1;
 7     while(i<n&&j<n) {
 8         int k=0;
 9         while(s[(i+k)%n]==s[(j+k)%n]&&k<n) k++;
10         if(k==n) break;
11         (s[(i+k)%n]>s[(j+k)%n]?i:j)+=k+1;
12         if(i==j) i++;
13     }
14     return std::min(i,j);
15 }
16 int main() {
17     std::cin>>n;
18     while(std::cin>>t) {
19         s+=t;
20     }
21     std::cout<<solve()<<std::endl;
22     return 0;
23 }

 

转载于:https://www.cnblogs.com/skylee03/p/7526731.html

相关文章:

  • springboot maven打包插件
  • 1111111111111
  • python大战机器学习——聚类和EM算法
  • 关于Emmet入门知识点
  • 多方视频会议
  • 机器学习数学基础知识备忘
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • JavaScript对象详解
  • TCPDF微软雅黑字体
  • 简述VMware虚拟机涉及的三种网络模式
  • 2017 9月18日
  • 详解python爬取今日头条街拍美图
  • ubuntu 下nginx安装 并支持https协议
  • Unity post processing stack(v1版本)脚本控制
  • 输出 1-100 内的所有偶数
  • CSS盒模型深入
  • dva中组件的懒加载
  • Fabric架构演变之路
  • Golang-长连接-状态推送
  • JavaScript DOM 10 - 滚动
  • javascript 总结(常用工具类的封装)
  • js如何打印object对象
  • PHP 程序员也能做的 Java 开发 30分钟使用 netty 轻松打造一个高性能 websocket 服务...
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • Terraform入门 - 3. 变更基础设施
  • yii2权限控制rbac之rule详细讲解
  • 成为一名优秀的Developer的书单
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 检测对象或数组
  • 力扣(LeetCode)21
  • 七牛云假注销小指南
  • 前端自动化解决方案
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 微信小程序开发问题汇总
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 一道面试题引发的“血案”
  • 再次简单明了总结flex布局,一看就懂...
  • 7行Python代码的人脸识别
  • mysql面试题分组并合并列
  • 大数据全解:定义、价值及挑战
  • 正则表达式-基础知识Review
  • #android不同版本废弃api,新api。
  • $Django python中使用redis, django中使用(封装了),redis开启事务(管道)
  • (1)(1.11) SiK Radio v2(一)
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (二)Eureka服务搭建,服务注册,服务发现
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (南京观海微电子)——COF介绍
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • . NET自动找可写目录
  • .apk文件,IIS不支持下载解决
  • .NET Core 将实体类转换为 SQL(ORM 映射)
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET分布式缓存Memcached从入门到实战