搜索
ww140142
wwwwwww
展开
-
bzoj-1085 骑士精神
题意:对于一个5x5的棋盘,上面有12个白子12个黑子;给出一个目标棋盘,求一些棋盘最少走多少步能到达这个状态;题解:DFS显然是不可以的,很容易陷入无限循环;那么分析BFS的复杂度,每个状态向外拓展最多8个,最少2个;平均大概是在4个左右,层数最大是15,也就是说时间复杂度在O(4^15=1,073,741,824)这个数量级;最后一层的空间复杂度也很大,这样原创 2015-06-08 21:01:38 · 854 阅读 · 0 评论 -
poj 3076 Sudoku
题意:给出一个16*16的数独,要求你将其补全;数据保证给出的数独有且仅有一个解;题解:数独毕竟是数独,并不像今年NOIP考的那个幻方那样有构造方案;显然这种看上去就很难的问题我们只能靠人类智慧或者用力暴搜;朴素的搜索就是每一个格子试探性的填入每一个数,然后递归进行直到找到一组解或者不能按照规律进行时停止;而为了解决数独问题,我们可以将其转化成精准覆盖问题来解决原创 2015-11-12 16:14:59 · 1234 阅读 · 0 评论 -
bzoj-2278 Garbage
题意:给出一个n个点m条边无向图,每个边有一个01状态;现在可以选择一些环,使环上的所有状态取反;给出初始与结束状态,求一个方案;1题解:做完这题深刻的体会到自己的too young too naive;首先有一个性质,如果有解,一定存在一种方案使选择的所有环不重复经过一条边;这个性质也说明了,所有不需要更改的边是可以忽视的;因为如果将其选了偶数次,也可原创 2015-09-23 10:57:06 · 1665 阅读 · 0 评论 -
bzoj-3131 淘金
题意:给出一片N*N的土地,每个土地上有一个金子;现在一阵风吹来,坐标为(x,y)上的金子将会到(f[x],f[y])上去;这里f[x]指x的各位数字之积;求风吹过后,选择K片土地上金子的最大和;N题解:首先我们可以发现,其实f[x]的取值范围并不大;打表之后,在12位以下的数的f[x]最多有一万多的取值;我们首先搜出来这些数,然后排序去重离散化;而原创 2015-10-27 09:00:35 · 1524 阅读 · 0 评论 -
poj-3740 Easy Finding
题意:给出一个n*m的01矩阵,选择其中的一些行,来精确覆盖每一列;只需要输出是否存在解即可;n题解:DLX裸题,利用双向十字链表优化搜索中的回溯问题;因为每一列上都只能有且仅有一个1,所以如果某一列上已经有了1,那么这一列上有1的其他行也可以被删除;根据这个思想是我们有了一个很厉害的剪枝条件,但是如果直接在矩阵中删除速度太慢,要求空间太多;所以就有了这种支原创 2015-11-11 08:03:27 · 1420 阅读 · 1 评论 -
bzoj-3124 直径
题意:给出一个有n个结点,边有长度的树;求这个树的直径,以及有多少边在所有的直径上;题解:树的直径就不用说了吧。。随便搜一下就可以;而对于一个边在所有的直径上,等价于删掉这条边得到的两颗树中不存在一条长度等于直径的链;那么问题就是快速求出删边之后两颗树的直径了;这里我们采用乱搞大法!总之其实就是维护一下几个状态,转移随便搞搞式子就OK了;fs[x][0]原创 2015-10-23 17:52:54 · 1680 阅读 · 0 评论 -
bzoj-1098 办公楼biu
题意:给出一个图,求其补图的连通块个数与大小;原图点数n题解:这道题主要是对于复杂度的优化分析上吧;一开始有个显然的O(n^2*α(n))暴力做法,枚举每一条补图中的边然后并查集啦;这样空间与时间都是无法接受的;考虑另一种做法:每次枚举一个未在连通块的点,然后从它开始宽搜出它所在的连通块;具体是枚举它的所有原图的边,标记起来,枚举边之后再枚举所有的点,将未标原创 2015-10-10 16:37:56 · 2262 阅读 · 0 评论 -
bzoj-1138 Baj 最短回文路
题意:给出一个n个点m条边的有向图;每条边上有一个字符,一个路径表示的字符串就是沿途走边组成字符串;D次求两点之间最短回文路径;n题解:这道题范围不大,问的东西却比较奇怪;一开始打算搜索,利用双向BFS,对字符串Hash来求解;实际上速度还行,但是面对特殊数据菊花图等东西就卡不动了;正解是DP,状态即为f[i][j]为i到j的最短回文路长度;这个状态原创 2015-09-17 22:58:05 · 1792 阅读 · 0 评论 -
bzoj-2525 Dynamite
题意:给出一颗n个结点的树,上面有若干个关键结点;现在可以在这些结点上选最多m个点,求最小化关键点到选择点的最大距离;题解:首先这道题是一个最大最小化的问题,很容易想到二分;二分一个数L表示答案的;然后问题就转化成了一个判定性问题:判定能否用m个点覆盖整个树上的关键点;判定过程是贪心的;设dis[x]为x的子树中最近的选择的点的距离,g[x]为x的子树中最远原创 2015-10-03 17:44:12 · 2011 阅读 · 0 评论 -
bzoj-1130 POD
题意:给出一个n个结点点的无向图;选出一个n/2大小的集合,使集合中的元素与非集合中的元素之间的边最少;n输出任意一个集合;题解:范围26就显然暴搜吧。。根据calc定理,我们无法在搜索之后O(n)check来过掉这题;这个复杂度只允许一个搜索;于是就有了这么一个思路:在搜索的过程中维护答案!每次选中一个点就相当于是将其从不选集合放到选中集合;而原创 2015-09-15 16:47:26 · 1242 阅读 · 0 评论 -
bzoj-1123 BLO
题意:给出一个n个点m条边的无向图;求将每个点的所有边删去之后,这个图中的不能到达的点对数;n题解:Poi~要做这题首先样例要看懂= =;显然不能到达的点对数=n*n-能到达的点对数;而对于每个连通块来说,能到达的点数为块内点数的平方;那么就对于一个点,统计删去边后,每个连通块的大小;所以构造DFS树,所有的非树边都是返祖边;记录所有点的深度de原创 2015-09-15 16:27:00 · 1432 阅读 · 0 评论 -
bzoj-3522 Hotel
题意:在一颗n个结点的树上给吉丽的三个妹子各开一个房间,使三个房间两两距离相等;n题解:首先因为树上两点间只有一条路径,所以这种路径下满足条件的三点只可能形成 以某个点为中心,三个点都到那个顶点距离相同的情况;然后我们枚举每个点深搜,找出所有深度相同的点然后累乘C[x][3];然后发现这么做是不对的!因为我们将同一颗子树中深度相同的点也计入了答案中,它们之间的距原创 2015-10-16 13:16:49 · 1037 阅读 · 0 评论 -
bzoj-1131 Sta
题意:给出一个n个点的树,找出一个点来,使以这个点为根的树所有点的深度之和最大;n题解:其实我做这道题的时候总有一种莫名其妙的即视感怎么回事。。。算了说不定这道题我真的做过。。。比较暴力的是将所有点枚举,然后深搜累加所有深度;但是显然所有点等于父树的点+子树的点;那么只要求出这两者累加就好了;子树的总深度简直好求,就是将儿子的总深度+size就好了;原创 2015-09-13 20:47:50 · 1443 阅读 · 0 评论 -
bzoj-4238 电压
题意:给出一个n个结点m条边的无向图,用两种颜色来对结点染色;求图中有多少条边,可以存在一种方案,使这条边两段的颜色相同而其他边两端颜色不同;n题解:这题感觉正解大框很容易想,但是最终写出来还是很难的似乎;最简单的暴力就是枚举边然后给图染色;然后还有n==m的基环树,搜个环讨论一下就又有一些分;正解的话显然要找环,然而如何找环Tarjan早已给出了答案;原创 2015-08-31 07:21:21 · 1589 阅读 · 1 评论 -
Contest Hunter - OVOO
题意:给出一颗有根树,每次可以从树上取包括根节点的一个连通块;定义连通块的权值为块内边的权值之和;询问第k小的连通块的权值是多少;n此题为CH弱省胡策#1T3;题解:PoPoQQQ大爷好神!这道题也是利用A*搜索来求K大值,但是状态比较难以表示;先考虑怎么搜索,对于一个已经选完了的点集,下一次可能再选的点有哪些?可能是上一次选的点的儿子,也可能是回溯原创 2015-08-25 10:54:10 · 1592 阅读 · 0 评论 -
bzoj-1194 潘多拉的盒子
题意:给出S个自动机,每个自动机有n个结点和m个输出结点;每个结点有两个后继'0'和'1',将当前走过的串末尾加那个字符,然后走到下一个结点;每次从0号点,以一个空串出发,到了输出结点时可以选择输出当前串;如果一个自动机x可以输出的所有串另一个自动机y也都可以输出,那么y是x的升级;求最大升级序列;S,n,m题解:这道题稍微考虑一下之后,发现难以处理的地方是原创 2015-08-26 19:25:55 · 1244 阅读 · 0 评论 -
bzoj-2006 超级钢琴
题意:给出一个长度为n的序列,取序列中L问这样的子串前k大个的和是多少;题解:好像是很神的题。。首先考虑一个子串的和是什么?比如[i,j]这个串,和就是sum[j]-sum[i-1] (sum表示前缀和);那么对于每一个j的答案,应该是sum[i-1]比较小的i值;怎么找到前k大,就用到了A*算法;我们首先将每个j对应的最小的sum[i-1]求值,之后插原创 2015-08-25 07:24:39 · 946 阅读 · 0 评论 -
jdfz-2978 第k短路(强)
题意:给出一个n个点m条边的有向图,求这个图点1到点n的严格第K短路;n边权链接题解:这是一个似乎十分经典的问题,但是普通的A*算法是会被卡的;最坏复杂度会达到O(SPFA(n,m)+KMlog(K+M))的(大概);所以这个算法还需要优化;主要的算法就是俞鼎力大牛在《堆的可持久化》论文里的东西;具体的解法详见论文;只是我使用了可持久化左偏树原创 2015-08-27 10:25:35 · 1668 阅读 · 0 评论