YbtOJ#20072-[NOIP2020模拟赛B组Day6]相似子串【根号分治】
正题
题目链接: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]相似子串【根号分治】相关推荐
- YbtOj#20073. 「NOIP2020 模拟赛 B 组 Day6」钻石守卫
文章目录 ResultResultResult HyperlinkHyperlinkHyperlink DescriptionDescriptionDescription SolutionSoluti ...
- YbtOJ#20073-[NOIP2020模拟赛B组Day6]钻石守卫【构造】
正题 题目链接:http://noip.ybtoj.com.cn/contest/105/problem/3 题目大意 nnn个点mmm条边的图,保证每条边两边的点权和大于等于边权.现在要去减去最少/ ...
- YbtOJ#20237-[冲刺NOIP2020模拟赛Day10]区间均值【树状数组】
正题 题目链接:https://www.ybtoj.com.cn/contest/68/problem/1 题目大意 nnn个数字的序列,求有多少个区间[l,r][l,r][l,r]的平均值在[L,R ...
- 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 ...
- YbtOJ#20239-[冲刺NOIP2020模拟赛Day10]连边方案【状压dp】
正题 题目链接:https://www.ybtoj.com.cn/contest/68/problem/3 题目大意 求有多少个nnn个点mmm条边的无向图满足 有连边的点之间编号差不超过kkk 所有 ...
- YbtOJ#20236-[冲刺NOIP2020模拟赛Day9]红点蓝点【线段树,堆】
正题 题目链接:https://www.ybtoj.com.cn/contest/66/problem/4 题目大意 平面上nnn个红点,nnn个蓝点,对于没一个红点求一个与它纵坐标距离不超过ddd的 ...
- YbtOJ#20235-[冲刺NOIP2020模拟赛Day9]公共序列【dp】
正题 题目链接:https://www.ybtoj.com.cn/contest/66/problem/3 题目大意 给出两个字符串A,BA,BA,B,求它们的最长公共子序列. 解题思路 先考虑朴素的 ...
- YbtOJ#20078-[NOIP2020模拟赛B组Day7]路径之和【分治,Flody】
正题 题目链接:http://noip.ybtoj.com.cn/contest/108/problem/4 题目大意 nnn个点,每次只封闭一个点,求剩下点对两两之间的最短路和. 解题思路 Flod ...
- #20071-[NOIP2020模拟赛B组Day6]礼物购买【二分】
正题 题目链接:http://noip.ybtoj.com.cn/contest/105/problem/1 题目大意 nnn个物品,每个价格为viv_ivi有xix_ixi个,mmm次,开始有w ...
最新文章
- 是男人就下100层【第五层】——2048游戏从源代码到公布市场
- none 和 host 网络的适用场景 - 每天5分钟玩转 Docker 容器技术(31)
- Ubuntu安装smplayer播放器
- vue-resource 拦截器(interceptor)的使用
- php生成格式 word文档,php使用phpword生成word文档
- c#设计的简单登录界面
- java对公项目_5个让人激动的Java项目
- django jwt token 令牌
- paperwhite3翻页_Kindle vs. Paperwhite vs. Voyage vs. Oasis:您应该购买哪种Kindle?
- IP地址及其分类(A、B、C类)
- C语言计算三角形的面积
- 游戏中的事件管理--观察者模式的解读
- 单片机的特殊功能寄存器
- 组合逻辑电路一——数字逻辑实验
- 超级计算/先进计算的十大用途
- 音乐主页html5模板,Music音乐演唱网站模板
- 年产40万吨甲醇制乙烯MTO工艺设计
- 毛概多项选择题答案统计程序
- 计算机网络技术极实践应用,计算机网络技术及在实践中的具体应用
- mysql_init
热门文章
- 计算机专业专业课代号408,计算机专业考研你一定要知道的事情!
- python tablewidget 颜色_QT中,QTableView鼠标移动到item上时该item所在行的背景颜色变成其他颜色,这要怎么实现...
- 技能高考本科计算机类,技能高考多少分上本科
- aes算法实现c语言_以C语言实现归并排序为例,谈谈五大常用算法之一的“分治法”...
- 7-7 有重复元素的全排列 (10 分)(set容器做法思路加详解)
- C++,Java编程中 标识符 常见命名约定
- [蓝桥杯2016决赛]愤怒小鸟-模拟
- php抓取多个网页合并,PHP 使用 CURL 同步抓取多个网页
- 内存超频trfc_这只是开始?四款DDR4内存超频效果对比
- 数据结构---Kruskal最小生成树