gougou1002

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

1002 Farmland

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1030

35 2006-07-07 10:10:40 00:00.02 888K C++ glimpse


   枚举所有的回路,这些回路自然构成了一个多边形,然后判是否有回路以外的点落在这个多边形内。

   然而这样做是会得到wa的。看一下下面的情况:

~~该文件已在地震中消失了~~

   再把这种情况也判掉,这道题基本上就差不多了。

   枚举回路传说有比较好的方法,但我比较土,用的就是普通的dfs。因为回路自然构成了凸包,所以用判点在在凸多边内的方法就可以了。不过我用的是点在任意多边形内的判别方法,两个算法的时间复杂度都是O(n)。后一种方法的具体步骤可以在算法导论计算几何部分找到。

   集训期间yext同学发了一道这道题的解题报告,介绍了这道题的标准做法。YM一下。见附录1。

   附一下sghao对我做法的评价:farmland这题数据弱,所以枚举所有多边形也可以通过。 但是去年台北赛区也有差不多的题目,枚举所有多边形是根本不可能通过的。 我们以前做farmland都是放水做的,所以台北那题就不会做了。 后来问上交1队用的什么方法,他们告诉我的就是yext说的方法。

   最后,我觉得,对本身不会枚举回路和判点在多边内的同学,用我的方法也未尝不可。

[附录1]
~~该文件已在地震中消失了~~

----

类似的值得参考的题目有ZOJ2361 Areas ( http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2361 ),我的解体报告在 http://watashi.ws/blog/970/andrew-stankevich-3-solution/

1002 Farmland

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1030

35 2006-07-07 10:10:40 00:00.02 888K C++ glimpse

枚举所有的回路,这些回路自然构成了一个多边形,然后判是否有回路以外的点落在这个多边形内。

然而这样做是会得到wa的。看一下下面的情况:

该文件已在地震中消失了

再把这种情况也判掉,这道题基本上就差不多了。

枚举回路传说有比较好的方法,但我比较土,用的就是普通的dfs。因为回路自然构成了凸包,所以用判点在在凸多边内的方法就可以了。不过我用的是点在任意多边形内的判别方法,两个算法的时间复杂度都是O(n)。后一种方法的具体步骤可以在算法导论计算几何部分找到。

集训期间yext同学发了一道这道题的解题报告,介绍了这道题的标准做法。YM一下。见附录1。

附一下sghao对我做法的评价:farmland这题数据弱,所以枚举所有多边形也可以通过。 但是去年台北赛区也有差不多的题目,枚举所有多边形是根本不可能通过的。 我们以前做farmland都是放水做的,所以台北那题就不会做了。 后来问上交1队用的什么方法,他们告诉我的就是yext说的方法。

最后,我觉得,对本身不会枚举回路和判点在多边内的同学,用我的方法也未尝不可。

[附录1]

该文件已在地震中消失了


类似的值得参考的题目有ZOJ2361 Areas ( http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2361 ),我的解体报告在 http://watashi.ws/blog/970/andrew-stankevich-3-solution/