12 2014 档案
摘要:题目链接:BZOJ - 1854题目分析方法一:这道题目有一种巧妙的使用并查集的做法 : 我们把每个数看作一个点,那么开始时每个点单独作为一个集合。对于每个卡片 (a,b) ,就是 a 与 b 之间连了一条边。(这里不是卡片是武器...不过都一样)那么在一个联通分量中,如果这个联通分量点数为 n ,...
阅读全文
摘要:It is my first Codeforces round!Problem C题目大意:一个平面内有一些无限长的直线,把平面分成了若干块,从一块走一步可以走到与它有公共边的另一块,但是只有公共点不能一步走过去。给定两个在块内部的点,问从S点到T点最少走几步。题目分析:由于每步只能跨越公共边,不能...
阅读全文
摘要:题目链接:BZOJ - 1042题目分析首先 Orz Hzwer ,代码题解都是看的他的 blog。这道题首先使用DP预处理,先求出,在不考虑每种硬币个数的限制的情况下,每个钱数有多少种拼凑方案。为了避免重复的方案被转移,所以我们以硬币种类为第一层循环,这样阶段性的增加硬币。一定要注意这个第一层循环...
阅读全文
摘要:题目链接:BZOJ - 1066题目分析题目限制了高度为 x 的石柱最多可以有 x 只蜥蜴从上面跳起,那么就可以用网络流中的边的容量来限制。我们把每个石柱看作一个点,每个点拆成 i1, i2,从 i1 到 i2 连一条边,容量为这个石柱 i 的高度,即跳跃次数限制。来到这个石柱就是向 i1 连边,从...
阅读全文
摘要:题目链接:BZOJ - 1084题目分析我看的是神犇BLADEVIL的题解。1)对于 m = 1 的情况, 首先可能不取 Map[i][1],先 f[i][k] = f[i - 1][k]; 再考虑取一段新的的情况,用 max(f[j][k - 1] + Sum[i][1] - Sum[j][1])...
阅读全文
摘要:题目链接:BZOJ - 1070题目分析首先想到拆点,把每个技术人员拆成 n 个点,从某个技术人员拆出的第 i 个点,向某辆车连边,表示这是这个技术人员修的倒数第 i 辆车。那么这一次修车对整个答案的贡献就是,i * Time[j][k]。 j 是车的编号,k 是技术人员编号。因为这辆车以及之后这个...
阅读全文
摘要:题目链接:BZOJ - 1878题目分析题目的询问是某个区间内的颜色种类数,所以我们希望这个区间内的每种颜色只被计数一次,那么我们就选取询问区间内的每种颜色第一次出现的元素计数,之后再出现已经在询问区间中出现过的颜色就不再计数。考虑一种离线算法,如果我们将所有询问按照询问区间的左端点排序,那么所有询...
阅读全文
摘要:题目链接: BZOJ - 3110题目分析这道题是一道树套树的典型题目,我们使用线段树套线段树,一层是区间线段树,一层是权值线段树。一般的思路是外层用区间线段树,内层用权值线段树,但是这样貌似会很难写。多数题解都使用了外层权值线段树,内层区间线段树,于是我就这样写了。每次插入会在 logn 棵线段树...
阅读全文
摘要:唔。你好!这里是 Evensgn 的笔记本。我是 SD 省的一名高中 OIer,从初中就接触了 OI ,然而水平一直是弱弱哒。Evensgn 是我常用的 ID。不忘初心,方能始终。E-mail : joe_fan # outlook.comQQ : 〨〇〤〥〨〩〤〦〣分割线下方是我发现的一些古人留给...
阅读全文
摘要:题目链接:HDOJ - 1171题目大意有 n 种物品,每种物品有一个大小和数量。要求将所有的物品分成两部分,使两部分的总大小尽量接近。题目分析令 Sum 为所有物品的大小总和。那么就是用给定的物品做完全背包,背包容量为 (Sum / 2) ,得到的结果是较小的一部分的大小。完全背包问题可以使用单调...
阅读全文
摘要:我搜索了一下,找到了一篇很好的博客,讲的挺详细:链接。解析多重背包的最原始的状态转移方程:令 c[i] = min(num[i], j / v[i])f[i][j] = max(f[i-1][j-k*v[i]] + k*w[i]) (1 <= k <= c[i]) 这里的 k 是指取第 i 种物...
阅读全文
摘要:题目链接:POJ - 1742题目大意现有 n 种不同的硬币,每种的面值为 Vi ,数量为 Ni ,问使用这些硬币共能凑出 [1,m] 范围内的多少种面值。题目分析使用一种 O(nm) 的 DP (据说这是类多重背包?),枚举每一种硬币,对于每一种硬币 i 枚举每一个面值 j ,如果这个面值 j 使...
阅读全文
摘要:题目链接: BZOJ - 2004题目分析看到题目完全不会。。于是立即看神犇们的题解。由于 p#include #include #include #include #include using namespace std;const int MaxMap = 130 + 5, Mod = 3003...
阅读全文
摘要:题目链接:BZOJ - 1875题目分析: 这道题如果去掉“不会立刻沿着刚刚走来的路走回”的限制,直接用邻接矩阵跑矩阵乘法就可以了。然而现在加了这个限制,建图的方式就要做一些改变。如果我们把每一条边看做点建矩阵,那么每次从一条边出发都只会到其他的边,不能仍然在这条边上“停留”,所以这就可以满足题目...
阅读全文
摘要:题目链接:BZOJ - 2165题目分析: 这道题我读了题之后就想不出来怎么做,题解也找不到,于是就请教了黄学长,黄学长立刻秒掉了这道题,然后我再看他的题解才写出来。。Orz 使用 DP + 倍增 ,用状态 f[x][i][j] 表示从 i 出发,坐 x 次电梯到达 j ,最多能上升的层数。开始...
阅读全文
摘要:题目链接:BZOJ - 3172题目分析: 题目要求求出每个单词出现的次数,如果把每个单词都在AC自动机里直接跑一遍,复杂度会很高。 这里使用AC自动机的“副产品”——Fail树,Fail树的一个性质是,一个字符串出现的次数,就等于以它的结点为根的Fail树中的子树中所有结点的 Cnt 和。 ...
阅读全文
摘要:Problem Link : BZOJ 3747题解:ZYF-ZYF 神犇的题解 解题的大致思路是,当区间的右端点向右移动一格时,只有两个区间的左端点对应的答案发生了变化。 从 f[i] + 1 到 i 的区间中的答案增加了 W[A[i]], 从 f[f[i]] + 1 到 f[i] 的区间的答...
阅读全文
摘要:题目链接 : BZOJ 1085题目分析 : 本题中可能的状态会有 (2^24) * 25 种状态,需要使用优秀的搜索方式和一些优化技巧。 我使用的是 IDA* 搜索,从小到大枚举步数,每次 DFS 验证在当前枚举的步数之内能否到达目标状态。 如果不能到达,就枚举下一个步数,重新搜索,即使某些...
阅读全文

浙公网安备 33010602011771号