经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » C » 查看文章
cf914F. Substrings in a String(bitset 字符串匹配)
来源:cnblogs  作者:自为风月马前卒  时间:2018/10/11 9:26:55  对本文有异议

题意

题目链接

Sol

Orz jry

和上一个题一个思路吧,直接bitset乱搞,不同的是这次有了修改操作

因为每次修改只会改两个位置,直接暴力改就好了

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int MAXN = 1e5 + 10;
  4. char s[MAXN], tmp[MAXN];
  5. int N, q;
  6. bitset<MAXN> ans, B[27];
  7. main() {
  8. scanf("%s %d", s + 1, &q);
  9. N = strlen(s + 1);
  10. for(int i = 1; i <= N; i++) B[s[i] - 'a'].set(i);
  11. while(q--) {
  12. int opt, pos, l, r;
  13. scanf("%d", &opt);
  14. if(opt == 1) {
  15. scanf("%d %s", &pos, tmp + 1);
  16. B[s[pos] - 'a'].reset(pos); s[pos] = tmp[1]; B[s[pos] - 'a'].set(pos);
  17. } else {
  18. scanf("%d %d %s", &l, &r, tmp + 1);
  19. int L = strlen(tmp + 1);
  20. ans.set(); r = r - L + 1;
  21. for(int i = 1; i <= L; i++) ans &= B[tmp[i] - 'a'] >> (i - 1);
  22. printf("%d\n", max(0, (int)((ans >> (l)).count() - (ans >> (r + 1)).count())));
  23. }
  24. }
  25. }
  26. /*
  27. */
 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号