摘要: 传送门 感觉题意有坑 害我看了半天 题目原文: 一块墓地的虔诚度是指以这块墓地为中心的十字架的数目。一个十字架可以看成中间是墓地,墓地的正上、正下、正左、正右都有恰好k棵常青树。 本来以为要刚好 k 颗,不能多了 结果看着样例一脸懵逼 才发现多的可以不管 比如有一行有 a 颗树,那么从这 a 颗中随 阅读全文
posted @ 2018-09-28 22:35 LLTYYC 阅读(170) 评论(1) 推荐(1) 编辑
摘要: 传送门 正解矩阵树 不会 显然最小生成树每个长度的边的数量是不变的 而且题目说:具有相同权值的边不会超过10条。 暴力 dfs 枚举所有相同长度的边,看看有多少种方案 然后就过了 代码: 阅读全文
posted @ 2018-09-28 21:36 LLTYYC 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 传送门 思维难度很大的DP 设 f [ i ] 表示长度为 i 的山脉的合法方案数 考虑枚举最高的山的位置 j 那么在不考虑 j 左右两边是山谷或山脉的情况下 f[ i ] += f[ j-1 ] * f[ i-j ] * C[ i-1 ] [ j-1 ](C[ i-1 ] [ j-1 ] 表示i- 阅读全文
posted @ 2018-09-28 13:26 LLTYYC 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 传送门 搞回文串很容易想到manacher 把每个回文串看成线段 那就是求两个相邻线段的最长总长度 设 l[ i ] 表示左端点为 i-1 时线段的最大长度,r[ i ] 表示右端点为 i+1 时线段的最大长度 (这里 i 在manacher处理后的字符串a上,线段的最大长度是指原字符串上的长度) 阅读全文
posted @ 2018-09-28 10:40 LLTYYC 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 传送门 Folyd 本题需要对Folyd有较深的理解 考虑Folyd的思想 枚举每个中转点 用这些点去尝试更新其它所有两点的距离 如果有点不能走,显然它不能作为中转点 本题在不同的时间有不同的点能走 用Floyd可以枚举所有可以走的中转点,更新其它两点的距离 好像复杂度是 O(n^3 * q) 但是 阅读全文
posted @ 2018-09-28 10:19 LLTYYC 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 传送门 考虑只有两个人的情况 集合点可以是树上两点间路径上的任一点 总长度可以用LCA求出 ans=dep[ x ] - dep[ LCA(x,y) ] + dep[ y ] - dep[ LCA(x,y) ] 三个人也差不多 Ans=dep[ x ] - dep[ LCA(x,y) ] + dep 阅读全文
posted @ 2018-09-28 09:56 LLTYYC 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 传送门 线段树 开根号好像没办法搞延迟标记 但是可以发现 10^12 只要开 6 次根号向下取整就等于 1 1再怎么开也是1 所以一个数最多只要开6次根号就不用再搞了 我们可以维护一个最大值 如果整个区间的最大值<=1 那么整个区间都不需要修改,直接跳过就好了 不然的话就暴力开根 修改复杂度 O(6 阅读全文
posted @ 2018-09-28 09:37 LLTYYC 阅读(210) 评论(0) 推荐(0) 编辑