POJ3167

VS2019+CAXACAD2023二次开发教程(一、环境搭建) CAXACAD2023的二次开发相关文件和库都在的文件夹下。CAXACAD2023的默认开发环境是VS2019,如果是用VS2019的环境话,可以直接安装这个插件,安装好后就可以一键新建的项目,新建的项目会自动帮我们配置好所有的环境,并且生成必要的代码和初始的框架。(本来想用VS2022的,但配置环境太麻烦,用VS2022,增加一个环境变量是可以运行自带的例程的,但新建项目要配置的东西和环境太多,就放弃折腾了) 阅读详情

KMP上跑浮动的模式串

一个农场主有N头牛,每个牛都以它身上的斑点数作为标志,以斑点数作为标准对牛进行rank排序,定义牛的序列的相同性为第i头牛及其之前的牛的比他rank小的数量和与他rank相同的数量,比如:

1 4 4 3 2 1 和 2 10 10 7 3 2 是一样的模式串

要求数有多少个符合要求的模式串,并输出每个符合要求的子串的起始位置。

 

KMP!!!太强啦,将这个浮动的串转换一下,只要能正确找出两个串等价的条件,而且在该条件下满足后面新加进来的元素不会影响前面匹配的合法性,就可以用KMP解决,虽然代码长了一点……此处为kuangbin的模板,加了一点注释的理解

#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
const int MAXN = 100010;
const int MAXM = 25010;
int a[MAXN];
int b[MAXM];
int n,m,s;
int as[MAXN][30];
int bs[MAXM][30];
void init()
{
    for(int i=0;i<n;i++)
    {
        if(i==0)
        {
            for(int j=1;j<=25;j++)
                as[i][j]=0;
        }
        else
        {
            for(int j=1;j<=25;j++)
                as[i][j]=as[i-1][j];
        }
        as[i][a[i]]++;
    }
    for(int i=0;i<m;i++)
    {
        if(i==0)
        {
            for(int j=1;j<=25;j++)
                bs[i][j]=0;
        }
        else
        {
            for(int j=1;j<=25;j++)
                bs[i][j]=bs[i-1][j];
        }
        bs[i][b[i]]++;
    }
}
int Next[MAXN];
void kmp_pre()              //处理出Next数组
{
    int i,j;
    j=Next[0]=-1;
    i=0;
    while(i<m)
    {
        int t11=0,t12=0,t21=0,t22=0;
        for(int k=1;k<b[i];k++)             // t11  从i往前j个牛有多少个比bi小的
        {
            if(i-j>0)
                t11+=bs[i][k]-bs[i-j-1][k];
            else
                t11+=bs[i][k];
        }
        if(i-j>0)                           // t22  从i往前j个牛,有多少个和bi一样的
            t12=bs[i][b[i]]-bs[i-j-1][b[i]];
        else
            t12=bs[i][b[i]];
        for(int k=1;k<b[j];k++)             //t21   第j头牛之前有多少个比bj小的
        {
            t21+=bs[j][k];
        }
        t22=bs[j][b[j]];                    //t22   第j头牛之前有多少个和bj一样的
        if(j==-1 ||  (t11==t21 && t12==t22))    //转化为正常kmp思路
        {
            Next[++i]=++j;
        }
        else
            j=Next[j];
    }
}

vector<int> ans;
void kmp()
{
    ans.clear();
    int i,j;
    kmp_pre();
    i=j=0;
    while(i<n)
    {
        //和kmppre一样的处理方法,计算小于本rank的和等于本rank的
        int t11=0,t12=0,t21=0,t22=0;
        for(int k=1;k<a[i];k++)
        {
            if(i-j>0)
                t11+=as[i][k]-as[i-j-1][k];
            else
                t11+=as[i][k];
        }
        if(i>j)
            t12=as[i][a[i]]-as[i-j-1][a[i]];
        else
            t12=as[i][a[i]];
        for(int k=1;k<b[j];k++)
        {
            t21+=bs[j][k];
        }
        t22=bs[j][b[j]];
        if(j==-1 || (t11==t21 && t12==t22))
        {
            i++;
            j++;
            if(j>=m)
            {
                ans.push_back(i-m+1);
                j=Next[j];
            }
        }
        else
            j=Next[j];
    }
}

int main()
{
    while(scanf("%d%d%d",&n,&m,&s)==3)
    {
        for(int i=0;i<n;i++)
            scanf("%d",&a[i]);
        for(int i=0;i<m;i++)
            scanf("%d",&b[i]);
        init();//处理出每个ai和它前面有多少个rank为j的,bi也处理出来
        kmp();
        printf("%d\n",ans.size());
        for(int i=0;i<ans.size();i++)
            printf("%d\n",ans[i]);
    }
    return 0;
}

 

OpenCV实例(一)人脸检测 计算机视觉使很多任务成为现实,其中两项任务就是人脸检测(在图像中定位人脸)和人脸识别(将人脸识别为特定的人)。OpenCV实现了一些人脸检测和识别的算法。从安全到娱乐,这些技术在现实环境中都有应用。介绍OpenCV的一些人脸检测和识别功能,并定义特定类型的可跟踪物体的数据文件。具体来说,将研究Haar级联分类器,通过分析相邻图像区域之间的对比度,确定给定图像或子图像是否与已知类型匹配。 阅读详情

相关推荐

Silvaco Athena实战:从零搭建MOSFET工艺仿真流程(附mos1ex03完整代码解析)

本文详细介绍了使用Silvaco Athena从零搭建MOSFET工艺仿真的全流程,包括环境配置、核心工艺步骤、器件成型及参数提取等关键环节。通过mos1ex03案例的完整代码解析,帮助读者掌握网格划分、氧化层生长、离子注入等实战技巧,提升半导体工艺仿真能力。

weixin_42648844的博客 406

poj 3167 (kmp 好题)

题目:http://poj.org/problem?id=3167 题目大意:给你两个数列a、b,长度分别为 n 、k,让你用 b 去匹配 a,只要是两者的相对大小对的上就算匹配,让你求出所有的 匹配的位置。 思路:KMP好题!kmp 是顺序匹配的,建设前面已经匹配了,现在正在匹配 i 和 j ,因为是相对大小,如果i位置的前面比a[ i ]的 数目和 j 位置比b[ j ] 小的数目相等

沉溺的专栏 1023

zynq+LWIP 裸机双网口实现(MIO+EMIO)+程序下载

芯片型号: ZYNQ: XC7Z010clg400开发软件:Vivado2022 + Xilinx Vitis 2022网卡芯片:RTL8211FDI(需要根据网口芯片型号修改对应的硬件配置代码。

thinking in 小宇宙 3404

POJ-3167- Cow Patterns(KMP)

Cow Patterns Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 4184   Accepted: 1496 Sample Input 9 6 10 5 6 2 10 10 7 3 2 9 1 4 4 3 2 1 Sample Output 1

不会吃鱼的喵 1005

别再手动敲代码了!用STM32CubeMX+FreeRTOS图形化配置,5分钟搞定多任务通信框架

本文详细介绍了如何利用STM32CubeMX和FreeRTOS快速搭建多任务通信框架,大幅提升嵌入式开发效率。通过图形化配置工具,开发者可在5分钟内完成任务调度、时钟配置和内核对象生成,特别适合物联网设备开发。文章还提供了代码优化和调试技巧,帮助开发者轻松应对复杂应用场景。

weixin_30363285的博客 291

PFC胶结模型实战:从线性到平行粘结的力学行为解析

本文深入解析了PFC中线性接触与平行粘结(pb模型)的核心差异与应用。平行粘结模型通过模拟胶结层的力学行为,能够有效传递拉力和抵抗弯矩,是模拟岩石、混凝土等胶结材料的关键。文章详细介绍了其变形与强度参数的设置、法向与切向行为的验证方法,并揭示了全量与增量力计算中易出现的“幽灵力”问题及其解决方案,为复杂模型的构建与调试提供了实用策略。

weixin_29230773的博客 1201

poj 3167 Cow Patterns ... 四种算法 (均结合kmp)

题目链接:http://poj.org/problem?id=3167 第1,2种算法思路是一样的,但是实现方法不同。 算法归于以下结论:两个序列的偏序相同则两序列同一位以前小于它和等于它的数的数量应该是相同的。 比如:题目匹配的结果是: 2 10 10 7 3 2                                             1   4   4 3  2

imissher的专栏 952

【仿真】Carla Python API实战:从零搭建自动驾驶测试环境

本文详细介绍了如何使用Carla Python API从零搭建自动驾驶测试环境。通过Carla仿真平台,开发者可以构建高度逼真的城市环境和车辆物理模型,利用Python API实现传感器配置、数据采集、场景构建及自动驾驶算法集成。文章还分享了实际项目中的调试技巧和性能优化经验,帮助读者快速掌握自动驾驶仿真测试的核心技术。

weixin_29050513的博客 213

【POJ 3167】Cow Patterns (KMP+树状数组)

Cow Patterns Description A particular subgroup of K (1 <= K <= 25,000) of Farmer John's cows likes to make trouble. When placed in a line, these troublemakers stand together in a partic...

weixin_30639719的博客 238

mcgs数据查表功能,用于大量数据对比查找对应数据,减少PLC代码

mcgs脚本实现数据查表功能

qq_24866535的博客 3268

【DRAM存储器六十二】DDR5介绍--引脚和基本功能简介

详述DDR5与DDR4的引脚区别和DDR5基本功能

highman110的博客 523

POJ 3167 Cow Patterns(模式串浮动匹配)

题目链接:http://poj.org/problem?id=3167 题意:模式串可以浮动的模式匹配问题给出模式串的相对大小,需要找出模式串匹配次数和位置。 思路:统计比当前数小,和于当前数相等的,然后进行kmp。 比如说模式串:1,4,4,2,3,1 而主串:5,6,2,10,10,7,3,2,9,那么2,10,10,7,3,2就是匹配的 code: 1 #include &l...

weixin_34242658的博客 150

软件产品国际化:前后端及App多语言版本解决方案(超详细实现过程)

多语言版本解决方案是应对全球化趋势的关键策略,它通过构建灵活且可扩展的架构,支持软件产品在不同语言和文化环境下的顺畅运行与展示。此方案涵盖了前端多语言界面实现、后端多语言数据处理及大数据环境下的多语言支持等多个层面,确保公司能够高效地推出适应全球用户多样化需求的软件产品。在前端多语言界面实现方面,解决方案采用了国际化与本地化的结合方法。国际化过程确保软件的功能和代码设计能够处理多种语言和文化习惯,而本地化则针对特定地区进行界面和内容的调整。

大模型大数据攻城狮的专栏 2752

POJ 3167

POJ 3167题意:​ 原串长度为n,匹配串长度为m,输出匹配串在原串中出现几次,并且输出其出现的位置。思路:​ 利用kmp的思想,求出Next数组,求的方法是对于数字的排列存在规律,因为两个数列不同只能比较相对大小,其体现在当前数字之前的比其小的个数和与之相等的个数,预处理其存在的个数。​ as[i][j]as[i][j] : 在a[i]a[i] 位置之前(包括本身)k数字存在的个数

Since_natural_ran 556

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

POJ 3167 Cow Patterns(KMP算法变形)

题目来源:http://poj.org/problem?id=3167 问题描述 Cow Patterns Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 5200   ...

da_kao_la的博客 662

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

HDU 4749 && POJ 3167 KMP

RT 这个题是POJ3167的修改版,基本一致   #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int N = 100

九野的博客 3310

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

HDU 4749 & POJ 3167 kmp变形

HDU4749题意给定一个主串 TT 和模式串 PP,问 TT 有多少个不重合的子串与 PP 匹配。在这里,串 aa 与串 bb 匹配的含义是,∀i,j,1≤i,j≤n,⎧⎩⎨a[i]<a[j]↔b[i]<b[j]a[i]==a[j]↔b[i]==b[j]a[i]>a[j]↔b[i]>b[j]\forall i,j,1\leq i,j\leq n,\begin{eqnarray}\begin{cas

kkkkahlua的博客 598

poj3167 Cow Patterns KMP、树状数组

最近的日子被考试压得喘不过气来,说好的每天水两道题又荒废了。。。 为了让写解题报告和看解题报告不那么无聊,我决定从这篇起每篇加几句心得或感慨(很大几率是废话): 数据结构是好东西,必须信手拈来,或者准备好模块,熟练得像std::sort那样,才能克服一些稍显复杂的堆砌算法的题目。 另外,KMP是神奇的算法。 poj3167 KMP&树状数组。 这题要求第一串中间是否有与

Necs的小窝 882

【KMP】【poj3167】【bzoj1729】Cow Patterns (kmp变形)

两个序列的偏序关系相同当且仅当这两个序列的每个位置上的元素前面等于它的元素个数和小于它的元素个数都相等 题意 给定一个顺序序列表示奶牛的排列顺序,定义串a=b当且仅当a的每位的排名=b的每位的排名。 参考:http://blog.youkuaiyun.com/waitfor_/article/details/7717059

now_ing的博客 463

poj3167&hdu4749 KMP+BIT

一道比较好玩的KMP,他在匹配的时候不是按该位字符是否想到,而是按当前字符的名次来判断是否匹配,转化一下就是对i,j,若i之前中比s[i]小的和j之前中比s[j]小的数的个数相等并且i之前小于等于s[i]的数和j之前小于等于s[j]的个数相等,那么就判定s[i]和s[j]匹配。以此方法构造状态转移图后,拿母串跑一遍即可。维护的过程可以用树状数组实现。hdu4749那个和poj3167基本一样,最后

Broken Wings 949

poj 3167

树状数组+KMP 有个结论是,两个串的排名串相等当且仅当这两个串的每个位置上的元素前面等于它的元素个数和小于它的元素个数都相等。 这里用树状数组维护这个性质 #include #include int a[100010],b[25010]; int c[30]; //树状数组中的元素 int m1[25010],m2[25010]; //(匹配串中)m1表示小

1292765944的专栏 2462

POJ 3167 Cow Patterns

题目链接:http://poj.org/problem?id=3167Description约翰的N(1≤N≤100000)只奶牛中出现了K(1≤K≤25000)只爱惹麻烦的坏蛋。奶牛们按一定的顺序排队的时候,这些坏蛋总会站在一起。为了找出这些坏蛋,约翰让他的奶牛排好队进入牛棚,同时需要你的慧眼来识别坏蛋,为了区分,约翰给所有奶牛都发了号牌,上面写着一个1~S(1≤S≤25)之间的数字。虽然这不是一

Faxth 859

poj3167

同hdu 4749import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter;

老李2009 870

kmp poj 3167

参考了这个http://www.cppblog.com/zxb/archive/2010/10/06/128782.aspx?opt=admin 他用的是hash的思想 题目大意是:给一个字符串,在给个子串,求子串是否在是整个字符串的子串,字符串之间的匹配遵循相对位置 例如给定:5 6 2 10 10 7 3 2 9 然后子串:       1 4 4 3 2 1它与 2 10 10 7

涛涛不解 1886

Nuxt SSR 项目部署实战:Node 环境、PM2 与 Nginx 反向代理避坑指南

服务端渲染(SSR)是提升 SEO 与首屏性能的关键技术,其原理是由 Node.js 进程实时渲染页面,再由反向代理对外分发流量。要在生产环境稳定运行,不仅需要正确的 Node 版本和构建流程,更依赖 PM2 进程守护与 Nginx 反向代理的协同配合。掌握进程常驻、环境变量注入、静态资源缓存和常见故障排查思路,能显著降低 502、内存溢出、资源 404 等风险。无论是企业官网、内容社区还是电商站点,只要采用 Nuxt 建设 SSR 应用,这套部署方法都能帮助你快速完成上线,并形成可持续运维的规范。整套流程

weixin_34176694的博客 416
上一篇: 946A split
下一篇: HDU3746 Cyclic Necklace
「已注销」
博客等级 码龄9年 6粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值