NOIP-字符串 分类: uva bzoj ...


LA 4670 AC自动机

void pattern()
{
    memset(count, 0, sizeof(count));

    int sl = strlen(str);
    TrieNode *now = root;

    for(int i = 0; i < sl; i++)
    {
        now = now->p[str[i]-'a'];

        TrieNode *tmp = now;

        while(tmp != root)
        {
            count[tmp->end]++;
            tmp = tmp->fail;
        }
    }
}

void output()
{
    int maxcnt = 0;

    for(int i = 1; i <= n; i++)
    {
        for(int j = i + 1; j <= n; j++)
            if(!strcmp(c[i], c[j]))
                count[i] = std::max(count[i], count[j]);
        maxcnt = std::max(count[i], maxcnt);        
    }

    write(maxcnt), puts("");

    for(int i = 1; i <= n; i++)
        if(count[i] == maxcnt)
            printf("%s\n",c[i]);
}

int main()
{
#ifndef ONLINE_JUDGE
    freopen("4670.in","r",stdin);
    freopen("4670.out","w",stdout);
#endif

    while(true)
    {
        read(n);

        if(!n) break;

        init(), build();

        pattern();

        output();
    }

#ifndef ONLINE_JUDGE
    fclose(stdin);
    fclose(stdout);
#endif
    return 0;       
}

UVa 11019 字符串哈希


typedef unsigned long long ull; 
typedef unsigned int uint;

const int maxn = 1005, maxm = 1005;
const uint Base = 27;
const ull Basell = 29;

int n, m, x, y;
char P[maxn][maxm], T[maxn][maxm];

ull hashll[maxn][maxm], movell[maxm], rowll[maxn];
uint hash[maxn][maxm], move[maxm], row[maxn];


void init()
{
    read(n), read(m);
    for(int i = 1; i <= n; i++)
        scanf("%s",P[i] + 1);
    read(x), read(y);
    for(int i = 1; i <= x; i++)
        scanf("%s",T[i] + 1);
}
void prework()
{   
    uint *arr;
    ull *arrll;
    char *str;

    move[0] = movell[0] = 1;
    for(int i = 1; i <= m; i++)
    {
        move[i] = move[i-1]*Base;
        movell[i] = movell[i-1]*Basell;
    }

    for(int i = 1; i <= n; i++)
    {
        str = P[i], arr = hash[i], arrll = hashll[i];

        for(int j = 1; j <= m; j++)
        {
            arr[j] = arr[j-1]*Base + str[j] - 'a';
            arrll[j] = arrll[j-1]*Basell + str[j] - 'a';
        }
    }

    for(int i = 1; i <= x; i++)
    {
        row[i] = rowll[i] = 0;

        for(int j = 1; j <= y; j++)
        {
            row[i] *= Base, row[i] += T[i][j] - 'a';
            rowll[i] *= Basell, rowll[i] += T[i][j] - 'a';
        }
    }
}
int solve()
{
    int ret = 0;

    for(int i = 0; i + x <= n; i++)
        for(int j = 0; j + y <= m; j++)
        {
            bool flag = true;
            if(i == 0 && j == 1)
                i++, i--;
            for(int k = 1; k <= x && flag; k++)
            {
                uint t = hash[i + k][j + y] - hash[i + k][j]*move[y];
                ull tll = hashll[i + k][j + y] - hashll[i + k][j]*movell[y];
                if(t != row[k] || tll != rowll[k]) flag = false;
            }

            if(flag) ret++;
        }
    return ret; 
}
int main()
{
    int T;

#ifndef ONLINE_JUDGE
    freopen("11019.in","r",stdin);
    freopen("11019.out","w",stdout);
#endif

    read(T);

    while(T--)
    {
        init(), prework();

        write(solve()), puts("");
    }

#ifndef ONLINE_JUDGE
    fclose(stdin);
    fclose(stdout);
#endif
    return 0;       
}

Bzoj 1030 AC自动机DP
计算母串包含任意模板串的方案数

母串包含任意模板串的方案数 = 方案总数 - 母串不包含任意模板串的方案数

void update(int len)
{   
    for(int x = 1; x <= tot; x++) 
        for(int i = 0; i < size; i++)
            if(!T[x].p[i]->end)
            {
                T[x].p[i]->dp[len] += T[x].dp[len-1];
                T[x].p[i]->dp[len] %= Mod;
            }
}
long long getans()
{
    long long ans = 0, sum = 1;

    root->dp[0] = 1;
    for(int i = 1; i <= m; i++) update(i);

    for(int i = 1; i <= tot; i++)
        ans += T[i].dp[m], ans %= Mod;
    for(int i = 1; i <= m; i++)
        sum *= size, sum %= Mod;

    ans = (sum - ans + Mod)%Mod;

    return ans; 
}

UVa 11468 AC自动机DP

计算母串不包含任意模板串的概率

void update(int len)
{   
    for(int x = 1; x <= tot; x++) 
        for(int i = 0; i < size; i++)
            if(!T[x].p[i]->end && hash[i])
                T[x].p[i]->dp[len] += T[x].dp[len-1]*v[i];          
}

long double getans()
{
    long double ans = 0;

    for(int i = 1; i <= tot; i++) ans += T[i].dp[m];

    return ans; 
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://www.cnblogs.com/dashgua/p/4722970.html

NOIP字符串处理题 1) 院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以上论文的学生均可获得; 2) 五四奖学金,每人4000元,期末平均成绩高于85分(>85),并且班级评议成绩高于80分(>80)的学生均可获得; 立即下载

相关推荐

瑞萨RZN2L工业以太网开发避坑指南:EtherCAT从入门到通信调试全流程

本文详细解析了瑞萨RZN2L MPU在工业以太网开发中的EtherCAT从站配置与通信优化全流程。通过硬件设计关键点、协议栈选型、PDO映射策略及DC同步精度优化等实战技巧,帮助开发者快速搭建高效通信框架并解决调试中的常见问题,特别适合工业自动化领域的实时通信需求。

aitie1479的博客 458

写给有 NOIP考前综合征 的 oier

明天光棍节,然而oier就要考noip了hhh…… 当然我也有考前综合征啦,不过考前焦虑并没有什么卵用反而会影响考试。 于是就没那么焦虑了。 好了进入正题。 先贴一张zfy学长刚刚发的图: 有关考试技巧首先说说考试的时候应该特别注意的地方,当然以完全可以不必看它,但是这些东西无疑是一颗强大的定心丸。 一定要写 freopen、fclose! 浮点数的判断是否相等,不要直接判断,而是用

lanshuizhiyun 542

第十篇|网络子系统 ②——无损以太网、PFC/ECN、DCQCN 与拥塞可视化

网络部分了解了解

qq_37535542的博客 1873

NOIP学习之字符串:144.字符串的展开

生成字符串

wlxiong的博客 246

“开宝五子棋陪练”-首款开放智能的五子棋习题练习安卓应用

使用Kotlin语言以及Jetpack Compose UI库开发,主要就是写Composable函数,显示棋盘、棋子和一些按钮,响应用户的点击和滑动操作,以及保存和恢复数据。但我针对本应用是用于做题的特殊需求,对该算法库做了一个简单的JNI层封装,方便UI前端Kotlin代码的调用。

weixin_44120030的博客 2396

工业相机图像格式深度解析:从Mono8到Mono12的选型与应用

本文深度解析工业相机黑白图像格式,重点对比Mono8、Mono10与Mono12的核心差异。文章从位深、动态范围和数据量等关键概念切入,详细阐述了不同格式的优缺点及适用场景,为工业视觉项目中的相机选型提供实战指南,帮助用户在精度、速度与成本间做出最优决策。

weixin_29207439的博客 260

NOIP2020 字符串匹配

### 题目大意 给你一个字符串$S$,求将$S$拆成若干个$AB$和一个$C$的方案数,其中$A,B,C$均为非空字符串,且$A$中出现奇数次的字符数量不超过$C$中出现奇数次的字符数量。

tanjunming2020的博客 369

从零开始 使用OMNET++结合VEINS,INET和SUMO的联合仿真

搭建仿真的环境,导入VEINS和INET开源库,使用INET库中提供的网络协议和功能模型来模拟通信协议和网络功能,使用SUMO创建道路网络和车辆轨迹,并导出到OMNeT++中 在OMNeT++中使用VEINS通过socket和SUMO连接,借助VEINS实现的TRACI接口来设置车辆相关的行为和场景,最后在OMNET++中结合VEINS,SUMO和INET运行联合仿真实验,并分析车辆在遇到紧急情况下的通信状况和具体行为

mjmmm的博客 1万+

「NOIP2020」字符串匹配 (string)

我硬生生地把 O(26n+n ln n) 的解法卡了过去。

_Alexander_的博客 2032

第9.3章 从CMake基础到自动驾驶实战:构建跨平台C/C++项目的全能指南

《CMake构建实战:项目开发卷》精要指南 本文系统梳理了许宏旭《CMake构建实战》核心内容,涵盖C++构建全流程: 基础构建:详解MSVC/GCC编译器使用、Makefile编写及静态/动态库构建方法 CMake核心:解析语法结构、变量控制、文件操作等关键命令,阐述项目全生命周期管理 实战应用:通过快速排序、手写数字识别项目演示现代CMake实践,特别针对自动驾驶领域给出多传感器融合、SLAM等场景的CMake配置方案 特色价值:本书填补了官方文档实例不足的空白,提供300+代码示例,是掌握工业级C++

行知SLAM 1343

YOLOv11全网首发:注意力独家魔改 | 具有切片操作的SimAM注意力,魔改SimAM助力小目标检测

1)直接作为注意力使用,效果秒杀SimAM;2)高效和卷积结合,代替原始网络的卷积操作;

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1570

花费3天整理出了新手学习NOIP的知识点之一:字符串处理详细教程全面,建议收藏,

在C++中,字符串可以通过两种方式定义:字符数组和string类。字符数组:这是C语言风格的字符串表示方法,用char数组实现,字符串以'\0'结尾。string类:这是C++标准库提供的字符串类型,包含了大量的成员函数,可以进行快捷的操作。使用string类需要包含头文件。与字符数组相比,string类更安全、更易于管理,并具有更多的功能。

C++老手 1172

Oracle11g下载与安装(windows)

一、Oracle11g下载 二、安装准备 三、执行安装步骤 四、测试连接 附:Oracle11g服务说明

欢迎订阅我的“JAVA全栈开发笔记(全)”专栏,价格优惠,仅需19.9元。 2万+

11月刷题总结

这是11月的坑...现在来填... noip考跪...希望省选rp++ (11月刷了不少水题...   动态规划+递推: 【BZOJ】1072: [SCOI2007]排列perm(状压dp+特殊的技巧) 【BZOJ】1068: [SCOI2007]压缩(dp) 【BZOJ】1088: [SCOI2005]扫雷Mine(递推) 【BZOJ】1096: [ZJOI2007]仓库建设...

weixin_34363171的博客 88

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

某OJ进阶题单原题大赏

以洛谷作为主要的OJ 写问号的有待补充 目录第一部分 基础算法1.1 递推算法1.2 贪心算法1.3 二分算法 第一部分 基础算法 1.1 递推算法 例题1 -> P1595 信封问题 例题2 -> ? 例题3 -> P1025 数的划分 例题4 -> P1057 传球游戏 例题5 -> ? 1.2 贪心算法 例题1 -> P1843 奶牛晒衣服 例题2 -> P1325 雷达安装 例题3 -> P2859 [USACO06FEB]Stall Reservat

weixin_45523071的博客 1254

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

C语言 Web实时消息后台服务器推送技术---GoEasy

c++ __declspec用法解析 数据结构中字符串的匹配问题 UVA 10090 Marbles 扩展欧几里得 UVA 253 Cube painting 复制实参的局限性 进制转换( C++字符数组 ) SDUT 3342 数据结构实验之二叉树三:统计叶子数 [参考]__stdcall、__cdcel和__fastcall三者的区别 SDUT 3343 数据结构实验之二叉树四:

161

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

五月学习记录

5月17日-5月19日 1.学习: 主席树(静态,动态,树上主席树) LCA的离线Tarjan算法 5月20日 1.测试:JLOI_2016_day1:20分... 2.学习:高精度模板 3.做题: Codevs_1166_[NOIP2007]_矩阵取数游戏_(动态规划+高精度) 5月23日 1.学习: 计算...

aquz77529的博客 234

2022 寒假qbxt知识点

知识点汇总(?

Oops的博客 490

算法与数据结构简单启蒙,我当年学习算法走过的坑

1、碎碎念 我的算法启蒙来自于紫书算法竞赛入门经典,但是不得不说从语言过度到算法,紫书并不是一个很好的开始。当时整本书除了数学和图论其实是看完了的,但真的有印象的大约只有暴力枚举法中枚举排列,子集生成和八皇后这3个经典例题。数据结构章节的树图链表UVA例题都做了,但是早已没有任何印象。高效算法设计那章隐约记得快速排序,其他没了。动态规划就记得数字三角形,DAG那章当时没学会。可以说,紫书的晦涩难懂直接卡了我好久,整本书学了啥就会枚举三例题。。。紫书更多的是给了我一个从C++过度到算法的过程。 真正意义上的

小哈里的博客 976

NOIP 竞赛注意事项

<一>程序习惯注意 一、Linux与Windows的区别 a)大小写敏感 i. 在Windows下,文件名大小写不敏感,例如A.c 与a.c 与和a.C与A.C和没有区别。 ii. Linux视文件名为二进制数据,所以区分大小写。 iii.考试时一定要看清题目上要求,区别大小写。 iv. 注意修改文件名,尤其是在重新调试编译后。 b)...

weixin_30682415的博客 561

NOIP2002提高组T2:字符串变换

朴素版BFS虽然可以满足题目要求,但是要搜索的状态空间大、时间复杂度太高,可以使用双向广搜进行优化。双向广搜,是指从起点和终点同时开始进行BFS,双向奔赴直到找到共同的目标为止。

少儿编程乔老师 1237

NOIP2020 T2 字符串匹配题解

首先考虑O(n^3)的暴力怎么写。 显然,可以枚举字符串AAA+BBB的右端点,左端点显然是1,暴力判断是否能与后面的字符构成循环节,对于满足 k∗(A+B)+C=k*(A+B)+C=k∗(A+B)+C= 整个字符串(k∈Z)(k \in Z)(k∈Z) 的情况暴力枚举AAA,BBB分界点,对于L(x)≤R(x)L(x)\le R(x)L(x)≤R(x)的情况统计答案即可,L(x)L(x)L(x)为111到nnn出现奇数次的字符数量,R(x)R(x)R(x)为xxx到nnn出现奇数次的字符数量。 其实这样由

qmmctzs的博客 697

NOIP模拟 字符串string(水题)

【题目描述】 给定两个字符串s,t,其中s只包含小写字母以及*,t只包含小写字母。你可以进行任意多次操作,每次选择s中的一个*,将它修改为任意多个(可以是0个)它的前一个字符,问能否将s修改为t。 【输入格式】 第一行一个整数T表示数据组数。 每组数据两行,第一行一个字符串s,第二行一个字符串t。 【输出格...

weixin_30746117的博客 261

NOIP复赛复习(十四)字符串算法巩固与提高

一、Trie树   1.定义: 通过字符串建成一棵树,这棵树的节点个数一定是最少的。例如:4个字符串"ab","abc","bd","dda"对应的trie树如下: 其中红色节点表示存在一个字符串是以这个点结尾的。  一个性质:在树上,两个点u,v满足u是v的祖先,那么u代表的字符串一定是v代表的字符串的前缀。   2.Trie树的插入: 可

dqcsm1964的博客 857
上一篇: 最大权闭合子图 分类: bzoj poj ...
下一篇: bzoj 1030 分类: bzoj temp...
aa288288
博客等级 码龄11年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值