L: Long Long Ago---二分
L: Long Long Ago
题目描述
今天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---二分的更多相关文章
- C. Tavas and Karafs 二分查找+贪心
C. Tavas and Karafs #include <iostream> #include <cstdio> #include <cstring> #incl ...
- UVa 10539 (筛素数、二分查找) Almost Prime Numbers
题意: 求正整数L和U之间有多少个整数x满足形如x=pk 这种形式,其中p为素数,k>1 分析: 首先筛出1e6内的素数,枚举每个素数求出1e12内所有满足条件的数,然后排序. 对于L和U,二分 ...
- hdu4717 The Moving Points(二分做法)
这道题看了大家都是用三分做的,其实这道题也是可以用二分来做的,就是利用一下他们的单调性. 对于N个点,总共要考虑N(N+1)/2个距离,距离可以用二次函数表示,而且开口都是向上的. 下面具体说一下二分 ...
- STL--G - For Fans of Statistics(两个推断条件-二分)
G - For Fans of Statistics Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & ...
- POJ 2104:K-th Number(整体二分)
http://poj.org/problem?id=2104 题意:给出n个数和m个询问求区间第K小. 思路:以前用主席树做过,这次学整体二分来做.整体二分在yr大佬的指点下,终于大概懂了点了.对于二 ...
- POJ 1845 Sumdiv#质因数分解+二分
题目链接:http://poj.org/problem?id=1845 关于质因数分解,模板见:http://www.cnblogs.com/atmacmer/p/5285810.html 二分法思想 ...
- BZOJ2406矩阵——有上下界的可行流+二分答案
题目描述 输入 第一行两个数n.m,表示矩阵的大小. 接下来n行,每行m列,描述矩阵A. 最后一行两个数L,R. 输出 第一行,输出最小的答案: 样例输入 2 2 0 1 2 1 0 1 样例输出 1 ...
- bzoj 4326: NOIP2015 运输计划(二分+树链剖分)
传送门 题解: 树链剖分快速求解任意两点间的路径的权值和: 然后,二分答案: 此题的难点是如何快速求解重合路径? 差分数组可以否??? 在此之前先介绍一下相关变量: int fa[maxn]; int ...
- 洛谷 P1163"银行贷款"(二分)
传送门 题解: 二分月利率,假设当前判断的月利率为x: 那么如何判断x是大了还是小了呢? 下面来分析一下Check()函数: bool Check(double x) { double tot=a; ...
- CodeForces 1117C Magic Ship (循环节+二分答案)
<题目链接> 题目大意: 给定起点和终点,某艘船想从起点走到终点,但是海面上会周期性的刮风,船在任何时候都能够向四个方向走,或者选择不走,船的真正行走路线是船的行走和风的走向叠加的,求船从 ...
随机推荐
- ubuntu12.04安装nox-classic
Setup Nox repo for ânox-dependenciesâ package $ cd /etc/apt/sources.list.d/ $ wget http://openfl ...
- IE(IE6/IE7/IE8)支持HTML5标签
让IE(ie6/ie7/ie8)支持HTML5元素,我们需要在HTML头部添加以下JavaScript,这是一个简单的document.createElement声明,利用条件注释针对IE来调用这个j ...
- How To Make A DFF Read Only Through Form Personalisations? (文档 ID 1289789.1)
In this Document Goal Solution References APPLIES TO: Oracle Application Object Library - Vers ...
- Android-openFileInput openFileOutput
Android设计了一套可以操作自身APP目录文件对API openFileInput openFileOutput,读取只需传入文件名,写入需要传入文件名 与 权限模式 界面: 布局代码: < ...
- IPA文件的自动化生成和无线分发
1. IPA的无线分发 iOS应用开发测试过程中,通过无线网络进行IPA包的分发将是非常便捷的,于是也就有了类似testflightapp之类的平台.对于这一功能,我们也可以自己实现,只需要一个简单的 ...
- TSQL--如何突破PRINT的8000大限
相信很多DBA都喜欢干的一件事就是拼SQL语句,我也不例外,但是PRINT只能打印4000的Unicode string或8000的Non-unicode string, 这个蛋疼的限制会导致过长的s ...
- 遇到了IE10不能登录的问题,很早就有解决方案了
1..net 2.0 的程序,请打开项目,打开vs开发环境的工具菜单下的 Package Manager Console ,中文名:程序包管理控制台,在打开的控制台中输入如下命令:Install-P ...
- kv数据库对比总结
集群型: hbase Cassandra scylladb redis类: redis + twemproxy codis 持久型: pika ssdb
- leetcode 合并两个有序数组
给定两个有序整数数组 nums1 和 nums2,将 nums2 合并到 nums1 中,使得 num1 成为一个有序数组. 说明: - 初始化 nums1 和 nums2 的元素数量分别为 m 和 ...
- Android 推送
安卓推送方案及比较 http://www.eoe.cn/news/11955.html ******************************************************** ...