上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 24 下一页
摘要: 数数字 思路: 数位dp 代码: 阅读全文
posted @ 2018-09-10 23:27 Wisdom+.+ 阅读(264) 评论(0) 推荐(0) 编辑
摘要: Ka Chang 思路: dfs序+树状数组+分块 先dfs处理好每个节点的时间戳 对于每一层,如果这一层的节点数小于sqrt(n),那么直接按照时间戳在树状数组上更新 如果这一层节点个数大于sqrt(n),那么直接存一下这一层每个节点的大小(都是一样的),这样的层数不会超过sqrt(n)层 然后查 阅读全文
posted @ 2018-09-09 22:06 Wisdom+.+ 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 中位数 思路: 二分答案 代码: 阅读全文
posted @ 2018-09-09 20:26 Wisdom+.+ 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 括号 思路: dp 状态:dp[i][j]表示到i位置为止未匹配的 '(' 个数为j的方案数 状态转移: 如果s[i] == '(' dp[i][j] = dp[i-1][j] + dp[i-1][j-1] 如果s[i] == ')' dp[i][j] = dp[i-1][j] + dp[i-1][ 阅读全文
posted @ 2018-09-09 00:04 Wisdom+.+ 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 3949 思路: 线性基,线性基的每个元素尽可能小 将k转换成二进制与排好序的线性基相对应 如果线性基的个数小于n,说明n个元素线性相关,所以可以构成0,k要减1 代码: 阅读全文
posted @ 2018-09-08 00:13 Wisdom+.+ 阅读(143) 评论(0) 推荐(0) 编辑
摘要: xor序列 思路:线性基 代码: 阅读全文
posted @ 2018-09-07 22:53 Wisdom+.+ 阅读(163) 评论(0) 推荐(1) 编辑
摘要: D - All Your Paths are Different Lengths 思路: 二进制构造 首先找到最大的t,使得2^t <= l 然后我们就能构造一种方法使得正好存在 0 到 2^t - 1 的路径 方法是:对于节点 i 到 i + 1,添加两条边,一条边权值是2^(i-1),一条边权值 阅读全文
posted @ 2018-09-04 23:38 Wisdom+.+ 阅读(141) 评论(0) 推荐(0) 编辑
摘要: HRBUST - 2358 思路:dfs序 + 树状数组 代码: 阅读全文
posted @ 2018-08-28 17:27 Wisdom+.+ 阅读(132) 评论(0) 推荐(0) 编辑
摘要: E - GukiZ and GukiZiana 思路:分块, 块内二分 代码: 阅读全文
posted @ 2018-08-27 20:40 Wisdom+.+ 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 矩阵 思路: 预处理好前缀和,枚举上边界和下边界,将二维变成一维,用单调队列找满足题意的最小前缀 复杂度,O(r*r*c) 代码: 阅读全文
posted @ 2018-08-27 15:17 Wisdom+.+ 阅读(138) 评论(0) 推荐(0) 编辑
摘要: D - Table 思路:dp 首先,第i列的个数肯定和第i - n列个数一样,假设[i - n + 1, i - 1] 之间的个数之和为x,那么第i列和第i-n列的个数应该是n - x 那么我们可以用dp求方案数 状态:dp[i][j] 表是到第 i 列为止 填了 j 个的方案数 初始状态: dp 阅读全文
posted @ 2018-08-27 13:35 Wisdom+.+ 阅读(140) 评论(0) 推荐(0) 编辑
摘要: D - Leha and another game about graph 思路:首先,如果所有点的度数加起来是奇数,且没有-1,那么是不可以的。 其他情况都可以构造,我们先dfs出一个生成树,然后从叶子节点开始往上处理 对于节点u和v,边u -> v,如果d[v]等于1,那么就要选这条边,d[u] 阅读全文
posted @ 2018-08-26 15:13 Wisdom+.+ 阅读(158) 评论(0) 推荐(0) 编辑
摘要: B - Diverging Directions 思路: 用dfs序+线段树维护子树中距离(从1到u,再从u到1)的最小值 代码: 阅读全文
posted @ 2018-08-24 16:57 Wisdom+.+ 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 思路: 首先,inedible tails 的个数最多为C(18+9,9)个(用隔板法),所以我们暴力出所有的 inedible tails,然后检查一下在[L, R]这段区间是否存在这个inedible tails 检查的时候用了和数位dp差不多的方法,设一个下界和上界,只要之前的既没有达到上界也 阅读全文
posted @ 2018-08-24 13:43 Wisdom+.+ 阅读(270) 评论(0) 推荐(0) 编辑
摘要: D - Distinctive Character 思路:bfs 使最大的匹配数最小,转换一下,就是使最小的不匹配数最大,用bfs找最大的距离 代码: 阅读全文
posted @ 2018-08-24 09:45 Wisdom+.+ 阅读(338) 评论(0) 推荐(0) 编辑
摘要: 思路: 如果所有的图形都是三角形,那么答案是2*n+1 否则轮廓肯定触到了最上面,要使轮廓线最短,那么轮廓肯定是中间一段平的 我们考虑先将轮廓线赋为2*n+2,然后删去左右两边多余的部分 如果最左边或最由边是正方形,那么不需要删 如果最左边或最由边是圆形,那么删取2 - pi/2 如果如果最左边或最 阅读全文
posted @ 2018-08-23 17:29 Wisdom+.+ 阅读(201) 评论(0) 推荐(0) 编辑
摘要: C - DZY Loves Colors 思路: 分块,复杂度有点玄学,和普通分块不同的是在这个块被一次染色的时候暴力染整个块。 代码: 阅读全文
posted @ 2018-08-23 16:11 Wisdom+.+ 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 3076 思路: dfs + 剪枝 首先,如果这个位置只能填一种字母,那就直接填 其次,如果对于每一种字母,如果某一列或者某一行或者某一块只能填它,那就填它 然后,对于某个位置如果不能填字母了,或者某种字母在一行一列或一块中出向了两次以上,说明当前方案不成立 最后贪心地从可选情况少的往下搜 代码: 阅读全文
posted @ 2018-08-22 10:08 Wisdom+.+ 阅读(554) 评论(0) 推荐(0) 编辑
摘要: D - Recovering BST 思路:区间dp dp[l][r][0]表示l到r之间的数字可以构成一个二叉搜索树,并且以r+1为根节点 dp[l][r][0]表示l到r之间的数字可以构成一个二叉搜索树,并且以l-1为根节点 代码: 阅读全文
posted @ 2018-08-21 15:30 Wisdom+.+ 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 基环树:无向图,一个环,环上每个点都是树根 完备的扣环方法(可以扣二元环): 例1:BZOJ 1791 思路:对于每个基环树,求出直径,然后加起来 基环树求直径方法,将基环树的环扣出来,求出以环上每个点为根节点的树的直径以及深度,然后在环上求边权前缀和,枚举j, 那么答案就是sum[j] - sum 阅读全文
posted @ 2018-08-17 12:37 Wisdom+.+ 阅读(2481) 评论(2) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 ··· 24 下一页