NOIP 考前 KMP练习
BZOJ 1461 && BZOJ 1729
KMP+BIT
一看就是字符串匹配但是不同的是要按照每个字符的排名情况。
首先对于数字x的排名,那么要判断x前小于x的数的个数,和x前小于等于x的数的个数,这两个都相等才相等。因为会有数字会有重复的.
然后可以先预处理出字串的每个数字的排名,这样就不需要两个BIT了。最后按照KMP的思路做就可以了.
#include <cstdio>
#include <cstring>
const int MaxN=;
const int MaxS=;
int a[MaxN],b[MaxN],Rk1[MaxN],Rk2[MaxN],Ans[MaxN],tot,n,k,s,P[MaxN];
int c[MaxS];
inline int Lowbit(int x) {return x&-x;}
inline void Add(int x,int d)
{for (int i=x;i<=s;i+=Lowbit(i)) c[i]+=d;}
inline int Query(int x)
{
int Ret=;
for (int i=x;i;i-=Lowbit(i)) Ret+=c[i];
return Ret;
}
int main()
{
scanf("%d%d%d",&n,&k,&s);
for (int i=;i<=n;i++) scanf("%d",&a[i]);
for (int i=;i<=k;i++)
{
scanf("%d",&b[i]); Add(b[i],);
Rk1[i]=Query(b[i]),Rk2[i]=Query(b[i]-);
}
memset(c,,sizeof(c)); int j=;
for (int i=;i<=k;i++)
{
Add(b[i],);
while (j && ((Query(b[i])!=Rk1[j+]) || (Query(b[i]-)!=Rk2[j+])))
{
for (int l=i-j;l<i-P[j];l++) Add(b[l],-);
j=P[j];
}
if ((Query(b[i])==Rk1[j+]) && (Query(b[i]-)==Rk2[j+])) j++;
P[i]=j;
}
memset(c,,sizeof(c)); j=;
for (int i=;i<=n;i++)
{
Add(a[i],);
while (j && (Query(a[i])!=Rk1[j+] || Query(a[i]-)!=Rk2[j+]))
{
for (int l=i-j;l<i-P[j];l++) Add(a[l],-);
j=P[j];
}
if (Query(a[i])==Rk1[j+] && Query(a[i]-)==Rk2[j+]) j++;
if (j==k)
{
Ans[++tot]=i-j+;
for (int l=i-j+;l<=i-P[j];l++) Add(a[l],-);
j=P[j];
}
}
printf("%d\n",tot);
for (int i=;i<=tot;i++) printf("%d\n",Ans[i]);
return ; }
双倍经验
NOIP 考前 KMP练习的更多相关文章
- NOIP考前划水
NOIP考前划水 君指先跃动の光は.私の一生不変の信仰に.唯私の超電磁砲永世生き! 要开始背配置了? 3行不谢. (setq c-default-style "awk") (glo ...
- NOIP考纲总结+NOIP考前经验谈
首先来一张图,很直观(截止到2012年数据) 下面是收集的一些,我改了一下 红色加粗表示特别重要,必须掌握 绿色加粗表示最好掌握,可能性不是很大,但是某些可以提高程序效率 高精度 a.加法 b.减法 ...
- NOIP考前知识点整理
前言:距离NOIP还有不到一百天(虽然NOIP没了),为了整理一下所学的内容,才有了这篇博文.本文内容无特殊说明全部来自于博主的博客,代码也都是新敲的,努力在个人的码风基础上做到尽量简洁,求资瓷. 一 ...
- noip考前注意事项
明天就要离开学校,后天的现在Day1已经考完啦,临近考试了紧不紧张呢(不紧张才怪),那么考前我们应该注意点什么呢? 1.带好自己的证件,带好自己的证件,带好自己的证件,这很重要. 2.试机的时候一定要 ...
- 2018 noip 考前临死挣扎
基础算法 倍增 贪心 分块 二分 三分 数据结构 线段树 对顶堆 数学 质数 约数 同余 组合 矩阵乘法 图论 二分图判定以及最大匹配 字符串 Tire树 KMP 最小表示法 Hash Manache ...
- NOIP 考前研究
NOIP 2017 试题研究 D1T1 小凯的疑惑 (45 min) 看到题面,大概是推数学公式. 先打暴力表,观察 \(a,b\) 与 \(n\) 的关系.猜想 \(a×b−a−b\). 引理:对于 ...
- noip考前模板复习
网络流 Dinic(搭配飞行员) //Serene #include<algorithm> #include<iostream> #include<cstring> ...
- 【NOIP考前模拟赛】纯数学方法推导——旅行者问题
一.写在前面 这题似乎是一道原创题目(不是博主原创),所以并不能在任何OJ上评测,博主在网盘上上传了数据(网盘地址:http://pan.baidu.com/s/1mibdMXi),诸位看官需者自取. ...
- NOIP 考前 队列复习
BZOJ 1127 #include <cstdio> #include <cstring> #include <iostream> #include <al ...
随机推荐
- 解决Gradle生成Eclipse支持后,发布到Tomcat丢失依赖jar包的问题
最近一个项目中,使用号称下一代构建工具的Gradle构建项目. 使用中发现一个问题,Gradle从中央库下载的jar文件在系统的其它目录,使用gradle eclipse添加Eclipse支持时,ja ...
- JAVA 多线程随笔 (一) 可见性和volatile关键字
// 先上代码 1 public class NoVisibility { private static boolean ready; private static int number; priva ...
- JavaScript 面向对象(三) —— 高级篇
JavaScript 面向对象(一) —— 基础篇 JavaScript 面向对象(二) —— 案例篇 一.json方式的面向对象 首先要知道,js中出现的东西都能够放到json中.关于json数据格 ...
- MySql创建树结构递归查询存储过程
在实现F2工作流底层多数据库支持时发现Oracel和mssql都有提供递归子查询,而MySql却没有,没办法需要自己构建存储过程来提供这个递归子查询的功能. -- 当前节点及子节点 -- 参数说明:i ...
- 转发 XHTML 和 DOCTYPE 切换(MSDN)
使用 Web 标准生成 ASP.NET 2.0 Web 站点 XHTML 和 DOCTYPE 切换 为 Web页指定 DOCTYPE 会影响浏览器呈现页的方式.Internet Explorer.Mo ...
- 告别IT,出售多年自己研发的股票分析系统源码
不知已过而立,发狠告别IT,回头看看以前自己的多个作品,耗时最多的就是这个股票分析系统了,留在自己的电脑里也体现不出多大价值了,故打算出售源码给需要的人,联系方式QQ:874724605 注明:股票源 ...
- css3过渡
语法格式: transition:属性名 完成时间 速度曲线 何时开始 transition:width 2s ease-in 3s: width 2s 整个过渡效果持续的时间 ease-in 指定了 ...
- mysql数据的行列转换
动态,适用于列不确定情况,第一种: SET @EE=''; SELECT GROUP_CONCAT('SUM(IF(C2=\'',C2,'\'',',C3,0)) AS ',C2)INTO @EE F ...
- daydayup3 codeforces144C
上古的c还是很简单的,一直逗比忘记加EOF了,直到看了数据才发现 题意:给你两个字符串a,b,求问字符串a里有多少个子串排列后可以生成字符串b,‘?’可以替换为任意小写字母 思路:统计第一个子字符串小 ...
- 如何快速掌握一款新的MCU? (转)
发布时间:2013-12-15 10:27:51 技术类别:单片机 个人分类:话题思考 任何一款MCU,其基本原理和功能都是大同小异,所不同的只是其外围功能模块的配置及数量.指 ...