正题

题目链接:http://noip.ybtoj.com.cn/contest/105/problem/2


题目大意

一个010101串,qqq个询问,每次询问有多少个长度为mmm的子串010101个数与给出的010101串TTT相同


解题思路

因为询问串的总长与nnn同级,所以考虑根号分治
将询问的TTT串长度分为两部分。对与大于n\sqrt nn​的,我们直接暴力,因为这样的串的个数不会超过L\sqrt LL​个,所以时间复杂度是O(nL)O(n\sqrt L)O(nL​)的。对与小于n\sqrt nn​的,我们提前预处理,时间复杂度O(nn)O(n\sqrt n)O(nn​)

所以时间复杂度是O(nn)O(n\sqrt n)O(nn​)的


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int N=2e5+10;
int n,m,a[N],v[510][N];
char s[N],t[N];
int main()
{//  freopen("similar.in","r",stdin);
//  freopen("similar.out","w",stdout);scanf("%s",s+1);n=strlen(s+1);scanf("%d",&m);for(int i=1;i<=n;i++)a[i]=a[i-1]+s[i]-'0';int T=sqrt(n);for(int i=1;i<=T;i++)for(int j=0;j<=n-i;j++)v[i][a[j+i]-a[j]]++;while(m--){scanf("%s",t+1);int l=strlen(t+1),k=0;for(int i=1;i<=l;i++)k+=(t[i]-'0');if(l>T){int ans=0;for(int i=0;i<=n-l;i++)ans+=((a[i+l]-a[i])==k);printf("%d\n",ans);}else printf("%d\n",v[l][k]);}
}

YbtOJ#20072-[NOIP2020模拟赛B组Day6]相似子串【根号分治】相关推荐

  1. YbtOj#20073. 「NOIP2020 模拟赛 B 组 Day6」钻石守卫

    文章目录 ResultResultResult HyperlinkHyperlinkHyperlink DescriptionDescriptionDescription SolutionSoluti ...

  2. YbtOJ#20073-[NOIP2020模拟赛B组Day6]钻石守卫【构造】

    正题 题目链接:http://noip.ybtoj.com.cn/contest/105/problem/3 题目大意 nnn个点mmm条边的图,保证每条边两边的点权和大于等于边权.现在要去减去最少/ ...

  3. YbtOJ#20237-[冲刺NOIP2020模拟赛Day10]区间均值【树状数组】

    正题 题目链接:https://www.ybtoj.com.cn/contest/68/problem/1 题目大意 nnn个数字的序列,求有多少个区间[l,r][l,r][l,r]的平均值在[L,R ...

  4. YbtOJ#20240-[冲刺NOIP2020模拟赛Day10]弱者对决【笛卡尔树,区间dp】

    正题 题目链接:https://www.ybtoj.com.cn/contest/68/problem/4 题目大意 mmm个三元组(ai,bi,ci)(a_i,b_i,c_i)(ai​,bi​,ci ...

  5. YbtOJ#20239-[冲刺NOIP2020模拟赛Day10]连边方案【状压dp】

    正题 题目链接:https://www.ybtoj.com.cn/contest/68/problem/3 题目大意 求有多少个nnn个点mmm条边的无向图满足 有连边的点之间编号差不超过kkk 所有 ...

  6. YbtOJ#20236-[冲刺NOIP2020模拟赛Day9]红点蓝点【线段树,堆】

    正题 题目链接:https://www.ybtoj.com.cn/contest/66/problem/4 题目大意 平面上nnn个红点,nnn个蓝点,对于没一个红点求一个与它纵坐标距离不超过ddd的 ...

  7. YbtOJ#20235-[冲刺NOIP2020模拟赛Day9]公共序列【dp】

    正题 题目链接:https://www.ybtoj.com.cn/contest/66/problem/3 题目大意 给出两个字符串A,BA,BA,B,求它们的最长公共子序列. 解题思路 先考虑朴素的 ...

  8. YbtOJ#20078-[NOIP2020模拟赛B组Day7]路径之和【分治,Flody】

    正题 题目链接:http://noip.ybtoj.com.cn/contest/108/problem/4 题目大意 nnn个点,每次只封闭一个点,求剩下点对两两之间的最短路和. 解题思路 Flod ...

  9. #20071-[NOIP2020模拟赛B组Day6]礼物购买【二分】

    正题 题目链接:http://noip.ybtoj.com.cn/contest/105/problem/1 题目大意 nnn个物品,每个价格为viv_ivi​有xix_ixi​个,mmm次,开始有w ...

最新文章

  1. 是男人就下100层【第五层】——2048游戏从源代码到公布市场
  2. none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
  3. Ubuntu安装smplayer播放器
  4. vue-resource 拦截器(interceptor)的使用
  5. php生成格式 word文档,php使用phpword生成word文档
  6. c#设计的简单登录界面
  7. java对公项目_5个让人激动的Java项目
  8. django jwt token 令牌
  9. paperwhite3翻页_Kindle vs. Paperwhite vs. Voyage vs. Oasis:您应该购买哪种Kindle?
  10. IP地址及其分类(A、B、C类)
  11. C语言计算三角形的面积
  12. 游戏中的事件管理--观察者模式的解读
  13. 单片机的特殊功能寄存器
  14. 组合逻辑电路一——数字逻辑实验
  15. 超级计算/先进计算的十大用途
  16. 音乐主页html5模板,Music音乐演唱网站模板
  17. 年产40万吨甲醇制乙烯MTO工艺设计
  18. 毛概多项选择题答案统计程序
  19. 计算机网络技术极实践应用,计算机网络技术及在实践中的具体应用
  20. mysql_init

热门文章

  1. 计算机专业专业课代号408,计算机专业考研你一定要知道的事情!
  2. python tablewidget 颜色_QT中,QTableView鼠标移动到item上时该item所在行的背景颜色变成其他颜色,这要怎么实现...
  3. 技能高考本科计算机类,技能高考多少分上本科
  4. aes算法实现c语言_以C语言实现归并排序为例,谈谈五大常用算法之一的“分治法”...
  5. 7-7 有重复元素的全排列 (10 分)(set容器做法思路加详解)
  6. C++,Java编程中 标识符 常见命名约定
  7. [蓝桥杯2016决赛]愤怒小鸟-模拟
  8. php抓取多个网页合并,PHP 使用 CURL 同步抓取多个网页
  9. 内存超频trfc_这只是开始?四款DDR4内存超频效果对比
  10. 数据结构---Kruskal最小生成树