Problem 1015 土地划分

Accept: 823    Submit: 1956
Time Limit: 1000 mSec    Memory Limit : 32768 KB

 Problem Description

在Dukeswood这块土地上生活着一个富有的农庄主和他的几个孩子。在他临终时,他想把他的土地分给他的孩子。他有许多农场,每个农场都是一块矩形土地。他在农场地图上划上一些直线将矩形分成若干块。当他划直线时,他总是从矩形边界上的某一点划到另一个矩形边界上的点,这条线的结束点将成为下一条线的起始点。他划线时从不会让任三线共点。例如图1是某一种划分结果。


图1

划分的起始点和结束点均以五角星标记。当他完成划分后,他想要数一下划出的土地的块数以确保每个孩子都有一块地。例如,图1中土地被划分成18块。然而这个庄主由于年迈常会数错,因而他寻求你的帮助。

请写一个程序,输入原来的土地尺寸及线段的位置,输出划分出的土地块数。

 Input

输入文件有多组数据组成。每组数据格式如下:
第一行输入地图的宽度w (1<=w<=1000)和高度 h (1<=h<=1000),均为整数。
第二行输入线段数L (1<=L<=50)。
以下L+1行每行一个整数坐标(Xi,Yi),庄主划的线段为(Xi,Yi)-(Xi+1,Yi+1),i=1,2,…,L。当然(Xi,Yi)必定在矩形的边界上。
最后一组数据w=h=0,标志文件结束,不需要处理。

 Output

对于给定的输入,输出一行仅含一个数,即划分出的土地块数。

 Sample Input

18 12
8
2
0
6
12
10
0
18
9
15
12
0
6
14
0
10
12
0
9
7
6 6
2 0
5 6
7 3
0 3
3 0
3 6
0 5
0 0

 Sample Output

18
11
 
 
   计算几何的题目(需要有一定的知识储备)http://blog.csdn.net/y990041769/article/details/38258761
这道题考我们判断线段交点怎么判断(使用快速排斥&&跨立实验!)http://blog.csdn.net/xia842655187/article/details/51469130
这就是用到数学上的向量叉乘。就是判断当前线段与之前的线段有几个交点,结果就是增加结点个数加一块

若 P × Q > 0,则 P 在 Q 的顺时针方向

若 P ×Q < 0, 则 P 在 Q 的逆时针方向

若 P × Q = 0,则 P 与 Q 共线,但不确定 P, Q 的方向是否相同

http://blog.csdn.net/freezhanacmore/article/details/7894751

最新文章

  1. 安装linux操作系统
  2. WebService 用法
  3. 基于HTML5的Web SCADA工控移动应用
  4. jqgrid定义多选操作
  5. Mysql编码, Mysql编码流程, Mysql编码顺序, Mysql编码原理, Mysql编码修改依据
  6. [php]php数组函数的相关
  7. android SDK更新
  8. R command
  9. 关闭IE窗口
  10. PHP 7 值得期待的新特性(上)
  11. 如何在C#添加鼠标右键菜单
  12. 分享到QQ空间、新浪微博、腾讯微博的代码!(收藏)
  13. 不用position,让div垂直居中
  14. ff与ie 的关于js兼容性
  15. spring mvc 异常处理和session添加
  16. git全部使用步骤
  17. 一行代码搞定ThoughtWorks面试题
  18. JS的事件模型
  19. DeepLearning.ai-Week1-Convolution+model+-+Step+by+Step
  20. Confluence 6 H2 数据库连接与合并整合

热门文章

  1. Linux内存管理 —— 内核态和用户态的内存分配方式
  2. 单源最短路模板(dijkstra)
  3. 虚拟dom和真实dom的转化和class解析的顺序
  4. JAVA文件操作工具类(读、增、删除、复制)
  5. js中document的用法小结
  6. Q&amp;A - Nginx是做什么的?tomcat结合Nginx使用小结
  7. form表单submit按钮提交页面不跳转
  8. java8之list集合中取出某一属性的方法
  9. 基于原版Hadoop的YDB部署(转)
  10. TouTiao开源项目 分析笔记16 新闻评论