09 2020 档案
摘要:迭代加深搜索(IDDFS) 一、IDDFS是什么 IDDFS是在DFS基础上增加迭代加深这一步的一种搜索算法。 迭代加深体现在以下两步: 预先估算答案所在深度,即一个深度约束值; 若在当前约束值下未能找到答案,则加大深度约束值,继续搜索。 二、IDDFS解决什么问题 当问题的答案满足以下两个条件:
阅读全文
摘要:Power Calculus 题意:问最少经过多少次乘除法混合运算之后,可以用计算得到。可以使用中间值,但不能出现负次方幂。 思路:因为,可以直接用一个数组记录得到的中间值。每一次用当前得到的数进行下一步计算,都遍历一次所有中间值,乘和除都试一遍就好了。 但如果单纯
阅读全文
摘要:P2901 [USACO08MAR]Cow Jogging G 思路:先反向建边求各点到节点1的最短路,再A*依次得到节点到节点的第短路。 总体来说就是改进版的BFS,在BFS的基础上另外设定了一个估价函数作为节点出队顺序的依据,而不像BFS那样先入队者先出队。在本题中,估价最小的
阅读全文
摘要:P1880 [NOI1995]石子合并 做过类似的,不过这题稍微有点不一样:是环不是链。 只要把链复制一遍原来的链的后面,就可以化环为链了。 注意题目求的是N堆石子合并,枚举区间长度的时候依然是从2枚举到N。 int a[maxn]; int b[maxn]; //前缀和 int dp1[maxn]
阅读全文
摘要:P1273 有线电视网 注意最里面那一层循环是在枚举物品:“选1个叶子节点”、“选2个叶子节点”…… 因为最多只能选个叶子节点(为当前子树中的叶子节点个数),一种优化是先统计出这个,最里面那层循环从1跑到与两者之间的最小值就可以结束了,都跑到会TL
阅读全文
摘要:P5322 [BJOI2019]排兵布阵 因为看到这题目分类在分组背包下,所以一直在试图抽象出分组背包的模型来……最后很接近答案了,对于第座城堡所有玩家的出兵数量视为一组物品……再想到分组背包的板子,应该每组只能挑一个物品。但是结合题目,挑的物品不一样收益也不一样,这个收益该怎么计算卡住了我…
阅读全文
摘要:D - Decrease the Sum of Digits 只要发现进位可以直接抹掉后面的位数就行了,剩下的就是在第几位进位的问题。写得繁琐了一点。 int main() { //ios::sync_with_stdio(false); //while (scanf("%d%d",&n,&m)!=
阅读全文
摘要:P5490 【模板】扫描线 首先有这么一张图,要求它的面积并。 我们想,如果可以有一条扫描线从下往上扫,记录它所扫到的边的长度(并),再求出这条边与即将扫到的下一条边的距离,那么我们就可以求出第一块面积(紫色) 然而如何求出这个?
阅读全文