搜索——双向查找
文章平均质量分 81
XDU_Skyline
Everything is over, everything is just beginning.
展开
-
#297 (div.2) E. Anya and Cubes
1.题目描述:点击打开链接 2.解题思路:本题利用双向查找解决。双向查找一般用于求若干个数之和相加等于一个固定值的题目。一般方法是将n个数分为两部分:1~n/2和n/2+1到n,然后枚举出两部分的所有可能的结果,最后利用二分查找看第一部分的结果是否存在于第二部分中。本题也是让找一些数之和等于S,这个数还可以变成对应的阶乘数,由于阶乘的个数受到k的限制。因此可以利用dfs来枚举所有的情况。由于最后原创 2015-03-27 18:40:13 · 996 阅读 · 0 评论 -
例题8-3 和为0的4个值 UVa1152
1.题目描述:点击打开链接 2.解题思路:本题要求从4个集合中分别找4个数,使他们的和相加等于0的所有情况个数,由于每个元素的范围比较大,且一个集合的总量可以多达4000,直接写四重循环肯定TLE,需要优化,由a+b+c+d=0移项得a+b=-c-d,因此可以事先分别统计所有的a+b,-c-d的值到s,t数组中,排好序后在t数组中找s中的每一个元素,此时可以直接用upper_bound,lo原创 2015-02-05 14:27:32 · 702 阅读 · 0 评论 -
HDU 1496 Equations
1.题目描述:点击打开链接 2.解题思路:本题利用Hash技术+双向查找解决。可以先计算出a*x0*x0+b*x1*x1的所有可能结果,然后再查找-(c*x2*x2+d*x3*x3)的个数,由于每个值都有2种情况,因此一共有16种组合,最终统计出个数后还要乘以16。存储前一半的所有可能的结果可以有多种方法,可以使用STL中的set或者multiset,也可以自己写一个Hash函数,将所有结果和一原创 2015-08-10 11:34:11 · 627 阅读 · 0 评论