题解:CF1971C Clock and Strings】的更多相关文章

题面 ARC058D Iroha Loves Strings 给定 \(n\) 个字符串,从中选出若干个按给出顺序连接起来,总长等于 \(m\),求字典序最小的,保证有解. 数据范围:\(1\le n\le 2000\),\(1\le k\le 10^4\),字符串总长 \(S\le 10^6\). 题解 atcoder 的题就是好啊,非常巧妙,毫不毒瘤. 这篇题解要抨击 Z-function 怪 ycx,造福人民. 有一个非常显然的思路:每次选当前选了的串右边没选且能选的中最小的. 这里的能选…
此题我写的是后缀数组SA解法,如果不会后缀数组的可以跳过本篇blog了. 参考文献:罗穗骞 2009集训队后缀数组论文 前记 最近学后缀数组,肝了不少题,也分出了后缀数组的几个题型,看这题没有后缀数组的解法,于是我决定来水一波. 注:思想正确,代码不一定正确. 分析题意 给定一个字符串 L,已知这个字符串是由某个字符串 S 重复 R 次而得到的, 求 R 的最大值. 其实就是求字符串L的连续重复子串.连续重复子串就是后缀数组的一个题型. 算法分析 1.我们需要最大的R,就说明我们需要连续重复子串…
题目: Given a pattern and a string str, find if str follows the same pattern. Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in str. Examples: pattern = "abba", str = "dog cat c…
Hash Table基础 哈希表(Hash Table)是常用的数据结构,其运用哈希函数(hash function)实现映射,内部使用开放定址.拉链法等方式解决哈希冲突,使得读写时间复杂度平均为O(1). HashMap(std::unordered_map).HashSet(std::unordered_set)的原理与Hash Table一样,它们的用途广泛.用法灵活,接下来侧重于介绍它们的应用. 相关LeetCode题: 706. Design HashMap  题解  705. Des…
题解-Reachable Strings 前置知识: \(\texttt{Hash}\) Reachable Strings 给一个长度为 \(n\) 的 \(\texttt{01}\) 串 \(s\),可以让 \(s\) 中的 \(\texttt{110}\) 和 \(\texttt{011}\) 互相转换.\(q\) 次询问,每次给定两个 \(s\) 的子串 \(s_{l_1\sim l_1+len-1}\) 和 \(s_{l_2\sim l_2+len-1}\),问两个串是否可以互相变换得…
题目来源 https://leetcode.com/problems/multiply-strings/ Given two numbers represented as strings, return multiplication of the numbers as a string. Note: The numbers can be arbitrarily large and are non-negative. 题意分析 Input: two numbers expressed as str…
题目描述 给定若干个长度小于等于10^6的字符串,询问每个字符串最多由多少个相同的子串重复连接而成.如:ababab,最多由3个ab连接而成. 输入输出格式 输入格式 若干行,每行一个字符串. 当读入到“.”时结束程序. 输出格式 若干行,为对应的答案. 输入输出样例 输入样例 abcd aaaa ababab . 输出样例 1 4 3 题解 这道题可以用字符串hash或kmp来做. 主要就是要将这道题转换成求最长前缀满足同为后缀. 假设在s[1...n]中,s[1...i]为前缀且s[n-i+…
Power Strings Description - Given two strings a and b we define ab to be their concatenation. For example, if a = "abc" and b = "def" then ab = "abcdef". If we think of concatenation as multiplication, exponentiation by a non…
题目大意 给定一个长为\(n\)的01串\(S\),每次你可以对一个串的三个连续位置做:\(011 \rightarrow 110\),\(110 \rightarrow 011\)的操作. 有\(q\)次询问,每次询问给出两个长度相等的子串,问是否能从一个串变到另一个串. 题解 首先,我们发现操作不改变\(1\)的个数.所以可以先用前缀和判断\(1\)的个数是否相等. 如果某个字符串不出现相邻的两个\(1\),那么容易得到你无法做任何有效的操作,就直接判断是否相等.这一步可以用hash或sa或…
Content 我们定义一个字符串是合法的,当且仅当这个字符串是"连续排列"(按照字母表顺序排序).现在给出 \(n\) 个字符串 \(s_1,s_2,s_3,...,s_n\),判断它们是否合法. 数据范围:\(1\leqslant n\leqslant 100,|s_i|\leqslant 100\) 且 \(s_i\) 仅由小写英文字母组成. Solution 这道题目关键的一点就在于:给字符串排序.我在 CF975A的题解 中曾详细讲过如何用 \(\texttt{sort}\)…