摘要: 一、求找到某个数的所有素因子:自己的做法:使用一个vector,在筛素数的时候,将当前素数i,放入vec[j],其中j为i的倍数。这样如果询问很多,则是一个可行的方法。但是如果询问较少,空间和时间花费都会很大。优化做法:筛素数的时候,对于每个数,只需要记录它的最小(或最大)的素因子就行了。查询的时候,每次都除以当前数的最小的素因子,然后更新当前数,继续往下找。这样,就能找到所有的素因子了。这种方法对于询问次数较少的题目,将会比第一种做法快上很多。二、假如已知当前的一个二进制状态sta,求其所有子状态s1,s2使(s1&s2)==0 && (s1|s2)=sta。自己的做 阅读全文
posted @ 2013-08-03 20:40 phk52 阅读(129) 评论(0) 推荐(0) 编辑
摘要: 第三场多校: 至今最惨的一场多校。共作出两题。1008 http://acm.hdu.edu.cn/showproblem.php?pid=4628 状态压缩优化的搜索(0)、比赛时候直接状态压缩dp,结果TLE了。没有算好时间复杂度,第一次交的时候没有测大数据。应该多想几种方法,做到一A才行,不然卡题会卡很久。(1)、后来直接搜索,从最后一个状态开始搜,每次都用一个回文串,然后搜另一个的最小步数。 然后过了。(2)、搞了第四场多校后发现是自己代码实现能力太渣太渣。。。将一个状态i分解成两个子状态,其实是可以不用搜的。直接一个for循环就行了,这样妥妥过。啊啊啊。。。 for(i=0;... 阅读全文
posted @ 2013-08-03 20:23 phk52 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 多校第二场:1002 http://acm.hdu.edu.cn/showproblem.php?pid=4612(1)、求双连通分支。(2)、求树的直径。1009 http://acm.hdu.edu.cn/showproblem.php?pid=4619(0)、因为判断两张卡牌是否相交那里写错了,导致浪费了近一个小时的时间。本场比赛第一失误。可以早一点找FQ帮忙,早一点确定问题出现的地方。其实跟自己不熟悉HK算法也有很大关系,不然也不会一个模板一个模板地去试。(1)、二分图匹配。求最小点覆盖。1006 http://acm.hdu.edu.cn/showproblem.php?pid=46 阅读全文
posted @ 2013-08-03 20:21 phk52 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 多校第一场:1011 http://acm.hdu.edu.cn/showproblem.php?pid=4610(1)、将每个数对应的4种情况求出来,并保存每个数对应的状态。(2)、问题转化为:共有16种卡牌,每种卡牌可以选ai个,选了某种卡牌将得到bi的权值。将所有选定的bi进行|运算,若4位中的某一位为0,则需要额外的花费。(3)、直接进行2^16的枚举,表示某种物品选还是不选,每个物品至少选一个,然后剩下的物品按权值从大到小贪心。1002 http://acm.hdu.edu.cn/showproblem.php?pid=4601(1)、将原树映射到一棵字典树上。(2)、在原树上进行D 阅读全文
posted @ 2013-08-03 20:20 phk52 阅读(133) 评论(0) 推荐(0) 编辑
摘要: http://blog.watashi.ws/970/andrew-stankevich-3-solution/ 阅读全文
posted @ 2013-07-23 09:08 phk52 阅读(149) 评论(0) 推荐(0) 编辑