问题描述:
不少人很爱玩游戏,例如 CS ⑨。 游戏设计也成为程序开发的热点之一,我们假设要设计破旧仓库之类的场景作为战争游戏的背景。仓库的地面会因为阳光从屋顶的漏洞或者窗口照射进来而形成许多光照区域和阴影区域。为了简单起见,假设不同区域的边界都是直线 ⑩, 我们把这些直线都叫做“光影线”,并且不存在三条光影线相交于一点的情况。
那么,如果我们需要快速计算某个时刻,在 X 坐标[ A, B] 区间的地板上被光影划分成多少块。如何才能写出算法来计算呢?
这个问题需要先自己归纳寻找规律。由于不存在三直线交于一点的情况,一些情况可以不用考虑。题目要求的是在A,B区间内,通过尝试可以找到规律。如果只有一条线,那么分割成两块空间。如果有两条线,可能相交,也可能不相交(只要在A到B这个区间内不相交就行)。如果相交,那么就分割成四块,否则是三块。以此类推就会发现,分割块数=线的数量+在这个区间内的交点数量+1。
也就是说,只需要判断在这个区间内的交点有几个,经过这个区间的线有几条即可。我们可以先进行一次预处理,计算出所有交点的位置,然后在每一次查询时就可以很快查找到了。

编程之美1.7 光影切割问题相关推荐

  1. 编程之美2.10:寻找数组中的最大值和最小值

    编程之美2.10: 对于一个有N个整数组成的数组,需要比较多少次才能把最大值和最小值找出来呢? 算法的思想是: 分而治之 测试数据:---------------------------------- ...

  2. 编程之美2.1 求二进制中1的个数

    最近一段的时间,一直在看编程之美之类的算法书籍,刚开始看编程之美,感觉到难度太大,有时候也不愿意去翻动这本书,不过,经过一段时间的修炼,我也彻底的喜欢上这本书了, 书中的算法涉及到很多方面,树,链表, ...

  3. 2017“编程之美”终章:AI之战勇者为王

    编者按:8月15日,第六届微软"编程之美"挑战赛在选手的火热比拼中圆满落下帷幕."编程之美"挑战赛是由微软主办,面向高校学生开展的大型编程比赛.自2012年起, ...

  4. Java 并发编程之美:并发编程高级篇之一-chat

    借用 Java 并发编程实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了.相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作 ...

  5. Java 并发编程之美:并发编程高级篇之一

    借用 Java 并发编程实践中的话:编写正确的程序并不容易,而编写正常的并发程序就更难了.相比于顺序执行的情况,多线程的线程安全问题是微妙而且出乎意料的,因为在没有进行适当同步的情况下多线程中各个操作 ...

  6. 小飞的电梯调度算法,光影切割问题编程之美

    小飞的电梯调度算法: 1.8问题描述: 小飞是实习程序员,下班高峰期时电梯的每层都有人上下,等电梯是件烦人的事情. 小飞有个方案:电梯每次计算里面的人,和上的楼层,从而统计出在哪一层停,该上楼的出电梯 ...

  7. python画树叶-用Python绘图,感受编程之美

    用Python绘图,感受编程之美冬日里,树叶都已落下,还好可以用Python,重现银杏树的美 用Python绘图,发现编程之美 冬日里,树叶都已落下,还好可以用Python,重现银杏树的美 昨日的雪, ...

  8. 编程之美:编程判断两个链表是否相交

    1.问题描述 给出两个单向链表的头指针,比如h1.h2,判断两个链表是否相交.编程之美为了简化问题,假设两个链表均不带环. 如下图: 2.分析与解法 解法一:直观法,先判断第一个链表的每个节点是否在第 ...

  9. c语言找出递增子数组的长度,编程之美2.16 数组中最长递增子序列的长度

    改进的方法看的头大了却还是不清楚,哎...搞算法的苦啊,纠结啊. 编程之美这本书里面就有关于这道题的一些解法,求一个一位数组中的最长序列的长度.例如,在序列1,3,2中,最长递增序列是1,3. 这道题 ...

  10. 二叉树中节点的最大的距离(编程之美3.8)

    问题来源:<编程之美>3.8 求二叉树节点的最大距离 如果把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两个节点之间的个数. 写一个程序求一 ...

最新文章

  1. javascript函数全解
  2. MVC--Razor(2)
  3. 16位代码段与32位代码段的区别
  4. java中valueof_Java中String.valueOf()方法的解释
  5. 热带雨林绘画软件测试,儿童画教程|色彩练习与思维创想——好热闹的热带雨林!...
  6. mysql mycat one_Mycat 整合 MySQL 8.x 踩坑实践
  7. Asterisk标准通道变量
  8. yum安装php7.2
  9. Routing a Marathon Race
  10. Flutter进阶第3篇:下拉刷新 上拉分页加载更多
  11. 优品景象 进销存系统推荐_初步了解WMS(仓库管理系统)
  12. 长尾关键词生成工具-长尾关键词生成软件免费-关键词组合工具
  13. 柳絮飘,往事忆:家(二)
  14. 抓包|获取移动app里的数据,什么是抓包?
  15. html为知笔记模板,为知笔记使用技巧:如何建立模板
  16. Arthas——热替换
  17. 学习记录:调用TFTLCD液晶屏
  18. SyntaxError: invalid syntax都可能是是什么错!!!(持续更新)
  19. RabbitMQ管理界面操作详情
  20. 上班族最常用数据图表分析软件有哪些

热门文章

  1. android确定kernel使用的config文件
  2. 深入学习jquery源码之show()和hide()
  3. 分布式文件系统HDFS原理篇
  4. CMMI认证的周期是多久?费用是多少?
  5. 聊一聊数学中的基本定理(四)——微积分基本定理
  6. python zen_The Zen of Python
  7. 好友管理系统 Python
  8. Word中公式编辑倒V和横线加法
  9. NVIDIA cuDNN 下载
  10. 修正oracle错误,oracle数据库菜鸟教程 [数据库中一个常见错误信息诊断与修正]