02 2018 档案
摘要:[BZOJ1501][NOI2005]智慧珠游戏(搜索) 题面 我要一改我懒惰的作风 这道题目必须放题面 Description Input 文件中包含初始的盘件描述,一共有10行,第i行有i个字符。 如果第i行的第j个字符是字母”A”至”L”中的一个,则表示第i行第j列的格子上已经放了零件,零件的
阅读全文
摘要:【BZOJ1499】瑰丽华尔兹(动态规划) 题面 "BZOJ" 题解 先写部分分 设表示当前在时刻,位置在时走的最多的步数 这样子每一步要么停要么走 时间复杂度 得分分 (据说这样能过???) cpp include includ
阅读全文
摘要:Codeforces Round 467 (div.2) 我才不会打这种比赛呢 (其实本来打算打的) 谁叫它推迟到了 我爱睡觉 题解 A. Olympiad 翻译 给你若干人的成绩 让你划定一个分数线 使得所有不低于这个分数线的人都可以获奖 但是分的人一定不能得奖 问你有多少种获
阅读全文
摘要:【BZOJ2599】Race(点分治) 题面 "BZOJ权限题,洛谷" 题解 好久没写过点分治了。。。 在ppl的帮助下终于想起来了 ~~orz ppl~~ 首先回忆一下怎么求有没有正好是的路径 维护一个表示距离的桶 对于当前重心,依次插入每棵子树的距离值 然后检查是否存在即可 显然加一步,求
阅读全文
摘要:【BZOJ2998】Problem A(动态规划) 题面 "BZOJ" 题解 一个人的成绩范围可以确定为一个区间 这样就变成了 选择若干区间,不重合, 每个区间有个权值,求最大权值和 这样就可直接了 cpp include include include include include in
阅读全文
摘要:【BZOJ4556】字符串(后缀数组,主席树) 题面 "BZOJ" 题解 注意看题: 要求的是的 子串 和[c,d]的的最大值 先来一下暴力吧 求出之后 暴力枚举之间的后缀 求一个 复杂度 分到手
阅读全文
摘要:【BZOJ4552】排序(线段树,二分答案) 题面 "BZOJ" 题解 好神的题啊 直接排序我们做不到 怎么维护? 考虑一下,如果我们随便假设一个答案 怎么检验它是否成立? 把这个数设成,其他的数字都设成 最后检查一下这个位置是不是就好啦 但是这样没法排序 那么,我们考虑二分一个答
阅读全文
摘要:【BZOJ2754】喵星球上的点名(AC自动机) 题面 "BZOJ" 题解 友情提示:此题请不要在cogs上提交,它的数据有毒 对于点名串构建自动机 然后把名字丢进去进行匹配, 大力统计一下答案即可 当然,要用记录树 cpp include include includ
阅读全文
摘要:所有的题目都可以在 "CodeForces" 上查看 中间看起来有很多场比赛我没有写了 其实是因为有题目没改完 因为我不想改,所以就没有写了(大部分题目还是改完了的) 我还是觉得如果是打了的比赛就一场一场写比较好 要不然以后就写有难度的、比较好的题目?? 这场比赛时间真心良心(只是没吃饭) 状态也很
阅读全文
摘要:【CF235C】Cyclical Quest(后缀自动机) 题面 "洛谷" 题解 大致翻译: 给定一个串 然后若干组询问 每次也给定一个串 这个串可以旋转(就是把最后一位丢到最前面这样子) 问这个串以及其旋转的串在给定的串中出现了多少次 显然,串可以旋转,那么考虑在后面再接一份就行了 匹配的话就是后
阅读全文
摘要:【Luogu3444】ORK Ploughing(贪心) 题面 "Luogu" 题解 我们知道,如果我们选定了以横向为主,或者纵向为主, 那么就有尽可能减少另一个方向上耕地的次数 所以分开贪心,但是本质相同,所以接下来只考虑纵向为主 既然确定了以纵向为主,那么就要尽可能减少横向操作的次数 所以,只要
阅读全文
摘要:【Luogu3457】POW The Flood(并查集) 题面 "洛谷" 题解 我们知道,如果一个点和一个海拔不高于它的点相连 那么连在那个点是更优的,所以考虑按照每个点的海拔排序 既然按照海拔排序,相邻的海拔递增的点可以放在同一个集合里面讨论 考虑使用并查集,每一个集合中只需要有一个抽水机即可
阅读全文
摘要:【CF245H】Queries for Number of Palindromes(回文树) 题面 "洛谷" 题解 回文树,很类似原来一道后缀自动机的题目 "后缀自动机那道题" 看到的范围很小,但是很多 所以提前预处理出每一段的答案 时间复杂度 cp
阅读全文
摘要:【CF17E】Palisection(回文树) 题面 "洛谷" 题解 题意: 求有重叠部分的回文子串对的数量 所谓正难则反 求出所有不重叠的即可 求出以一个位置结束的回文串的数量 和以一个位置为开始的回文串的数量 然后对应的乘一下就行了 求法我用的是回文树 维护每个节点到根节点的距离, 就是回文后缀
阅读全文
摘要:【SPOJ】NUMOFPAL Number of Palindromes(Manacher,回文树) 题面 "洛谷" 求一个串中包含几个回文串 题解 Manacher傻逼题 只是用回文树写写而已。。 cpp include include include include include includ
阅读全文
摘要:【BZOJ2160】拉拉队排练(回文树) 题面 "BZOJ" 题解 看着题目, 直接构建回文树 求出每个回文串的出现次数 直接按照长度一下就行了 然后快速幂算一下答案就出来了 这题貌似可以用Manacher做吧 求出以每个字符为中心的回文串的最大长度 然后搞一下前缀和就行了 cpp in
阅读全文
摘要:【CF932G】Palindrome Partition(回文树,动态规划) 题面 "CF" 翻译: 给定一个串,把串分为偶数段 假设分为了 求,满足的方案数 题解 反正我是不会做 基本就是照着的打了
阅读全文
摘要:【BZOJ4805】欧拉函数求和(杜教筛) 题面 "BZOJ" 题解 好久没写过了 正好看见了顺手切一下 令 设存在的某个积性函数 $$(g \varphi)(i)=\sum_{d|i}g(d)\varphi(\frac{i}
阅读全文
摘要:【BZOJ2342】双倍回文(回文树) 题面 "BZOJ" 题解 构建出回文树之后 在树上进行 如果一个点代表的回文串长度为的倍数 并且存在长度为它的一半的回文后缀 那么就是可行的 如何维护长度是一半的回文后缀? 树上的父亲一定包括了它的所有的回文后缀 因此在$
阅读全文
摘要:【BZOJ2565】最长双回文串(回文树) 题面 "BZOJ" 题解 枚举断点 显然的,我们要求的就是以结尾的最长回文后缀的长度 再加上以开头的最长回文前缀的长度 至于最长回文前缀怎么求? 把串反过来前缀不就变成后缀了吗? 所以构造两个回文树就好啦 cpp include in
阅读全文
摘要:关于回文树的理解 前言 这段时间搞字符串上了瘾? 看起来是的 那就继续搞吧 Part1一些名词 回文串 不想解释什么意思 回文子串 一个串的子串,它是回文串,那么它就是回文子串 最长回文后缀 对于一个长度小于自己的后缀,如果它是回文串,并且不存在比它更长的回文后缀,那么它就是最长回文后缀 最长回文前
阅读全文
摘要:【BZOJ2882】工艺(后缀数组) 题面 "BZOJ权限题,我爱良心洛谷" 题解 最容易的想法: 把字符串在后面接一份 然后求后缀数组就行了。。。 cpp include include include include include include include include include
阅读全文
摘要:【BZOJ3926】诸神眷顾的幻想乡(后缀自动机) 题面 "BZOJ" 题解 广义后缀自动机啦 求多个串的不同子串个数? 当然是后缀自动机,最后只要把求个和就好啦 那么这题怎么建后缀自动机 能够把所有子串都丢进去呢? 当然不用从每一个节点开始 把树建出
阅读全文
摘要:【BZOJ3277】串(后缀自动机) 题面 "BZOJ" 题解 广义后缀自动机??? 照着别人的打了一遍。。 相当于每个串都构建一个后缀自动机 构建完一个串之后,直接把当前的last指回root就行了??? 好吧,我觉得我看了一个假的广义后缀自动机。。 不过这道题这样就行了 考虑如何计算一个串在多少
阅读全文
摘要:【BZOJ5093】图的价值(第二类斯特林数,组合数学,NTT) 题面 "BZOJ" 题解 单独考虑每一个点的贡献: 因为不知道它连了几条边,所以枚举一下 因为有个点,所以还要乘以一个
阅读全文
摘要:关于第二类斯特林数的一丢丢东西 第二类斯特林数 S(n,m)表示有个有区别小球,要放进个相同盒子里,且每个盒子非空的方案数 考虑一个很容易的递推: 考虑组合意义: 假设前面的个球丢进了个组,因为每个组非
阅读全文
摘要:【BZOJ3238】差异(后缀自动机) 题面 "BZOJ" 题解 前面的东西直接暴力算就行了 其实没必要算的正正好 为了方便的后面的计算 我们不考虑的顺序问题 也就是先求出 然后对于每个后缀树上的节点,减去一
阅读全文
摘要:【BZOJ4566】找相同字符(后缀数组) 题面 "BZOJ" 题解 后缀数组的做法,应该不是很难想 首先看到两个不同的串,当然是接在一起求 那么,考虑一下暴力 在两个串各枚举一个后缀,他们的就是对答案产生的贡献 现在优化一下,按照的顺序枚举来处理
阅读全文
摘要:【BZOJ4566】找相同字符(后缀自动机) 题面 "BZOJ" 题解 看到多串处理,就连起来 单串建自动机 然后其他串匹配 对于一个串建完后 另一个串在上匹配 记录当前匹配的最大长度 匹配了当前位置的话,就能产生一定的贡献 但是很显然,沿着$paren
阅读全文
摘要:【BZOJ2555】SubString(后缀自动机,Link Cut Tree) 题面 "BZOJ" 题解 这题看起来不难 每次要求的就是集合的大小 所以搞一个维护一下的树就好了 但是代码一点都不好写(我还是对着黄学长的调的。。。) 于
阅读全文
摘要:【HDU4622】Reincarnation(后缀自动机) 题面 "Vjudge" 题意:给定一个串,每次询问l~r组成的子串的不同子串个数 题解 看到字符串的大小很小 而询问数太多 所以我们预处理任意的答案 枚举左端点,依次向右加入新节点 直接统计答案即可 cpp include include
阅读全文
摘要:【SPOJ】Substrings(后缀自动机) 题面 "Vjudge" 题意:给定一个长度为的串,求出长度为1~len的子串中,出现最多的出现了多少次 题解 出现次数很好处理,就是集合的大小 那么,直接构建 求出每个位置的集合大小 直接更
阅读全文
摘要:【SPOJ】Longest Common Substring II (后缀自动机) 题面 "Vjudge" 题意:求若干个串的最长公共子串 题解 对于某一个串构建 每个串依次进行匹配 同时记录表示走到了节点 能够匹配上的最长公共子串的长度 当然,每个串的可以更
阅读全文
摘要:【SPOJ】Longest Common Substring(后缀自动机) 题面 "Vjudge" 题意:求两个串的最长公共子串 题解 的做法很简单 不再赘述 对于一个串构建 另外一个串在上不断匹配 最后计算答案就好了 匹配方法: 如果存在 直接沿
阅读全文
摘要:【Luogu3804】【模板】后缀自动机(后缀自动机) 题面 "洛谷" 题解 一个串的出现次数等于集合的大小 而这个集合的大小等于所有树上儿子的大小 这样子的话,给每个终止位置的记为 然后按照拓扑序累加,这就是
阅读全文
摘要:【SPOJ】Distinct Substrings(后缀自动机) 题面 "Vjudge" 题意:求一个串的不同子串的数量 题解 对于这个串构建后缀自动机之后 我们知道每个串出现的次数就是集合的大小 但是实际上我们没有任何必要减去不合法的数量 我们只需要累加每个节点表示的合
阅读全文
摘要:后缀自动机的一点点理解 前言 最近心血来潮,想学学SAM,于是花了一晚上+一上午 勉强打了出来(但是还是不理解) 虽说张口就讲我做不到 但是一些其他的东西还是有所感触的 索性,乱写点东西,写写关于SAM的一些简单的理解 资料 "丽洁姐WC PPT" "hihocoder上的后缀自动机" 一些概念 这
阅读全文
摘要:【BZOJ2843】极地旅行社(Link Cut Tree) 题面 "BZOJ" 题解 模板题呀 没什么好说的了。。 cpp include include include include include include include include include include us
阅读全文
摘要:【BZOJ1997】Planar(2 sat) 题面 "BZOJ" 题解 很久没做过了 今天一见,很果断的就来切 这题不难呀 但是有个玄学问题: 平面图的性质:边数的最大值为 然后就可以把边数减到级别。。。 现在好了 因为已经告诉你了一个环 那就先把环给抠
阅读全文
摘要:【BZOJ2134】单位错选(数学期望,动态规划) 题面 "BZOJ" 题解 单独考虑相邻的两道题目的概率就好了 没了呀。。 cpp include include include include include include include include include include usi
阅读全文
摘要:【BZOJ1030】文本生成器(AC自动机,动态规划) 题面 "BZOJ" 题解 超级简单良心送分题 很明显是所有状态 不合法状态 合法状态就是 不合法状态做一个就好 cpp include include include include include include incl
阅读全文
摘要:【BZOJ3160】万径人踪灭(FFT,Manacher) 题面 "BZOJ" 题解 很容易想到就是满足条件的子序列个数减去回文子串的个数吧。。。 至于满足条件的子序列 我们可以依次枚举对称轴 如果知道关于这个位置对称的位置的组数 就很容易算了(直接) 而关于这个位置对称是什么东西?
阅读全文
摘要:【BZOJ2004】公交线路(动态规划,状态压缩,矩阵快速幂) 题面 "BZOJ" 题解 看到这么小 不难想到状态压缩 看到这么大,不难想到矩阵快速幂 那么,我们来考虑朴素的 设表示当前位置为,前面的个位置的状态为 其中,状态的含义是某个公
阅读全文
摘要:CF922 CodeForces Round 461(Div.2) 这场比赛很晚呀 果断滚去睡了 现在来做一下 A "CF922 A" 翻译: 一开始有一个初始版本的玩具 每次有两种操作: 放一个初始版本进去,额外得到一个初始版本和一个复制版本 放一个复制版本进去,额外得到两个复制版本 一开始有$1
阅读全文
摘要:【BZOJ2442】修建草坪(动态规划,单调队列) 题面 "权限题。。洛谷" 题解 设表示前个里面选出来的最大值 转移应该比较显然 枚举一个断点的位置,转移一下就好 所以可以单调队列优化一下 (不优化用各种玄学可以拿90分。
阅读全文
摘要:【BZOJ1415】【NOI2005】聪聪和可可(动态规划,数学期望) 题面 "BZOJ" 题解 先预处理出当可可在某个点,聪聪在某个点时 聪聪会往哪里走 然后记忆化搜索一下就好了 cpp include include include include include include include
阅读全文
摘要:【BZOJ1855】股票交易(动态规划,单调队列) 题面 "BZOJ" 题解 很显然,状态之和天数以及当天剩余的股票数有关 设表示第天进行了交易,剩余股票数为的最大获利 每次枚举可以转移过来的天数以及股票数 再枚举买入或者卖出的数量, 时间复杂度
阅读全文
摘要:【Uoj34】多项式乘法(NTT,FFT) 题面 "uoj" 题解 首先多项式乘法用是一个很久很久以前就写过的东西 直接贴一下代码吧。。 cpp include include include include include include include include include
阅读全文
摘要:【BZOJ3992】序列统计(动态规划,NTT) 题面 "BZOJ" 题解 最裸的暴力 设表示前个数,积在膜意义下是的方案数 转移的话,每次枚举一个数,直接丢进去就好 复杂度,10pts 现在就是最大的问题了 已经优化到了 转移现在
阅读全文
摘要:【BZOJ4009】接水果(整体二分,扫描线) 题面 "为什么这都是权限题???,洛谷真良心" 题解 看到这道题,感觉就是主席树/整体二分之类的东西 (因为要求第大) 但是,读完题目之后,我们发现路径之间的包含关系很不好搞 那么,我们来画画图 这是第一种情况,不是 $u,v
阅读全文
摘要:【POJ1151】Atlantis(线段树,扫描线) 题面 "Vjudge" 题解 学一学扫描线 其实很简单啦 这道题目要求的就是若干矩形的面积和 把扫描线平行于某个轴扫过去(我选的平行轴扫) 这样只需要求出每次和轴覆盖的长度 就可以两两相乘,求出面积 最后累计和就行啦 cpp incl
阅读全文
摘要:【BZOJ2428】均分数据(模拟退火) 题面 "BZOJ" 题解 先说说黄学长的做法: 当温度比较高的时候,贪心 每次随机一个数,把他放进当前和最少的那一组里面 温度足够低的时候就完全随机然后转移 这样子写貌似会挂??? (我只有70分。。,洛谷测的) 然后看到了巨神的做法 (太强啦,实
阅读全文
摘要:【UOJ207】共价大爷游长沙(Link Cut Tree,随机化) 题面 "UOJ" 题解 这题太神了 看到动态的维护边很容易的想到了 然后能否堵住一条路 我们也不难想到,以这条路的一个端点为根的子数 是否恰好包含了集合中所有点对的中的恰好一个点 但是怎么算恰好包
阅读全文
摘要:【BZOJ4872】分手是祝愿(动态规划,数学期望) 题面 "BZOJ" 题解 对于一个状态,如何求解当前的最短步数? 从大到小枚举,每次把最大的没有关掉的灯关掉 暴力枚举因数关就好 假设我们知道了当前至少要关次 如果一个灯被动两次以上是没有任何意义的 所以,相当于,要动的灯只有
阅读全文
摘要:【BZOJ4237】稻草人(CDQ分治,单调栈) 题面 "BZOJ" 题解 分治好题呀 假设固定一个左下角的点 那么,我们可以找到的右下角长什么样子??? 发现什么? 在右侧是一个单调递减的东西 那么,对于每一个已经固定好的左下角 我们可以通过单调栈来维护答案 既然只有左下角对右上角会产生
阅读全文
摘要:【BZOJ1146】网络管理(整体二分) 题面 "良心洛谷,有BZOJ权限题" 题解 要看树套树的 "戳这里" 毕竟是:智商不够数据结构来补 所以, 我们来当一回智商够的选手 ~~听说主席树的题目大部分都可以整体二分~~ 这题丢进去整体二分就行了 只需要查询树上贡献的前缀和 但是,对于这种带修改的
阅读全文
摘要:【BZOJ1146】网络管理(主席树,树状数组) 题面 "BZOJ权限题,洛谷题面" 题解 树上带修改主席树 貌似和那题很相似呀 只需要套上一个树状数组来维护修改好就好了 但是记住是用来记录主席树的标号 一定不要搞错了 每一次修改只会影响他子数的值
阅读全文
摘要:【BZOJ3110】K大数查询(整体二分) 题面 "BZOJ" 题解 看了很久整体二分 一直不知道哪里写错了 。。。 又把树状数组当成线段树区间加法来用了。。 整体二分还是要想清楚在干什么: 我们考虑第大是什么 就是还有个比他小 这样子就可以考虑二分之后如何 当前二分出
阅读全文
摘要:题面 题目详见 "CodeForces" 先大概的写个翻译。。。 A 有一个长度为的花园 有个水龙头, 假设水龙头的位置在 后会被灌溉 后会被灌溉 后会被灌溉 问这个花园在什么时候会被灌溉完 B 阅读
阅读全文
摘要:【Luogu1337】平衡点(模拟退火) 题面 "洛谷" 题解 和BZOJ3680吊打XXX是一样的。。 但是数据很强呀。。 疯狂调参 各种WA。。。 很无奈呀。。。。 cpp include include include include include include include inclu
阅读全文
摘要:【BZOJ3680】吊打XXX(模拟退火) 题面 "BZOJ" 题解 模拟退火。。。 就是模拟退火 然后这题有毒 各种调参数之后终于了。。 这种题就是玄学呀。。。 温度要调大 最后跑完还要向四周多几次 保证能够找到最优解。。。 cpp include include includ
阅读全文
摘要:【BZOJ2527】MET Meteors(整体二分) 题面 "BZOJ权限题,良心洛谷链接" 题解 其实我也不会做 看了zsy博客才会做。。。 这题如果直接爆算做显然行不通 如果只有单次询问,我们就可以二分答案 但是询问太多。。 不会二分。。 怎么办? 我们来想想瓶颈在哪里 如果每次都进行一次单次
阅读全文
摘要:【BZOJ1996】合唱队(动态规划) 题面 "BZOJ" 题解 很容易的一道题 因为每个人不是放在了左边就是放在了右边 所以每次放好的人必定是原序列的一个子串 所以,很容易想到区间 设表示已经放好了第个人到第个人的方案数 因为不知道这个人的前面是当前序列的左端
阅读全文
摘要:【BZOJ2337】Xor和路径(高斯消元) 题面 "BZOJ" 题解 我应该多学点套路: 对于xor之类的位运算,要想到每一位拆开算贡献 所以,对于每一位拆开来看 好了,既然是按位来算 我们就只需要计算从号点开始 到的路径中,路径的异或和为的概率 显然没法算 还是一样的 考虑高斯
阅读全文
摘要:【BZOJ3143】游走(高斯消元,数学期望) 题面 "BZOJ" 题解 首先,概率不会直接算。。。 所以来一个逼近法算概率 这样就可以求出每一条边的概率 随着走的步数的增多,答案越接近 (我卡到步可以拿分) 这样子算出来会有精度问题 所以就挂了 现在考虑怎么算这个概率 显然不能
阅读全文
摘要:THUWC2018滚粗记 前言 又是一篇滚粗记, 不过可能还要写过很多很多篇滚粗记, 才会有一篇不是滚粗记的东西啦 总而言之,我现在还是太菜了 还要过一大段时间我才会变强啦 Day inf 联赛考完,停训一个个月 我和学科度过了美好的一个月 然后月考多名英勇滚粗 ~~ZSY月考照样吊打我~
阅读全文