L: Long Long Ago

时间限制: 1 s      内存限制: 128 MB     
 

题目描述

今天SHIELD捕获到一段从敌方基地发出的信息里面包含一串被经过某种算法加密过的的序列L
组织的间谍活动如下几个线索:
这个算法不会改变秘密消息的字符顺序,但是会两个字符之间在中间加入未知个数的字符
如原信息
ab
可能的加密结果
ammmxxxxb
现在你有n个待选关键字
如果这个关键字可能是秘密消息输出Yes,否则输出No
如ammmmxxxxb
可能包含的关键字有
ab
mb
mxb
......

输入

第一行输入一串字符串L

(1≤L≤105)
第二行输入一个整数N,表示查找字符串的个数。(1≤N≤105)
接下来N行表示,输入一行字符串M

n个字符的长度之和为[1,100000]

输出

输出N

行,如果是符合提议就输出Yes,否则输出No

样例输入

noiauwfaurainairtqltqlmomomo
8
rain
air
tql
ntt
xiaobai
oiiiooo
orzcnzcnznb
ooooo

样例输出

Yes
Yes
Yes
Yes
No
Yes
No
No
#include<iostream>
#include<math.h>
#include<string.h>
#include<vector>
#define ll long long
using namespace std;
vector<ll>p[];//开个二维的动态数组
char s[],ss[];
ll find2(ll target, ll k)
{
if (p[target].size() == )
return -;
else
{
ll l = , r = p[target].size() - , mid;
while (l <= r)
{
mid = l + ((r - l) >> );
if (p[target][mid] > k)//p[target][mid]=target在s数组的下标
r = mid - ;
else
l = mid + ;
}
if (l <= p[target].size()-)
return p[target][l];
else
return -;
}
}
int main()
{
ll n;
scanf("%s", s);
for (int i = ;s[i]; i++)//如果用i<strlen(s)会超时
p[s[i] - 'a'].push_back(i);
scanf("%lld", &n);
while (n--)
{
scanf("%s", ss);
ll k = -, flag = ;
for (int i = ; ss[i]; i++)
{
k=find2(ss[i] - 'a', k);//k是上一次查找返回的位置,初始化为-1
if (k == -)
{
flag = ;
break;
}
}
if (flag == )
printf("Yes\n");
else
printf("No\n");
}
//system("pause");
return ;
}

超时的strlen、sqrt     https://blog.csdn.net/xxiaobaib/article/details/78228547

L: Long Long Ago---二分的更多相关文章

  1. C. Tavas and Karafs 二分查找+贪心

    C. Tavas and Karafs #include <iostream> #include <cstdio> #include <cstring> #incl ...

  2. UVa 10539 (筛素数、二分查找) Almost Prime Numbers

    题意: 求正整数L和U之间有多少个整数x满足形如x=pk 这种形式,其中p为素数,k>1 分析: 首先筛出1e6内的素数,枚举每个素数求出1e12内所有满足条件的数,然后排序. 对于L和U,二分 ...

  3. hdu4717 The Moving Points(二分做法)

    这道题看了大家都是用三分做的,其实这道题也是可以用二分来做的,就是利用一下他们的单调性. 对于N个点,总共要考虑N(N+1)/2个距离,距离可以用二次函数表示,而且开口都是向上的. 下面具体说一下二分 ...

  4. STL--G - For Fans of Statistics(两个推断条件-二分)

    G - For Fans of Statistics Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & ...

  5. POJ 2104:K-th Number(整体二分)

    http://poj.org/problem?id=2104 题意:给出n个数和m个询问求区间第K小. 思路:以前用主席树做过,这次学整体二分来做.整体二分在yr大佬的指点下,终于大概懂了点了.对于二 ...

  6. POJ 1845 Sumdiv#质因数分解+二分

    题目链接:http://poj.org/problem?id=1845 关于质因数分解,模板见:http://www.cnblogs.com/atmacmer/p/5285810.html 二分法思想 ...

  7. BZOJ2406矩阵——有上下界的可行流+二分答案

    题目描述 输入 第一行两个数n.m,表示矩阵的大小. 接下来n行,每行m列,描述矩阵A. 最后一行两个数L,R. 输出 第一行,输出最小的答案: 样例输入 2 2 0 1 2 1 0 1 样例输出 1 ...

  8. bzoj 4326: NOIP2015 运输计划(二分+树链剖分)

    传送门 题解: 树链剖分快速求解任意两点间的路径的权值和: 然后,二分答案: 此题的难点是如何快速求解重合路径? 差分数组可以否??? 在此之前先介绍一下相关变量: int fa[maxn]; int ...

  9. 洛谷 P1163"银行贷款"(二分)

    传送门 题解: 二分月利率,假设当前判断的月利率为x: 那么如何判断x是大了还是小了呢? 下面来分析一下Check()函数: bool Check(double x) { double tot=a; ...

  10. CodeForces 1117C Magic Ship (循环节+二分答案)

    <题目链接> 题目大意: 给定起点和终点,某艘船想从起点走到终点,但是海面上会周期性的刮风,船在任何时候都能够向四个方向走,或者选择不走,船的真正行走路线是船的行走和风的走向叠加的,求船从 ...

随机推荐

  1. UVa 506 System Dependencies (细节问题)

    题意:输入几种指令,让你进行模拟操作,指令如下: DEPEND item1 item2 (item3 ...) 安装item1需要先安装item2(.item3……) INSTALL item1 安装 ...

  2. 项目中使用WCF替换asmx Web service总结

    以前项目解决方案中,用http协议的asmx Web service作服务器数据访问入口,在SoapHeader中写入用户名和加盐密码进行身份认证. http asmx服务是明文传输,传输过程中数据很 ...

  3. (字典树)Revenge of Fibonacci -- HDU -- 4099

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=4099 要用c++交哦, G++ MLE 不是很懂,先粘上慢慢学习 代码: #include<std ...

  4. Vivado安装教程

    Vivado的各个版本的安流程其实都差不多,本教程用Vivado2016.4为例进行安装,同样适用于之前和之后的各个版本. 下载好安装包后打开,双击xsetup.exe运行安装程序 弹出的窗口,提示现 ...

  5. 怎样运用servlet

    制作登陆界面 login.html <!DOCTYPE html> <html> <head> <title>login.html</title& ...

  6. Centos7 Minni 安装 执行ifconfig命令出现 -bash ifconfig command not found 的解决方法

    1) have a root privilege shell or be on the sudo list. 2a) At a root shell prompt (#) yum install ne ...

  7. /usr/bin/curl: Argument list too long的解决方法

    使用curl发送http请求时,会出现-bash: /usr/bin/curl: Argument list too long的错误,此时,可用采用httpie代替curl发送请求: pip inst ...

  8. jenkins Build Flow job 输入参数获取和传递

    jenkins Build Flow job 输入参数获取和传递 如果设置Build Flow的job,怎样获取手工输入的参数. 1. 指定构建参数 job配置中,勾选"参数化构建" ...

  9. c#中sealed修饰符

    sealed 修饰符表示密封 用法: 1.用于类时,表示该类不能再被继承,不能和abstract同时使用,因为这两个修饰符在含义上互相排斥 2.用于方法和属性时,表示该方法或属性不能再被重写,必须和o ...

  10. 解决“找不到请求的 .Net Framework Data Provider。可能没有安装.”错误

    问题: 这几天在装.NET 的开发环境,在装好VS2013和Oracle 11g之后,做了一个测试项目,运行调试没问题 但是涉及到数据库相关操作,如新建数据集.连接数据库等在调试的时候则会出现如下错误 ...