HDU 5032 Always Cook Mushroom(极角排序, 树状数组)
题目大意:
有1000*1000个点,点(x, y)的权值为(x+A)(y+B),对于每次询问,输入(a, b) 和 x,输出以(0, 0)、(x, 0)、(x, x/a*b) 构成的三角行(含边界)包围的点的权值和。
解题思路:
解题的关键在于抓住每个三角形都含有原点(0, 0)这一信息,又可以发现不同的三角行之间有很多重复部分,想办法减少重复计算。
1. 我们可以预处理出1000*1000个点的逆时针极角序集合。
2. 将所有的询问离线操作,按(a, b)逆时针排序,从斜率最小的开始。
3. 对于询问
原创
2014-11-14 22:46:57 ·
872 阅读 ·
0 评论