[对抗搜索][剪枝][建模转化][模板] POJ 1085

minimax搜索+α-β剪枝优化模板题。

第一个需要处理的就是把状态全部转化成二进制形式,包括三角形,边,棋盘,等等。转化好了之后就可以用minimax搜索了。在一开始的时候边读入边改变局面和cnta,cntb这两个分别代表a和b的得分,这个题有需要注意的一点就是如果一方得分了那么他是可以继续下一轮的,所以每次都要判断走向下一个局面的时候是不是得分。注意α是max层的最大值的最小边界,β是min层的最小值的最大边界,这里对一方操作之后发现不再满足α<=β,其实是跟父节点的另一方作对比的,一旦不满足即说明当前节点不再有利用价值,直接把这个越界的值返回父节点即可(因为父节点还是要更新状态的)这里并没有要求算出具体得分,所以用-1和1 来表示输赢即可,在每一层里加上cnt与5的关系判别也可以做到剪枝的作用。

继续阅读“[对抗搜索][剪枝][建模转化][模板] POJ 1085”

[带权二分图][KM算法][模板] SGU252 Railway Communication

为什么模板题都a的这么艰难

调了这么久发现其实原来的就是对的只是样例可以有不同解,蠢的程度也是没谁了。。。

题意就是求DAG上的最小路径覆盖数,而且使得所有路径权值之和最小,而且要输出路径。将每一个点拆成两个点,分别在二分图左右两侧,读入的所有的路都是从左往右。   求最小路径覆盖也就是求最大匹配,而在这一条件下要求总长度最小,将边附上权值求最小权最大匹配即可。由于KM算法 继续阅读“[带权二分图][KM算法][模板] SGU252 Railway Communication”