目录

一,连续空间划分问题

1,1维——线段 or 直线

2,2维——圆形 or 整个平面

3,3维——球形 or 整个空间

4,k维——整个k维空间

二,OJ实战

HDU 1249 三角形

HDU 2050 折线分割平面

51Nod 1104 直线分割圆

CSU 1284 Cutting Cake

CSU 2059 Water Problem(Z字形分隔平面)

三,对称之美

练习模式

比赛模式

策略

四,星系

五,Kobon问题


一,连续空间划分问题

1,1维——线段 or 直线

n个点可以把线段或者直线分成多少段?

答案是 n+1

2,2维——圆形 or 整个平面

(1)n个直线把圆或者平面分成多少块?

答案是(1+2+3+......+n)+1 = n(n+1)/2+1

(2)圆上的n个点,两两连接成的n(n-1)/2条弦最多可以把圆分成多少块?

思路:单点发出的n-1条弦被其他弦分割形成的分割点的个数是1*(n-3)+2*(n-4)+...+(n-4)*2+(n-3)*1=(n-1)(n-2)(n-3)/6

所以答案是  即n(n-1)(n-2)(n-3)/24+n(n-1)/2+1

3,3维——球形 or 整个空间

(1)n个平面把球形或者空间分成多少块?

答案是  

(2)在matrix67的博客中还有这么一个问题,n刀可以把甜甜圈切成多少块?

通过拓扑变换,可以推导出,n刀可以把甜甜圈切成多少块其实就是n+1刀可以把球形分成多少块。所以答案是

4,k维——整个k维空间

通用问题,n个k-1维的刀,可以把一个k维的无穷空间切成多少块?

递推式是

例如,

即,n刀可以把一个无限的三维空间切成块。

二,OJ实战

HDU 1249 三角形

题目:
Description

用N个三角形最多可以把平面分成几个区域? 
Input

输入数据的第一行是一个正整数T(1<=T<=10000),表示测试数据的数量.然后是T组测试数据,每组测试数据只包含一个正整数N(1<=N<=10000).
Output

对于每组测试数据,请输出题目中要求的结果. 
Sample Input

2
1
2
Sample Output

2
8

解释一下网上到处飞的递推式f(n)=f(n-1)+(n-1)*6是怎么来的。

这个问题其实和n条直线可以把平面分成多少个部分是差不多一样的。

对于直线的问题,递推式是f(n)=f(n-1)+n

也就是说,从n-1条直线,变成n条直线,多了n块。

为什么就刚好是n呢?因为,一条直线可以被n-1条直线分成n段,而每一段,都恰好对应着从n-1条直线变成n条直线时会有1块变成2块,于是整体增加了n块。

对于三角形的问题,道理是一样的。

一个三角形(注意,这里指的是三条边构成的曲线)可以被n-1个三角形分成(n-1)*6段,于是便得到了递推式。

所以f(n)=3 * n*(n - 1) + 2

代码:

#include<iostream>
using namespace std;int main()
{int k, n;cin >> k;while (k--){cin >> n;cout << 3 * n*(n - 1) + 2 << endl;}return 0;
}

HDU 2050 折线分割平面

题目:

我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。

Input
输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个整数n(0<n<=10000),表示折线的数量。

Output
对于每个测试实例,请输出平面的最大分割数,每个实例的输出占一行。

Sample Input
2
1
2
Sample Output
2
7

这个问题的本质,和直线分割平面问题是一样的。

每增加1个折线,增加的平面区域的数目等于增加的交点的数目加1

每2个折线都可以有4个交点,如此便得到公式

代码:

#include<iostream>
using namespace std;int main()
{int a;cin >> a;while (cin >> a)cout << a*a * 2 - a + 1 << endl;return 0;
}

51Nod 1104 直线分割圆

圆上有N个点,每个点和其他所有点之间都有直线相连。并且任意3线不共点。计算这些直线把圆分割所得的区域的数量K。

例如:N = 2,K = 2,N = 3,K = 4。由于结果可能会很大,输出K Mod (10^9 + 7)的结果。

Input

输入:1个数N。(2 <= N <= 10^9)

Output

输出数量 Mod 10^9 + 7

Sample Input

2

Sample Output

2
#include<iostream>
using namespace std;int main()
{long long n,p=1000000007;cin>>n;long long x=n*(n-1)/2%p,y=(n-2)*(n-3)/2%p;long long z=x*y%p*(p+1)/6%p+x+1;cout<<z%p;return 0;
}

CSU 1284 Cutting Cake

题目:

Description

一个蛋糕切N刀,最多能得到多少块?切的过程中不能改变任意一块蛋糕的位置。

Input

输入数据的第一行包含一个整数T (1 <= T <= 100),表示接下来一共有T组测试数据。

每组测试数据占一行,包含一个整数N (1 <= N <= 100),含义同上。

Output

用一行输出一个整数,表示上述问题的答案。

Sample Input

3
2
3
4

Sample Output

4
8
15

代码:

#include<iostream>
using namespace std;int main()
{int t, n;cin >> t;while (t--){cin >> n;cout << (n*n - 1)*n / 6 + n + 1 << endl;}return 0;
}

CSU 2059 Water Problem(Z字形分隔平面)

题目:

Description

​ 一条‘Z’形线可以将平面分为两个区域,那么由N条Z形线所定义的区域的最大个数是多少呢?每条Z形线由两条平行的无限半直线和一条直线段组成

Input

首先输入一个数字T(T<100),代表有T次询问 每次询问输入一个数字N(N<1e8),代表有N条Z形线

Output

对于每次询问,在一行输出N条‘Z’形线所能划分的区域的最大个数为多少

Sample Input

2
1
2

Sample Output

2
12

思路:

首先考虑一个类似的问题:

有N组直线,每组都由3条平行的直线构成,3条直线的间距可以调整。

那么N组直线最多划分出多少个区域?

这个问题就很容易求出来,3n(3n-1)/2+1

本题的答案,就是把每组3条平行直线变成Z,也就是在3n(3n-1)/2+1的基础上再减2n即可

代码:

#include<iostream>
using namespace std;int main()
{long long a;cin >> a;while (cin >> a)cout << (a * 9 - 7)*a / 2 + 1 << endl;return 0;
}

三,对称之美

最强大脑同款项目。

练习模式

(3)

(8)

比赛模式

简单

普通

困难

前面很多地方是随便试的,最后这块有个白格子没覆盖,不好解决。

策略

初始条件:先把对称点在边上的或在交叉点上的,对应的2个或4个格子标注出来,颜色不用特别在意,随时可以换,如果不在意速度的话。

局部性原理:整个局面如何划分,并不是特别随意,每个格子属能于哪个块的情况数并不多。

推理顺序:推理顺序主要是2种,一种是先从对称点比较密集的地方开始推理,另一种是从边角往里推,因为这些地方的情况数比较少。

困难关卡示例1:

先标初始条件

再从边角推理:(粉色的4处)

PS:我用黑线把颜色标注出来了,标注的颜色表示是这一轮新推理出来的。

继续推理能确定的:(蓝绿紫三色的8处)

继续推理:(红色和粉色的5处)

然而,再继续往下推就会发现错误,于是我干脆随意试一下,看大概有多少格子标不出颜色

重新推理:

思路策略是对的,就是很容易有疏漏,我在excel里面重新做了一遍:

C11之前就是推错了,所以最后B8空着没法填色。

推错的根源,是我推出I15只能和H14连起来,然而,实际情况是:

I15居然和L11连起来,因为漏了这个可能性,所以后面全面崩溃。

现在这一步找对了,后面的就很简单了:

继续推发现又无解了,全面还是有错的,改了2个格子:

剩下的试一下就出来了:(这一步不确定是不是唯一的)

困难关卡示例2:

困难关卡示例3:

困难关卡示例4:

四,星系

和对称之美是一样的,因为颜色足够,不把四色定理相关的考察融入其中,所以只是划分问题,不用关注颜色,所以星系直接就是无色的。

在线play

  

五,Kobon问题

来自http://www.matrix67.com/blog/archives/398

N条直线划分平面,最多可以构成多少个互不重叠的三角形?

首先我们很容易想到,在计算有多少个互不重叠的三角形时,只需要看所有的简单连通块即可(即只看内部没有线条的三角形)。

已被证明,n(n-2)/3是Kobon三角形问题的一个上界。

当n=17时,上界85可以达到:

puzzle(0211)几何划分问题相关推荐

  1. Codeforces Round #172 (Div. 2) C. Rectangle Puzzle 数学题几何

    C. Rectangle Puzzle Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/281/p ...

  2. puzzle(0221)几何构建:迷走点线、Roper

    目录 一,谜走点线 二,Rop 1,P1 2,P2 一,谜走点线 最强大脑里面的谜走点线据说是按照Rop的规则自编的关卡,TapTap里面的谜走点线则是抄袭Rop的. 移动节点,使得整体呈现目标图形. ...

  3. 《玩不够的数学:算术与几何的妙趣》:第一章 平面上的几何艺术

    第一章 平面上的几何艺术 人们往往从悖论中获得思维的乐趣,而几何学的悖论就是不可能图形.如今我们已创造出数千种这样的二维图像,不断挑战我们的眼睛和思维.三角形.披萨饼.七巧板也蕴藏着无穷的变化和巧妙的 ...

  4. 简易几何利用 ANSYS Multizone Meshing创建六面体网格应用案例

    ANSYS Meshing是ANSYS Workbench的一个组件,集成了ICEM CFD.TGRID (Fluent Meshing).CFX-Mesh.Gambit网格划分功能,具有较为强大的前 ...

  5. 几何深度学习(Geometric Deep Learning)技术

    几何深度学习(Geometric Deep Learning)技术 几何深度学习综述 从论文Geometric Deep Learning: Grids, Groups, Graphs, Geodes ...

  6. 虚拟纹理与几何图像技术

    虚拟纹理与几何图像技术 一. 基本图形学概念 图1. 几何与纹理. 曲面一般表示成三角网格和纹理图像,三角网格表示曲面的几何拓扑信息,纹理图像给出曲面的颜色材质等信息.将三角网格映射到平面区域的过程被 ...

  7. 使用Blender中的几何节点创建程序对象

    大小解压后:2.4G 持续时间3h 30m 1280X720 MP4 语言:英语+中英文字幕(根据原英文字幕机译更准确) 使用Blender中的几何节点按程序创建对象 信息: 使用Blender中的几 ...

  8. 学会在Unity中创建一个Match-3益智游戏 Learn To Create a Match-3 Puzzle Game in Unity

    MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:48场讲座(6h 38m) |大小解压后:2.8 G ...

  9. listen函数的第二个参数_【图像处理】OpenCV系列十七 --- 几何图像变换函数详解(一)...

    上一篇我们学习了仿射变换的warpAffine函数,知道了如何用这个函数对图像进行旋转.平移等操作,那么本节我们一起来学习一下与仿射变换相关的其他函数以及相关的几何图像变换. 一.convertMap ...

最新文章

  1. Hadoop集群部署模型纵览1
  2. js实现拖拽+碰撞+重力
  3. 1.5.2 在IIS上配置ASP.NET(转)
  4. Makefile(三)
  5. 科目三考试里面的会车,调头,靠边停车通过标准
  6. 【数字逻辑设计】Logisim构建多路选择器
  7. databus mysql搭建_databus bootstrap 部署
  8. 日志打印工具类LogUtils
  9. React.js 小书 Lesson10 - 组件的 state 和 setState
  10. NYOJ--891--找点
  11. 你真的会用ABAP, Java和JavaScript里的constructor么? 1
  12. 17.电话号码的字母组合(力扣leetcode) 博主可答疑该问题
  13. 华为NP课程笔记25-SDN简介
  14. agv车辆调度系统-技术篇
  15. 七月观荷 - 江湖一剑客
  16. 《相关性准则——大数据时代的高效能之道》一一1.6 相关性准则
  17. 读《470个建筑设计创意发想》
  18. HTML5+CSS3期末大作业——城市简介
  19. pta6-1 快速排序
  20. 金蝶K3采购暂估案例教程3差额调整

热门文章

  1. java跳出双重循环
  2. 棋盘格检测--Automatic Detection of Checkerboards on Blurred and Distorted Images
  3. hadoop之常见命令
  4. 免费申请使用IBM Cloud Lite(轻量套餐) 详细教程指南
  5. (转载)2010年股市只要读懂这篇文章想亏钱都难
  6. 黎曼猜想(一) 欧拉乘积式
  7. 新恒结衣为什么是中国程序员共同的老婆?
  8. 【英语语法入门】第40讲 原形不定式(1)使役动词
  9. 20年java面试_Java 20年
  10. 公安情报收集工作的新战场——互联网