POJ-1840 Eqs
Q :题目给出很直观,不再多讲。
解题思路 :
-
像以往的题目一样,本题直观上就是把所有结果统统便利一边,但是又被时间卡住了。那么时间复杂度o(1005) .
-
想想hash,查找功能,所以可以将前三个变量的结果先存入,然后再将后连个变量的结果得出去查表,是否合理,然后计数.
-
那么等式分为 a1x13+ a2x23+ a3x33 =-(a4x43+ a5x53).但不意味着代码的复杂度为O(1003+1002);因为xi(i=0,1,2,3,4,5)属于[-50,50]中除零意外的整数.
-
所以你可以发现,例如当 x1= -50,x2=-50,x3=-50 ,x4=50,x5=50 与 x1= 50,x2=50,x3=50 ,x4=-50,x5=-50。可在
-
将等式两端全部取绝对值后和二为一。 也就是说x1 与 x4仅仅只用从-50到-1。则代码复杂度为(50*1002+50*100);
-
其次就是hash 的查找功能了,等式两边是立方后的,所以就直接用除余法进行散列,但是重点在处理冲突上,用线性,比二次好的多。
代码如下
Problem: 1840 | User: AKsoftware | |
Memory: 1492K | Time: 219MS | |
Language: G++ | Result: Accepted |