08 2024 档案

摘要:[笔记]CSP-S 2024 第一轮 查漏补缺复习内容部分来自NOI大纲中入门级和提高级的内容。 联合体(Union) 联合体是一种复合数据类型,其的定义上与结构体的定义类似。 与结构体不同,联合体中的所有元素共用一块内存,所以它占空间大小一般是最大成员的大小(不考虑对齐的情况下),相应地,任意时刻只有一个成员带有值,如果访问其他成员,得到的值 阅读全文
posted @ 2024-08-25 22:26 Sinktank 阅读(149) 评论(0) 推荐(0) 编辑
摘要:[题解]P2444 [POI2000] 病毒P2444 [POI2000] 病毒 题目核心是多模式匹配,所以考虑用对所有模式串建立AC自动机。 我们把自动机上,存在一个模式串作为前缀的节点,称作“危险节点”。 如果无限长的安全代码存在的话,匹配过程中Trie图上一定有节点会经过多次,即存在环;而且经过的所有节点都不是“危险节点”,否则就包含病 阅读全文
posted @ 2024-08-21 18:12 Sinktank 阅读(25) 评论(0) 推荐(0) 编辑
摘要:[题解]P3311 [SDOI2014] 数数P3311 [SDOI2014] 数数 看到多模式匹配,我们考虑先对所有模式串建立AC自动机。 然后发现这道题和P4052 文本生成器(题解)挺像的,后者让求包含至少一个模式串的个数,这道题让求一个也不包含的个数,这个就是一个用不用\(26^m\)去减的问题,很好处理。但这道题还多了一个条件,“幸运 阅读全文
posted @ 2024-08-21 09:39 Sinktank 阅读(10) 评论(0) 推荐(0) 编辑
摘要:[题解]P4052 [JSOI2007] 文本生成器P4052 [JSOI2007] 文本生成器 正难则反,我们发现用总字符串个数\(26^m\),减去不可读的字符串个数,可以得到结果。 下文中的“答案”均表示“不可读的字符串个数”。 要使一个字符串不可读,就不能让任何模式串在其中出现。如果某个主串的第\(i\)位与自动机的节点\(j\)相匹配,那么 阅读全文
posted @ 2024-08-20 13:15 Sinktank 阅读(13) 评论(0) 推荐(0) 编辑
摘要:[题解]UVA1127 Word PuzzlesUVA1127 Word Puzzles 我们对模式串建立AC自动机,然后就比较板子了,只需要把\(8\)个方向都跑一遍匹配就可以了。 对于单个测试数据,建自动机复杂度是\(O(\sum|s|\ |\Sigma|)\),总时间复杂度是\(O(\sum|s|\ |\Sigma|+8nm)\)。 注意输 阅读全文
posted @ 2024-08-19 16:04 Sinktank 阅读(8) 评论(0) 推荐(0) 编辑
摘要:[题解]P3966 [TJOI2013] 单词P3966 [TJOI2013] 单词 对所有模式串建立AC自动机。 用\(p[i]\)来表示经过节点\(i\)的字符串个数。 那么节点\(u\)的答案就是fail树上,以\(u\)为根的子树的\(p\)之和。 由于我们已经计算了\(p[i]\),所以字符串\(i\)作为模式串本身&模式串前缀的情况 阅读全文
posted @ 2024-08-12 20:16 Sinktank 阅读(7) 评论(0) 推荐(0) 编辑
摘要:[题解]P2292 [HNOI2004] L 语言P2292 [HNOI2004] L 语言 注: 下文中,\(s[l\sim r]\)表示截取字符串\(s\)的第\(l\)个字符到第\(r\)个字符。 文字描述的字符串下标从\(1\)开始,但代码实现从\(0\)开始。 我们建出AC自动机后,有一个比较暴力的思路。 我么用\(f[i]\)表示待查找 阅读全文
posted @ 2024-08-12 17:01 Sinktank 阅读(11) 评论(0) 推荐(0) 编辑
摘要:[笔记]KMP算法 - 下(例题)CF1200E Compress Words ~ 洛谷 给定\(n\)个字符串,请按下面的规则,从左往右依次合并\(n\)个字符串,成为\(1\)个字符串: 将\(A,B\)合并,就是找到最大的\(i\),使得\(A\)的长为\(i\)的后缀和\(B\)的长为\(i\)的前缀相等,删除\(A\)的这 阅读全文
posted @ 2024-08-03 19:44 Sinktank 阅读(39) 评论(0) 推荐(0) 编辑
摘要:[笔记]KMP算法 - 上(算法详解)算法详解 KMP 是一种字符串匹配算法,可以在线性的时间复杂度内解决字符串的“模式定位”问题,即: 在字符串 \(A\) 中查找字符串 \(B\) 出现的所有位置。 我们称 \(A\) 为主串,\(B\) 为模式串。下文都用 \(n\) 表示 \(A\) 的长度,\(m\) 表示 \(B\) 的长度 阅读全文
posted @ 2024-08-02 00:01 Sinktank 阅读(81) 评论(2) 推荐(1) 编辑

2025-2-27 8:14:36 TOP-BOTTOM-THEME
Enable/Disable Transition
Copyright © 2023 ~ 2024 Sinktank - 1328312655@qq.com
Illustration from 稲葉曇『リレイアウター/Relayouter/中继输出者』,by ぬくぬくにぎりめし.
点击右上角即可分享
微信分享提示