搜索
EMber _
人但有追求,世界亦会让路。
展开
-
JZOJ4841 平衡的子集
题意:有一堆数字,从中任意选一些,使得这些数字能够分成两组,两组和相等。 n<=20,ai<=10^9; 这题看起来简单,实际上比较难,暴力的话拿不了多少分。 正解的脑洞超大,我觉得我好弱啊。 首先我们要知道每个数都有3个系数,-1,0,1。 因此我们考虑折半搜索(别问我怎么考虑到的),因为只有3个系数,我们可以分别对前一半和后一半分别搜索,时间复杂度是3^(n/2),搜索出所有数字的选择原创 2016-11-01 16:12:49 · 370 阅读 · 0 评论 -
JZOJ5441. 【NOIP2017提高A组冲刺11.1】序列 启发式搜索+迭代深搜
题意:给定一个1~n的排列x,每次你可以将x1~xi翻转。你需要求出将序列变为升序的最小操作次数。有多组数据。 n<=25 吃了搜索的亏,表示估价函数这玩意儿碰都没碰过,A*也是好久以前才做过的。。考试的时候打了个搜索还错了,没脸见人了。。 有两个优化。 第一个就是估价函数,这个必须加上,每次交换的时候,我们假设当前已经交换了x步,然后枚举答案,估价函数g为接下来要把当前序列变为升序的期望步原创 2017-11-01 16:46:54 · 627 阅读 · 0 评论 -
bzoj3629[JLOI2014]聪明的燕姿 搜索+筛法
题意:给出一个数n,求问有多少个数的正约数之和为n。 非常好(强)的题,一开始并没有想到。 注意到正约数之和,设n,那么n可以表示为: n=ap11∗ap22∗...∗apnnn=a_1^{p_1}*a_2^{p_2}*...*a_n^{p_n} 那么n的正约数之和m=(1+a11+a21+..ap11)∗(1+a12+a22+..ap22)∗...m=(1+a_1^1+a_1^2+..a_原创 2017-11-05 21:06:32 · 301 阅读 · 0 评论