题目大意:给你一个神奇的印章,他左右下三个面都是直的,上面是凸凹不平的面(凸凹都平行于别的面)。然后给你一个轮廓线,如果一个面能与轮廓线完全重合,可以把印章的这个沿着轮廓线拓印,求所有的拓印方案。

把轮廓线和印章相邻两个高度打个查分,然后KMP匹配一下就行了。

 #include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
#define N 10010
#define mod 1000000007
#define ui unsigned int
#define ll long long
#define dd double
#define idx(x) x-'a'+1
using namespace std;
//re
int T,n,m,cnt;
int nxt[][N];
ui f[N];
int a[N],b[N],s[N],t[][N];
void get_kmp(int s1[],int p)
{
int i=,j=;
nxt[p][]=;
while(i<m)
{
if(j==||s1[i]==s1[j])
{
i++;
j++;
nxt[p][i]=j;
}else{
j=nxt[p][j];
}
}
}
int KMP(int s1[],int s2[],int p)
{
int i=,j=,cnt=;
while(i<n)
{
if(j==||s1[i]==s2[j])
{
i++;
j++;
}else{
j=nxt[p][j];
}
if(j==m)
{
cnt++;
j=nxt[p][j];
}
}
return cnt;
} int main()
{
scanf("%d%d",&m,&n);
for(int i=;i<=m;i++) scanf("%d",&b[i]);
for(int j=;j<=n;j++) scanf("%d",&a[j]);
if(m==) {printf("%d\n",n*);return ;}
for(int i=;i<m;i++) t[][i]=b[i+]-b[i],t[][i]=;
for(int i=;i<m;i++) t[][i]=t[][m-i];
for(int i=;i<n;i++) s[i]=a[i+]-a[i];
get_kmp(t[],),get_kmp(t[],),get_kmp(t[],);
int ans=;
ans+=KMP(s,t[],);
ans+=KMP(s,t[],);
ans+=*KMP(s,t[],);
printf("%d\n",ans);
return ;
}

codevs 3945 完美拓印 (KMP)的更多相关文章

  1. codevs3945 完美拓印

    3945 完美拓印 codevs月赛 第一场 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 黄金 Gold 题目描述 Description 小Q获得了一个神奇的印章,这个印章宽n ...

  2. 【codevs3945】 完美拓印

    http://codevs.cn/problem/3945/ (题目链接) 题意 给出一个诡异的图形,再给出一个歪七扭八的线,问图形上下两条边与线的匹配→_→ Solution 前后求差然后KMP,这 ...

  3. codevs 1204 寻找子串位置 KMP

    1204:寻找子串位置 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 18K  Solved: 8K Description 给出字符串a和字符串b,保 ...

  4. DP × KMP

    几道用到KMP的DP题: hdu 5763    hdu 3689    hdu 3336    codeforces 494B    codevs 3945 关于KMP的nx数组: 如果在本文中看见 ...

  5. 记codevs第一次月赛

    第一次参加这种有奖励的比赛(没错,我就是为猴子而去的 一年没怎么碰代码果然手生,还是用没写多久的C++,差点全跪了 T1数学奇才琪露诺: 首先定义一个函数F(x),F(x)=x的各个数位上的数字和 然 ...

  6. Self-organizing Maps及其改进算法Neural gas聚类在异常进程事件识别可行性初探

    catalogue . SOM简介 . SOM模型在应用中的设计细节 . SOM功能分析 . Self-Organizing Maps with TensorFlow . SOM在异常进程事件中自动分 ...

  7. Java设计模式之《模板模式》及使用场景

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9558825.html 模板模式,顾名思义,就是通过模板拓印的方式. 定义模板,就是定义框 ...

  8. Java设计模式之模板模式及使用场景

    模板模式,顾名思义,就是通过模板拓印的方式. 定义模板,就是定义框架.结构.原型.定义一个我们共同遵守的约定. 定义了模板,我们的剩余工作就是对其进行充实.丰润,完善它的不足之处. 定义模板采用抽象类 ...

  9. 权益保护-知识产权:知识产权(IP)百科

    ylbtech-权益保护-知识产权:知识产权(IP)百科 知识产权,也称其为“知识所属权”,指“权利人对其智力劳动所创作的成果和经营活动中的标记.信誉所依法享有的专有权利”,一般只在有限时间内有效.各 ...

随机推荐

  1. asp.net mvc--传值-前台->后台

    前端传值->后端 一.Model Binding 方式 前台 @model ADMgr.Web.Models.ListModel 后台 [HttpPost] public ActionResul ...

  2. pl/sql输入括号后卡顿的解决方式

    pl/sql输入括号后卡顿的解决方式 学习了:https://zhidao.baidu.com/question/298275368.html 工具->首选项->用户界面->代码助手 ...

  3. [Node.js] Manage Configuration Values with Environment Variables

    Storing configuration in files instead of the environment has many downsides, including mistakenly c ...

  4. C# 中使用 Obsolete 标志 代码过期

    今天对项目做了一次更新,创建了一个新的类来替换原来的工作. 可是又不想删掉.一旦删掉在SVN上就不存在了.决定还是用 Obsolete来标志代码过期吧. MSDN上关于Obsolete 标签的介绍 h ...

  5. ASP.Net MVC – What are the uses of Display, DisplayName, DisplayFormat and ScaffoldColumn attributes

    http://www.codeproject.com/Articles/775220/ASP-Net-MVC-What-are-the-uses-of-Display-DisplayNa?utm_so ...

  6. iOS 打印出视图中全部的子视图的名称

    使用递归: - (void)listSubviewsOfView:(UIView *)view { // Get the subviews of the view NSArray *subviews ...

  7. Cocos2d-x 2.2.3 使用NDK配置安卓编译环境问题之 Cannot find module with tag &#39;CocosDenshion/android&#39; in import path

    1.当做安卓移植的时候遇到例如以下问题: Android NDK: jni/Android.mk: Cannot find module with tag 'CocosDenshion/android ...

  8. SharePoint 2013 开启訪问请求

    1.通常,我们进入SharePoint 2013网站,假设没权限会提示该网站未被共享,而没有切换账号或者申请訪问,实在是非常流氓:事实上,SharePoint为我们提供了訪问请求页面.可是可能须要手动 ...

  9. Nginx系列(三)--管理进程、多工作进程设计

    Nginx由一个master进程和多个worker进程组成,但master进程或者worker进程中并不会再创建线程. 一.master进程和worker进程的作用 master进程 不须要处理网络事 ...

  10. 英语发音规则---N字母

    英语发音规则---N字母 一.总结 一句话总结: 1.位于词尾的n在m后面时不发音? autumn /'ɔːtəm/ n. 秋天 column /'kɒləm/ n. 纵队 2.在音素/k//g/前面 ...