在 DP  里有一类是直线分割平面的问题 , 也是属于递推 类的 。

一 . 直线分割平面的问题

  先考虑第一个小问题 :

    n 条直线最多可以将平面分割成几部分 ?

  想想 最优的分割方法是怎样的呢 ?

    1 . 任意两条直线都不相交 。

    2 . 没有三线共点的情况 。

  //  但是若现在我们的直线有了互相平行的两条 , 结果则会在 最优的基础上减 1 , 若是有 3 条互相平行的直线 , 结果则会在最优的基础上 减 ( 2 + 1 ) = 3 条   

  考虑在前 n 条直线是最优的情况下 , 当插入第 n + 1 条直线时 , 最优的情况是这条直线会穿过 n + 1 个部分 , 则此时会在原基础上增加 n + 1 个部分 , 因为直线每穿过一部分 , 就会将它所在的平面一分为二 , 因此 , 在 n + 1 条直线时 , 总平面数是 f ( n ) + n + 1 .

  因此 ,   n 条直线在最优的情况将平面 分为 L( n ) = ( n * ( n + 1 ) ) / 2 + 1  。

二 . V 型折线分割平面 

  思考 ... 是不是可以将 V 型线反向延长 ,得到两条相交的直线 ,此时演变成第一种问题的形式 , 当将其变成 V 型时 ,会使线的条数增加 1 倍 , 每变一个 V  型 , 会使平面的数目减少 2 , 则 n 个 V 型就会使其减少 2 * n 。

  

  所以 , n 条 V 型折线 最多可以分出平面   V ( n )

  

三 .  Z 型折线分割平面 ( 上下边是互相平行的 )

  还是按照之前的方法 , 将每个顶点的直线反向延长 ,则 Z 型折现可视为 3 条直线相交 ,又因为每个 Z 型都有一组互相平行的直线 , 所以对于每个 Z 型 , 应在最优解上减 1 ,若再去掉反向延长线 , 每个 Z 型还会在最优的基础上 减 4 , 所以对于 每个Z 型应是在最优的基础上减 5

  

四 . M型折线分割平面 (两个角是平行的)

  M 型  因为有一组平行线 , 所以每个 M 型折线的最优解 要 减 1 ,将M 的每个顶点的线反向延长 , 会得到 4 条相交的折线 , 若回归到M 型 ,则每个M型的折线会在最优的基础上 减少 8 , 所以对 每个 M 型的折线会减少 9 。      

  

  

DP-直线分割递推的更多相关文章

  1. dp的简单递推笔记1

    (1)转自rockZ的博文 UVa 10328 - Coin Toss (递推) 题意:给你一个硬币,抛掷n次,问出现连续至少k个正面向上的情况有多少种. 原题中问出现连续至少k个H的情况,很难下手. ...

  2. BZOJ 1677 [Usaco2005 Jan]Sumsets 求和:dp 无限背包 / 递推【2的幂次方之和】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1677 题意: 给定n(n <= 10^6),将n分解为2的幂次方之和,问你有多少种方 ...

  3. bzoj2004公交线路——DP+矩阵加速递推

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2004 求方案数,想到DP: 因为两个站间距离<=p,所以每p个站中所有车一定都会停靠至 ...

  4. poj 2229 【完全背包dp】【递推dp】

    poj 2229 Sumsets Time Limit: 2000MS   Memory Limit: 200000K Total Submissions: 21281   Accepted: 828 ...

  5. POJ 2229 sumset ( 完全背包 || 规律递推DP )

    题意 : 给出一个数 n ,问如果使用 2 的幂的和来组成这个数 n 有多少种不同的方案? 分析 :  完全背包解法 将问题抽象==>有重量分别为 2^0.2^1.2^2…2^k 的物品且每种物 ...

  6. [bzoj1925][Sdoi2010]地精部落_递推_动态规划

    地精部落 bzoj-1925 Sdoi-2010 题目大意:给你一个数n和模数p,求1~n的排列中满足每一个数的旁边两个数,要么一个是边界,要么都比它大,要么都比它小(波浪排列个数) 注释:$1\le ...

  7. 2018牛客网暑期ACM多校训练营(第一场)B Symmetric Matrix(思维+数列递推)

    题意 给出一个矩阵,矩阵每行的和必须为2,且是一个主对称矩阵.问你大小为n的这样的合法矩阵有多少个. 分析 作者:美食不可负064链接:https://www.nowcoder.com/discuss ...

  8. 牛客网 暑期ACM多校训练营(第二场)A.run-动态规划 or 递推?

    牛客网暑期ACM多校训练营(第二场) 水博客. A.run 题意就是一个人一秒可以走1步或者跑K步,不能连续跑2秒,他从0开始移动,移动到[L,R]的某一点就可以结束.问一共有多少种移动的方式. 个人 ...

  9. 动态规划-递推-HDU2048

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2048 全错=全不匹配 设当前全错的个数是dp[n] 那么前(n-1)个全错的话,第n个数就可以从前(n- ...

随机推荐

  1. 日历价差(calendar spread)

    日历价差(calendar spread) 是指投资者买进到期日较远的期权 (简称远期期权),同时又卖出相同行权价格.相同数量但到期日较近的期权(简称近期期权),赚取两个不同期权隐含波动率的差价或者其 ...

  2. [转]解决pip安装太慢的问题

    阅读目录 临时使用: 经常在使用Python的时候需要安装各种模块,而pip是很强大的模块安装工具,但是由于国外官方pypi经常被墙,导致不可用,所以我们最好是将自己使用的pip源更换一下,这样就能解 ...

  3. Python--day41--条件

    1,条件 #锁 #acquire release#一个条件被创建之初 默认有一个False状态#False状态 会影响wait一直处于等待状态#notify(int数据类型) 造钥匙 代码示例:条件. ...

  4. C# const 和 readonly 有什么区别

    在写常量的时候,是选择使用 const 还是 static readonly 是一个让人难以决定的问题,本文告诉大家这两个方法的区别 如果一个类有静态字段,会如何初始化 可以使用的方法有两个,第一个方 ...

  5. 获取 Nuget 版本号

    本文告诉大家通过命令行获取 Nuget 的版本号 在 Nuget 中没有 -version 和 -v 和 --version 等写法,只需要直接输入 nuget 在第一行就会显示版本号 nuget N ...

  6. 装饰器&偏函数与作用域与异常处理与文件读写

    装饰器 概念:是一个闭包,把一个函数当做参数返回一个替代版的函数,本质上就是一个返回函数的函数 简单的装饰器 def func1(): print("sunck is a good man& ...

  7. 研发环境容器化实施过程(docker + docker-compose + jenkins)

    目录 背景介绍 改造思路 容器构建 基础准备 中间件容器 外部依赖容器 业务应用容器 容器整合 自动构建容器 Maven相关 非Maven项目 总结 背景介绍 目前公司内部系统(代号GMS)研发团队, ...

  8. 浮点数NaN和INF(#IND, #INF)

    NaN&INF定义在一些情况会出现无效的浮点数,例如除0,例如负数求平方根等,像这类情况,获取到的浮点数的值是无效的. NaN 即 Not a Number         非数字 INF  ...

  9. JNDI数据源的使用

    有时候我们数据库的连接会使用jndi的方式 try { InitialContext ic = new InitialContext(); dataSource = (DataSource) ic.l ...

  10. 【Linux】一个定时任务小脚本

    需要一个定时任务,每隔固定时间停止,等待几分钟,然后在启动,每5分钟一个循环. 简要写了一下,如下,未来在优化: 3,8,13,18,23,28,33,38,43,48,53,58 * * * * s ...