1543: 字符串的运算再现

时间限制: 1 Sec  内存限制: 128 MB
提交: 34  解决: 7
[提交][状态][讨论版]

题目描述

我们对字符串 S 做了以下定义:
1. S ^ k表示由k个字符串S构成的新字符串。 例如, S = "abc", k = 3, 则S ^ k  =  "abcabcabc"
2. Subsequence(S) 表示由字符串S的所有非空子序列构成的字符串集合。例如, S = "abc", 则Subsequence(S) = {"a", "b", "c", "ab", "ac", "bc", "abc"}
现在, 给你2个字符串S和T, 希望你能找到最小的k, 满足T ∈Subsequence(S ^ k)

输入

输入只有2行, 分别为字符串S和T (1 <= |S|, |T| <= 100,000), 输入保证字符串S和T只由小写字母构成。

输出

输出最小的k, 满足T ∈Subsequence(S ^ k), 若不存在这样的k, 则输出-1

样例输入

abc
abacbc

样例输出

3
#pragma GCC diagnostic error "-std=c++11"
#include <bits/stdc++.h>
#define _ ios_base::sync_with_stdio(0);cin.tie(0);
#include <typeinfo> using namespace std;
const int N = + ; char s[N], t[N]; void Init(int * a, int n){ for(int i = ; i < n; i++) a[i] = ;}
int Work(){
int lens = strlen(s), lent = strlen(t);
set<int> next[];
int vis[]; Init(vis, );
for(int i = ; i < lens; i++)
vis[s[i] - 'a'] = , next[s[i]-'a'].insert(i); for(int i = ; i < lent; i++) if(!vis[t[i]-'a']) return -; int cur = , k = ; set<int>::iterator it; for(int i = ; i < lent; i++){
int p = t[i] - 'a';
if((it = next[p].lower_bound(cur)) != next[p].end()) cur = (*it) + ;
else cur = , k++, i--;
}
return k;
}
int main(){ _
while(cin >> s >> t){
cout << Work() << endl;
}
}

HNUSTOJ-1543 字符串的运算再现的更多相关文章

  1. java:字符串的“+”运算

    今天在一篇博客里,意外的看到了一段关于java中对字符串的“+”运算的处理(博客原文:http://blog.csdn.net/yirentianran/article/details/2871417 ...

  2. java 字符串的运算公式直接转计算结果

    // 字符串的运算公式直接转计算结果 public static void main(String[] args) {ScriptEngine se = new ScriptEngineManager ...

  3. Python基础笔记系列八:字符串的运算和相关函数

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 字符串的运算1.字符串的加法和乘法 python中不但支持字符串相加,还支 ...

  4. python字符串的运算有哪些

    python字符串的运算有哪些 1,链接符号 + 2,判断字符串是否在某个字符串中 ‘s’ in ‘this’ 返回bool 3,字符串索引 a="this a my" a[0], ...

  5. 使用栈Stack对整数数值的运算表达式字符串进行运算C#

    这里如果对于形如字符串“((6+((7+8)-9)*9+8/2)-3)/2”的运算表达式进行运算.接触过此类的同学知道这种存在着运算符优先级的表达式,不能直接从左到右进行运算,我们使用OperandS ...

  6. Python学习之旅--第二周--元组、字符串、运算、字典

    一.元组 另一种有序列表叫元组:tuple.tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字: # Author:Tim Gu tuple = (" ...

  7. 利用JavaScript计算引擎进行字符串公式运算

    1.通过js计算引擎计算(java自带) 2.计算公式除了支持基本的方法之外还支持简单js脚本分支计算 3.通过设定map传入参数 4.默认返回最后一个计算结果,如果需返回特定值,将变量补写在公式最后 ...

  8. 优化php代码 - 字符串echo输出 逗号也可作php连接符

    2016年12月12日10:00:16 ====================== 网页访问速度的提升,是可以通过代码的优化来实现的.代码的优化,并不是说代码越少越好,而是主要看代码的运行能力和执行 ...

  9. java提高篇(十四)-----字符串

          可以证明,字符串操作是计算机程序设计中最常见的行为. 一.String 首先我们要明确,String并不是基本数据类型,而是一个对象,并且是不可变的对象.查看源码就会发现String类为f ...

随机推荐

  1. 家谱(gen)x

      家谱(gen) 时间限制  2S [问题描述]     现代的人对于本家族血统越来越感兴趣,现在给出充足的父子关系,请你编写程序找到某个人的最早的祖先. [输入格式]gen.in 输入文件由多行组 ...

  2. jQuery_val()操作

    完成对输入或者选择内容的获取,以及更改 代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...

  3. dataX调优

    dataX调优 标签(空格分隔): ETL 一,Datax调优方向 DataX调优要分成几个部分(注:此处任务机指运行Datax任务所在的机器). 1,网络本身的带宽等硬件因素造成的影响: 2,Dat ...

  4. C++入门经典-例6.19-字符串类型之修改string字符串的单个字符串

    1:头文件 #include <string> 声明一个string变量,形式如下: std::string s; 初始化string类型的变量: std::string s1(" ...

  5. C++入门经典-例6.3-字符串之未使用字符串结束符“\0”和使用字符串结束符“\0”的区别

    1:为字符串数组赋值的方式有两种,即数组元素逐一赋值和使用聚合方式赋值. 为数组元素逐一赋值.例如: pWord[0]='H'; 使用聚合方式赋值如: char pWord[]={'H','E','L ...

  6. hadoop 配置注意

    到目前为止,关于配置1.*版本的hadoop书籍占多数,前面配置2.*失败以后照着书籍配置1.2.1成功. 准备工具:(注意用统一位数的,我的64位) hadoop1.2.1 jdk1.6 xshel ...

  7. VMware or VirtualBox+centos7 安装教程

    一.准备工作:1.首次安装虚拟机时,需要的准备工作:打开intel的虚拟技术服务(否则安装centos系统时会报错).重启电脑,显示log时进入BIOS服务(不同电脑进入BIOS方式不同,一般是进入l ...

  8. 阶段3 2.Spring_04.Spring的常用注解_1 今日课程内容介绍

  9. 四十三:数据库之SQLAlchemy之group_by和having子句

    group_by:根据某个字段进行分组,比如想要根据年龄进行分组,再统计每一组有多少人having:对查找结果进一步过滤,类似于SQL语句的where 准备工作 from sqlalchemy imp ...

  10. 配置pip镜像源(转)

    使用pip安装python扩展时,如若没有配置国内镜像源,在未翻墙的情况下,其下载速度将会特别缓慢.因此,有些时候我们必须使用国内镜像源,来解决pip下载安装速度慢的问题,比较常用的国内镜像包括: 阿 ...