
bzoj
文章平均质量分 80
jzhang1
这个作者很懒,什么都没留下…
展开
-
bzoj4460
bzoj 4460 提供一个n^3的做法. 首先考虑原题的性质,很容易知道答案不会超过目标串的长度,于是答案可以枚举。 然后我们可以枚举第一个字符是从第几行第几列开始的,然后之后的字典树暴力匹配.(n^4) (一共L个字典树,字典树i存的是每个串从位置i开始的后缀。) 后来我发现其实第一个字符的列数可以不用枚举,我们先求出list[i][j]表示目标串中第i行能不能从给出的木桩中从位置j原创 2016-05-10 15:07:24 · 827 阅读 · 1 评论 -
bzoj4505
考虑一位一位的枚举答案. 首先我们知道答案串(设当前枚举到的长度为L)与原串1到L,n-L+1到n是匹配的(这个性质很重要). 我们设f[i]表示从i开始长度为L的子串能不能和1-L匹配,每次L变化时首先更新一下f[i]. 对于当前L,我们暂时把所有f为true的状态存入一个队列.然后我们考虑1-L一共有多少问号. 我们考虑爆搜每一个问号是什么颜色,然后对当原创 2016-04-15 17:17:31 · 753 阅读 · 0 评论 -
bzoj4572
一个鬼畜的做法...(估计没人看,看了也没人写..) 首先状压Dp应该都知道吧(然而yjq直接容斥强势艹过...),那么我们来优化状态,首先考虑不可能匹配成功的状态,把它们缩到一个状态,我们发现,哇!一下子少了好多状态!大概从几百万变成了5w-15w左右,但是Dp是状态数^2的,这样子肯定不行...然后一个鬼畜的优化就来了,我把与第一行匹配开始点相同的状态缩成一个状态,然后发现有一维的状态变成了原创 2016-04-28 18:31:46 · 982 阅读 · 0 评论 -
bzoj4593
感谢王队长对本题的点拨... 我们先直接以1为根,考虑到一个点的代价貌似只和根与儿子节点有关。所以想到状态f[],h[],分别表示父亲还没炸,炸掉i子树 的花费和父亲先被炸掉的花费,可以观察到h[i] TYPE A : 因为c[i] TYPE B : 现在c[i] c[v]并且f[v] - h[v] = c[v]时用h[v]更优,但是这样就完了吗?当然不是,原创 2016-05-28 14:28:06 · 1102 阅读 · 0 评论 -
bzoj4464
OJ上放的题解是网络流这里先放一份(然而是过不了的,血泪教训,40w个点,上百万条边,跑毛啊.)这里还是放一份代码. #include #include #include #include #include #include #include #include #define inf 1000000000 using namespace std; struct node {int原创 2016-05-20 15:50:11 · 597 阅读 · 0 评论 -
bzoj4607
先分析可以得到先进行2操作再进行1操作不会更差。 考虑设cost[i][j]表示原本为i的字母全部变成了j的代价,那么代价等于原本为i,后来不是j的字符个数,如果i不等于j,代价还要加上C。现在先考虑对每个i选择一条最短的出边(g[i])。然后现在构成了一张图。 现在如果这张图中没有环,或者这张图全是大小为1的环,那么答案就是合法的,可以直接输出Σcost[i][g[i]]。(注意这里原创 2016-06-17 09:46:39 · 761 阅读 · 0 评论