03 2020 档案

摘要:题意 告诉你一个序列,不同的数字代表不同的种类的动物,你需要给每只动物上色 如果相邻两个动物种类不同,那么他们涂的颜色也必须是不同的 给定的序列首尾相连,即最后一个与第一个也是相邻的 问最少需要多少种颜色去涂,且输出涂色方案 相同种类的动物可以涂不同的颜色 解题思路 显而易见,全部都是同种动物只需要 阅读全文
posted @ 2020-03-27 02:09 StelaYuri 阅读(404) 评论(0) 推荐(0) 编辑
摘要:AC自动机 性质 AC自动机/AC算法(Aho-Corasick automaton),是著名的多模式串匹配算法。 前置知识 字典树(重要) KMP算法(了解Next数组的作用) 典例与算法复杂度分析 典型例题是:给定一个主串 S,给定多个模式串 T,问主串 S 中存在多少个给定的模式串 在KMP算 阅读全文
posted @ 2020-03-27 01:36 StelaYuri 阅读(459) 评论(0) 推荐(0) 编辑
摘要:字典树 描述 字典树,又称单词查找树、Trie树、前缀树,是一种树形结构,是一种哈希树的变种。 典型应用是用于统计、排序和保存大量的字符串(但不仅限于字符串)。 常见操作有插入和查找,删除操作少见。 性质 根节点不包含字符 除根节点外每一个节点都只包含一个字符 从根节点到某一节点,路径上经过的字符连 阅读全文
posted @ 2020-03-25 23:19 StelaYuri 阅读(442) 评论(0) 推荐(0) 编辑
摘要:题意 给定一个数n 说明有从 0 到 9999...(n个9)的10^n个数字 所有数字如果不及n位,全部用前导0填充,以保证每个数字都是n位数 然后定义每个数字是由多个块组成的 相邻的相同数字构成一个块 以 00027734000 为例 共有3个长度为1的块(2,3,4) 1个长度为2的块(77) 阅读全文
posted @ 2020-03-24 01:45 StelaYuri 阅读(271) 评论(0) 推荐(0) 编辑
摘要:题目大意 T组数据,每组给定一个字符串 s 求一个 最长的 字符串 t ,满足: 1. t 是一个 回文串 2. t = a+b , a是字符串s的前缀,b是字符串s的后缀 ,'+' 为拼接两字符串,ab可能为空串 数据范围 数据组数不超过 1000 字符串的总共长度不超过 5000 解题思路 可直 阅读全文
posted @ 2020-03-20 06:18 StelaYuri 阅读(332) 评论(0) 推荐(0) 编辑
摘要:题目大意 T组数据,每组给定一个字符串 s 求一个 最长的 字符串 t ,满足: 1. t 是一个 回文串 2. t = a+b , a是字符串s的前缀,b是字符串s的后缀 ,'+' 为拼接两字符串,ab可能为空串 数据范围 数据组数不超过 1e5 字符串的总共长度不超过 1e6 解题思路 (标准做 阅读全文
posted @ 2020-03-20 05:37 StelaYuri 阅读(416) 评论(0) 推荐(1) 编辑
摘要:【本文解决 区间修改/区间求和 的问题】 区间求和部分内容与上一篇内容相同,详见 线段树点修改/区间求和 已经知道了在O(logN)的复杂度内求N个连续数之和的做法 对于区间修改,最简单的办法就是进行多次点修改 但是多次点修改最后的时间复杂度为O(NlogN),还不及最普通的数组模拟O(n)效率高 阅读全文
posted @ 2020-03-19 18:51 StelaYuri 阅读(1254) 评论(0) 推荐(0) 编辑
摘要:线段树 本文描述高级数据结构线段树的定义,并解决 点修改/区间求和 的问题 结构与定义 线段树的基本结构 由图可知,线段树的每一个节点都代表着一段区间 且同一层的节点(深度相同的节点)所表示的区间互不重叠 所有叶子节点代表的区间左边界与右边界相同(叶子节点代表单个元素) 普遍规定 如果某个非叶子节点 阅读全文
posted @ 2020-03-18 21:26 StelaYuri 阅读(663) 评论(0) 推荐(0) 编辑
摘要:题意: 这个地方一天有 h 个单位时间,Vova打算睡觉睡 n 次觉 每次睡觉可以睡 a[ i ] 个单位时间或者 a[ i ] - 1 个单位时间,但必须要睡满 如果醒来的时间在 [ l , r ] 这个范围内,那么这个睡眠时间就很好(答案+1) (醒来之后又要马上睡下一次的觉……) 问Vova该 阅读全文
posted @ 2020-03-17 00:41 StelaYuri 阅读(219) 评论(0) 推荐(0) 编辑
摘要:【求模式串与主串的每一个后缀的最长公共前缀】 有两个字符串 主串S 与 模式串T 求主串S从第 i 个位置开始,与T的最长相同前缀的长度 即 S[ i ]~S[ i+mlen ] = T[ 0 ]~T[ mlen ] 的 mlen 值 对于 i∈[ 0,Slen ) 的任意一个i都求一遍 定义:(这 阅读全文
posted @ 2020-03-16 21:09 StelaYuri 阅读(434) 评论(0) 推荐(0) 编辑
摘要:【匹配字符串S与T,判断T是否为S的子串】 即在主串S中快速匹配是否存在一个子串等同于模式串T S为被匹配串(主串),T为匹配串(模式串) 实现方式: 在最普通的算法中,我们总是拿两个指针指向两个字符串的不同位置来匹配 如果某个字符匹配成功就把两个光标同时移动到下一个位置,即 如果不匹配,那么模式串 阅读全文
posted @ 2020-03-16 20:11 StelaYuri 阅读(225) 评论(0) 推荐(0) 编辑
摘要:【 快速寻找出一字符串内的最长回文子串 】 以abaaba为例 因为回文串也分为奇数长度与偶数长度的 所以回文子串的中心点可能是某个字符,也可能是某两个字符之间 所以算法先会预处理初始字符串,让每两个字符之间加一个原本不存在的特殊字符 即原串会先被处理为 #a#b#a#a#b#a# 然后为了防止数组 阅读全文
posted @ 2020-03-16 19:58 StelaYuri 阅读(206) 评论(0) 推荐(0) 编辑
摘要:题意: 给定两个数 u v ,求一个最短的数组 这个数组所有元素按位异或等于 u ,且和为 v 找不到输出 -1 否则输出数组的个数,再输出数组内的正整数 解题思路: 首先考虑到 -1的情况 根据二进制关系, 一个数 异或=和(自己=自己) 两个及以上数 异或<=和(二进制加法得知,等于的情况出现在 阅读全文
posted @ 2020-03-15 02:50 StelaYuri 阅读(340) 评论(0) 推荐(1) 编辑
摘要:题意: 给定一棵 n 个节点 n-1 条边的树 你需要给这棵树的每条边打上编号 编号从 0 开始到 n-2 定义 MEX( u,v ) 表示从节点 u 走到节点 v 的途中所经过的边中没有出现过的编号的最小非负整数 为了使得最大的 MEX( u,v ) 值最小 问应该如何编号 解题思路: 两个节点一 阅读全文
posted @ 2020-03-15 02:08 StelaYuri 阅读(327) 评论(0) 推荐(0) 编辑
摘要:题目大意: 坐标轴上有 n 个点,每个点有初始位置 x 与速度 v 问在运动过程中,点两两之间最小距离之和 2<=n<=200000 1<=x<=1e8 -1e8<=v<=1e8 解题思路: 两两点情况共三种: 1、左边的点速度小于右边的点:这种情况距离会随运动时间增加而增加,最小距离即初始距离 2 阅读全文
posted @ 2020-03-11 17:34 StelaYuri 阅读(254) 评论(0) 推荐(0) 编辑
摘要:题目大意: 定义一颗二叉树,根节点编号为 1 令树上节点的深度为该节点到根节点的距离 给定两个数 n 和 d 问使用 n 个节点是否能够构成一颗总深度为 d 的二叉树 能,从第二个节点开始输出它的父节点 T<=1000 n,d<=5000 SUM(n)<=5000 SUM(d)<=5000 解题思路 阅读全文
posted @ 2020-03-11 17:19 StelaYuri 阅读(183) 评论(0) 推荐(0) 编辑
摘要:题目大意: 给定三个整数 a b c 给三个数字任意一个 +1 或 -1 算一次操作 求最少的操作次数,使得 b%a==0 且 c%b==0 输出最少操作次数及操作后的 a b c a,b,c<=10000 T<=100 解题思路: 首先想到找规律,可以分成12种情况,a不变bc变共4种,b不变ac 阅读全文
posted @ 2020-03-11 16:37 StelaYuri 阅读(222) 评论(0) 推荐(0) 编辑
摘要:题目大意: 给定两个多项式长度 n 和 m ,再给定每一项的系数,由常数项到最高次项 保证多项式所有项系数的最大公约数为 1 再给定一个质数 p 问两个多项式相乘后得到的第三个多项式中 哪一项的系数不是 p 的倍数,输出这个项的x的幂次(下标) 存在多个答案时,输出任意一个 解题思路: 从 “保证多 阅读全文
posted @ 2020-03-06 00:46 StelaYuri 阅读(248) 评论(0) 推荐(0) 编辑
摘要:给定一段字符串S 给定Q次询问,每次询问存在多少个长度为D的子串(char型子序列),以字母AB结尾 |S|最大为2000,Q最大为50w 显而易见,我们只考虑结尾为AB字符的子串 所以可以根据A的位置,求出A位置前有多少字符,用组合数可以求出能够得到多少组合 即假设某个字符A的位置为p,则A前字符 阅读全文
posted @ 2020-03-05 16:15 StelaYuri 阅读(118) 评论(0) 推荐(0) 编辑
摘要:找最长的等差数列长度 数据范围是 n<=2000,a[i]<=2000 容易想到的是枚举等差数列前两项,得到差值后向后查找 a数组存数值,b数组存某个数出现的个数(也可判断是否出现过) 这是个O(n^3)级别的想法,所以必须在此基础上继续优化 首先排除公差为0的情况,即找出相同的数出现最多次的次数 阅读全文
posted @ 2020-03-04 15:32 StelaYuri 阅读(135) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示