
搜索
Absoler
这个作者很懒,什么都没留下…
展开
-
二分图染色
出处:2016大连ICPC A题意:有n个拳击手,其中一些人要进行m场拳击比赛。已知同场比赛的两名选手均可以分为高水平选手和低水平选手,并且有一些人的水平状况已经明确。需要根据选手之间的关系判断,这n个选手是否能分为高水平低水平两组。解读:能分为两组,并不需要指明具体是某一组,例如样例中第二组,1345可拆为两组,2属于高水平组,则不管34是高水平还是低水平,最后都可以不产生矛盾...原创 2018-07-17 21:34:01 · 671 阅读 · 0 评论 -
poj3140——树形搜索
题目大意:每个节点有一个权值,可从任一边将树一分为二,求两边权和之差的最小值附:题目链接建树过程和上一道题一样,同时求出每个节点管辖子树的规模size,然后在dfs函数中判断:把当前点及其以下从树上割开时,两者之差是否更小,ans初始值设为所有点权和即可。出现问题:1.runtime error,vector<int>设为全局变量然后忘记了每次都要加上clear()...原创 2018-09-19 00:34:15 · 246 阅读 · 0 评论 -
树形dp入门——poj2378
题目大意:给出一个大小为n的树,意欲破坏其中一个节点使得剩余残骸大小均不超过n/2,给出所有可行的节点编号(1~n)思路很直接,拆除一个节点后,剩余部分为其若干儿子的子树以及该节点上层所连其余部分(n-size[i]),只要这些连接块大小都不超过n/2,该节点就满足条件。因而我们可以先求出每个节点所管辖的那棵树的大小,这里用到了dfs,也可以勉强算作dp:自下而上地为每个节点求出其子树规模(该...原创 2018-09-14 13:25:41 · 203 阅读 · 0 评论 -
HDU1043&3567 搜索(八数码,康托展开+双向bfs+A*)
八数码问题,类似华容道,要求给出复位的操作序列。康托展开用于解决排列相关问题,实现了一个排列到整数双射。因此我们可以用一个整数表示当前排列,便于进行搜索。以下是康托展开和逆展开的模板。int cantor(int* st){ int x=0; for(int i=0;i<9;i++){ int smaller=0; for(int j...原创 2019-08-09 21:05:35 · 276 阅读 · 0 评论 -
舞蹈链 (dancing links X)
舞蹈链算法,用于求解精确覆盖或者重复覆盖问题,目的是保证每一列的值最后为1或大于1,搜索中选用某一行后就将这一行以及它所解决的所有列删去,最后如果发现有列无法删去则失败,回溯并将之前删去的都恢复;如果最后发现所有列都被删去了,则说明问题解决。它首先可以用来解决数独问题:转化为每行,每列,每个宫都有1~9,每格只有一个数字这个条件。是精确覆盖问题。HDU3111题目链接#include...原创 2019-08-15 15:24:54 · 311 阅读 · 0 评论