http://codeforces.com/problemset/problem/778/A

题意:给出字符串s和字符串p,还有n个位置,每一个位置代表删除s串中的第i个字符,问最多可以删除多少个字符使得s串依旧包含p串。

思路:想到二分,以为二分做法依旧很暴力。但是别人的做法确实就是二分暴力搞啊。

枚举删除字符数,然后判断的时候如果s串包含p串,那么可以往右区间找,否则左区间找。

 #include <bits/stdc++.h>
using namespace std;
#define N 200010
char s[N], p[N];
int id[N], vis[N], n, m; bool check(int x) {
memset(vis, , sizeof(vis));
for(int i = ; i <= x; i++) vis[id[i]] = ;
for(int i = , cnt = ; i <= n; i++) {
if(vis[i]) continue;
if(p[cnt] == s[i]) cnt++;
if(cnt == m + ) return true;
}
return false;
} int main() {
scanf("%s %s", s + , p + );
n = strlen(s + ), m = strlen(p + );
for(int i = ; i <= n; i++) scanf("%d", &id[i]);
int l = , r = n, ans = ;
while(l <= r) {
int mid = (l + r) >> ;
if(check(mid)) {
ans = mid; l = mid + ;
} else r = mid - ;
}
printf("%d\n", ans);
return ;
}

最新文章

  1. 探讨Android中的内置浏览器和Chrome
  2. wordpress /wp-content/plugins/wp-symposium/server/php/UploadHandler.php File Arbitrary Upload Vul
  3. 手机号 和 email 的正则匹配
  4. 最近win7更新后出现第二次打开IDE(delphi2007)的时候提示无法打开&quot;EditorLineEnds.ttr&quot;这个文件
  5. 如何快速重置OUTLOOK2013,2016到初始配置状态,outlook 修改数据文件位置
  6. js中的异常处理try...catch使用介绍
  7. 判断iPhone和iPad 判断设备版本
  8. redis的简单使用
  9. 动态SQL的执行,注:exec sp_executesql 其实可以实现参数查询和输出参数的
  10. SQL 语句整理
  11. B - 畅通工程(并查集)
  12. 《JS中的面向对象技术》
  13. git命令行常用几个指令(细节问题)
  14. 机器学习——KMeans聚类,KMeans原理,参数详解
  15. layui布局器网站工具
  16. System Generator 生成IP核在Vivado中进行调用
  17. AngularJS中写一个包裹HTML元素的directive
  18. Convert Expression to Reverse Polish Notation
  19. SpringBoot-定制banner
  20. SpringBoot扫描包提示找不到mapper的问题

热门文章

  1. eclipse 配置maven tomcat 环境
  2. MIS的趋势必定是围绕机器取代人手,分工越来越细(小餐厅都支持微信自助点餐,结账时就打个折,相当于省了1、2个人手,SQL发明以后,程序员的工作更多了)
  3. 通通玩blend美工(6)上——仿iPhone滚动选择器的ListBox(UI设计)
  4. php 将一个二维数组中两个相同的value 相同 指定值相加
  5. 【全面解禁!真正的Expression Blend实战开发技巧】十一章 全面解析布局(Grid &amp; Canvas &amp;StackPanel &amp;Wrappanel)
  6. WPF将点列连接成光滑曲线——贝塞尔曲线
  7. Win8 Metro(C#)数字图像处理--2.71Sigma平滑滤波器
  8. android adb socket 通信
  9. ArchLinux 安装记录
  10. wsl相关总结