平面图中的欧拉定理

【软件系统架构】系列五:TCP/IP 协议栈 TCP/IP协议栈是现代网络通信的核心框架,采用分层架构设计,包含应用层、传输层、网络层和网络接口层四层结构。应用层提供HTTP、FTP等用户服务接口;传输层通过TCP/UDP实现端到端通信;网络层负责IP寻址和路由选择;网络接口层处理物理数据传输。数据在传输过程中经历层层封装,从应用层报文最终转换为物理层的比特流。该协议栈通过三次握手建立连接、数据传输、四次挥手断开连接的流程,确保可靠通信。作为互联网的基础,TCP/IP协议栈具有跨平台、标准化和可扩展的特点,广泛应用于各类网络设备和嵌入式系统中。 阅读详情

定理:设G为任意的连通的平面图,则v-e+f=2,v是G的顶点数,e是G的边数,f是G的面数。

题目描述:给出一个一笔画图形的n个节点的坐标,请你求解这个图形把平面分成了几个面
一笔画图形一个是把图上所有的边仅且遍历一次的封闭连通图。
分析:求面的问题就分解为求顶点个数与边条数的问题。
点的求法:遍历每条线段,如果是规范相交,则将该点存入V[]数组中。最后对V[]数组进行排序,使用STL中的unique()函数对求出来的交点进行去重处理。
边的求法:遍历每个交点和每条线段,如果交点在线段上,边数加一

//欧拉定理
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <string.h>
#include <vector>

using namespace std;

struct point
{
    double x, y;
    point(double x = 0.0, double y = 0.0) :x(x), y(y) {};
};
typedef point Vector;

const double eps = 1e-8;
//判断double类型(x)与0的大小
int dcmp(double x) { if (fabs(x)<eps) return 0; return (x<0) ? -1 : 1; }

//向量的运算符重载
Vector operator + (Vector A, Vector B) { return Vector(A.x + B.y, A.y + B.y); }
Vector operator - (Vector A, Vector B) { return Vector(A.x - B.y, A.y - B.y); }
Vector operator * (Vector A, double p) { return Vector(p * A.x, p * A.y); }
Vector operator / (Vector A, double p) { return Vector(A.x / p, A.y / p); }
bool operator < (const point& a, const point& b) {//判断a点是否小于b点
    return a.x < b.x || (a.x == b.x && a.y < b.y);
}

bool operator == (const point& a, const point &b) {//判断两个点是否相等
    return dcmp(a.x - b.x) == 0 && dcmp(a.y - b.y) == 0;
}
//向量的运算
double Dot(Vector A, Vector B) { return A.x * B.x + A.y * B.y; }//向量的点乘
double Cross(Vector A, Vector B) { return A.x * B.y - A.y * B.x; }//向量的叉积

 //判断规范相交
bool SegmentProperIntersection(point a1, point a2, point b1, point b2)
{
    double c1 = Cross(a2 - a1, b1 - a1), c2 = Cross(a2 - a1, b2 - a1);
    double c3 = Cross(b2 - b1, a1 - b1), c4 = Cross(b2 - b1, a2 - b1);

    return dcmp(c1)*dcmp(c2)<0 && dcmp(c3)*dcmp(c4)<0;
}

//两直线交点(参数法)
point GetLineIntersection(point P, Vector v, point Q, Vector w) 
{
    Vector u = P - Q;
    double t = Cross(w, u) / Cross(v, w);
    return P + v*t;
}
//判断点p是否在线段a1a2上(叉乘=0;点乘<0)
bool OnSegment(point p, point a1, point a2)
{
    return dcmp(Cross(a1 - p, a2 - p)) == 0 && dcmp(Dot(a1 - p, a2 - p))<0;
}
const int maxn = 300 + 10;
point P[maxn], V[maxn * maxn];
int main()
{
    int n, kase = 0, c, e;
    while (~scanf("%d", &n) && n) {
        for (int i = 0; i < n; i++) {
            scanf("%d%d", &P[i].x, &P[i].y);
            V[i] = P[i];
        }
        c = n - 1; e = n - 1;
        for (int i = 0; i < c; i++)//遍历每个点
            for (int j = i + 1; j < c; j++)
                if (SegmentProperIntersection(P[i], P[i + 1], P[j], P[j + 1]))//如果是规范相交
                    V[c++] = GetLineIntersection(P[i], P[i + 1] - P[i], P[j], P[j + 1] - P[j]);//把交点存入V[]中

        sort(V, V + c);
        c = unique(V, V + c) - V;//把重复元素放到数组后面,c为(去重后)交点的个数
        for (int i = 0; i < c; i++)//遍历每个交点
            for (int j = 0; j < n - 1; j++)//遍历每条线段
                if (OnSegment(V[i], P[j], P[j + 1])) e++;//如果交点在线段上,边数加一
        printf("Case %d: There are %d pieces.\n", ++kase, e + 2 - c);
    }
}
9篇5章2节:NHIS 数据库的常规数据下载 文章概述了 NHIS-Teen、NHPI NHIS 等补充性调查以及 2024 年 NHIS 数据资源的具体内容,包括问卷材料、技术文档和数据模块,为研究者高效、规范地使用 NHIS 数据提供参考框架。 阅读详情

相关推荐

MATLAB/Simulink实战:三电平逆变器SVPWM调制从入门到精通(附完整仿真模型)

本文提供了一份详尽的MATLAB/Simulink实战指南,手把手教你从零搭建三电平逆变器的SVPWM调制系统。文章深入剖析了27个空间矢量的分区与分解算法,并完整实现了包含中点电位平衡控制的Simulink仿真模型,旨在帮助电力电子与电机控制领域的学习者和工程师跨越从理论到实践的鸿沟。

sugar的博客 1213

图论复习(六)———平面图性质与欧拉公式

平面图性质及欧拉公式平面图一、定义二、定理平面图性质—欧拉公式一、定理 平面图 一、定义 G = <V,E>是一个无向图。 1.图G可嵌入平面:如果可以把图G的所有结点和边都画在平面上,同时除断点外连线之间没有交点,就称图G可嵌入平面。画出的无边相交的G’称G的平面嵌入。 2.可平面化:如果图G可以嵌入平面,就称图G可平面化。 3.G中边所包含的区域称作一个面。有界区域称为内部面,无界区域称为外部面,常记作R0,包围面的长度最短的闭链称为该面的边界,面R的边界的长度称为该面的度数,记作deg®。

weixin_45550092的博客 1万+

GXHT40温湿度传感器:I2C通信与CRC校验实战解析

本文详细解析GXHT40温湿度传感器的I2C通信协议与CRC校验机制,涵盖硬件连接、时序控制、数据读取及加热功能应用。通过实战案例分享优化技巧与异常处理,帮助开发者提升嵌入式系统中传感器数据的准确性与可靠性。

rgv234567的博客 241

图论-第六章

可平面图:若图G(可能交叉)可嵌入平面(能在平面画出图示的关系),则称G是可平面图(不一定是平面嵌入)平面嵌入(n个):可平面图G在平面上画出的无交叉边的图示(可以有曲线)平面图(平面嵌入的一个,n个是同构的):可平面图的任何一个平面嵌入都称为一个平面图例子图e不是可平面图,即为不可平面图。

qq_51347024的博客 7727

S32K344 Bootloader实战:一个按键实现从Boot到App的无缝跳转(附完整代码)

本文详细介绍了基于NXP S32K344微控制器的Bootloader开发实战,重点解析如何通过一个硬件按键实现从Boot到App的可靠跳转。内容涵盖内存分区规划、中断向量表重映射、外设初始状态管理等核心要素,并提供了完整的代码示例和调试技巧,适用于汽车电子和工业控制等高可靠性应用场景。

weixin_29192365的博客 307

基于STM32XX的LCD液晶显示屏(HS280S010B、驱动芯片:ST7789V)驱动C程序设计

/ 16位/pixel (RGB565)#define LCD_WIDTH 240 // 屏幕宽度。#define LCD_HEIGHT 280 // 屏幕高度。LCD_ROTATION_180, // 180度旋转。LCD_ROTATION_270 // 270度旋转。LCD_ROTATION_90, // 90度旋转。LCD_ROTATION_0 = 0, // 0度旋转。

myron6688的博客 369

[平面图欧拉定理]ONTAK2015. Ogród zoologiczny

给定n个点m条边的平面图,q个询问,每次询问给出k个点,问这k个点的导出子平面图的域的个数n<=5e4,m<=2e5,q<=1e6,Σk<=5e6平面图有一个性质 |E|≤3×n+6|E|\le 3\times n+6平面图欧拉定理:一个连通平面图满足 R=|E|−|V|+2R=|E|-|V|+2其中 RR 是域的个数(包括无穷域), EE 是边集, VV 是点集那么如果平面图不连通 R=|E

CE玩家 936

Archery通过OpenResty代理转发后登录一直提示Forbidden

测试几遍,连账号密码都没用验证,因为不管输什么都是提示Forbidden。找到配置文件settings.py,下面命令可到配置文件路径。回到页面刷新,随便输入个账号密码,验证失败证明请求成功了。查看Preview,提示CSRF验证失败,请求被中断。域名:dba.hkeasyspeed.com。打开开发者工具查看,网络里面可以看到报403。添加一条配置,把你配置域名添加进去。可以看到页面可以正常访问到。进入Archery容器。重启Archery容器。正常输入账号密码,OK。

万物皆可学 3144

平面图中的欧拉定理,平面图的性质

平面图的性质:边数小于等于3n-6 定理:设G为任意的连通的平面图,则v-e+f=2,v是G的顶点数,e是G的边数,f是G的面数。 转载于:https://www.cnblogs.com/cjoieryl/p/8463717.html...

weixin_34293059的博客 922

《UDS协议从入门到精通(UDS速查手册)》(完结撒花版)

专栏总目录,文中介绍了UDS协议相关的基础知识和一些术语,给出了详细介绍6大类26种服务的跳转目录。

车载系统攻城狮 9万+

计算机等级考试(二级WPS)---真题14套

目录 真题14一、选择题二、WPS文字三、WPS表格四、WPS演示21.打开考生文件夹下的素材文档 “WPS.docx”(.docx 为文件扩展名),后续操作均基于此文件,否则不得分。小周正在整理一份关于极光的文档,请按要求帮助她完成文档的排版工作。1.将全文中的手动换行符全部替换为中文句号并回车,删除文中的空行和空格。2.将正文第 2 段(“在我國的古書…… 極光”)中的繁体字转换成简体字,并为其设置 “正文” 样式。3.对文档样式进行如下设置:4.为 “1.3 极光的形态” 一节中列出的五种极光形态特征

2401_82750246的博客 1169

扒一扒那些叫欧拉的定理们(五)——平面几何欧拉定理的证明

早点关注我,精彩不迷路!在前面的文章中,我们介绍了空间几何内的欧拉定理及其扩展,上一篇中又讲到了平面几何欧拉定理,相关内容请戳:扒一扒那些叫欧拉的定理们(四)——平面几何欧拉定理美学鉴赏扒...

magic2728的博客 4933

龙芯2K1000 OTG双模驱动深度解析

是Synopsys公司开发的USB 2.0 OTG控制器IP核,龙芯2K1000内置该IP,作为唯一的OTG控制器(PCI Dev4 Func0),物理基地址0x40000000。核心能力:同时支持Host主机模式(接U盘/键盘)、Device设备模式(虚拟串口ttyGS0)、OTG双模自动切换速率驱动路径:内核源码PMON:启用otg0设备树内核:开启HOSTPERIPHERALG_SERIAL启动参数脚本:sysfs角色切换+开机自启Host按以上配置,龙芯2K1000 DWC2 OTG可完美实现。

weixin_44932366的博客 376

UVALA 3263 That Nice Euler Circuits(欧拉定理,判断线段相交)

解题思路: 欧拉定理: 设平面图的顶点数,边数和面数分别为V,E, F则 V + F - E = 2; 本题要求平面数,即 F = E + 2 - V; 因此只需要求出顶点数和边数。顶点数除了输入的顶点还包括两条线段相交的交点,同样如果三点共线,则原来的一条边变成了两条边。 #include #include #include #include #include #include

蘑菇--走在通往梦想的道路上。 839

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

UVALive - 3263 That Nice Euler Circuit——欧拉定理

欧拉定理:设平面图的定点数、边数和面数分别为V,E和F, 则V+F-E=2 注意精度问题,1e-10WA了,改成1e-8才过 #include &lt;cstdio&gt; #include &lt;cstring&gt; #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;cmath&gt; using nam...

hao_zong_yin的博客 432

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

扒一扒那些叫欧拉的定理们(三)——简单多面体欧拉定理的抽象形式

早点关注我,精彩不迷路!在前面的文章中,我们介绍和证明了简单多面体欧拉定理,相关内容请戳:扒一扒那些叫欧拉的定理们(二)——简单多面体欧拉定理的证明扒一扒那些叫欧拉的定理们(一)——基本介...

magic2728的博客 1911

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

UVA1342 That Nice Euler Circuit(ACM - ICPC 2004 Asia - Shanghai)(计算几何、欧拉定理)

欧拉定理:设平面图的顶点数、边数和面数分别为V,E,F,则V+F-E=2。 #include<bits/stdc++.h> using namespace std; const int N = 5007, M = 50007, INF = 0x3f3f3f3f; const double DINF = 12345678910, eps = 1e-10; struct Point{ double x, y; Point(double x = 0, double y = 0):.

繁凡さん的博客 488

poj2284 That Nice Euler Circuit(欧拉公式)

题目链接:poj2284 That Nice Euler Circuit 欧拉公式:如果G是一个阶为n,边数为m且含有r个区域的连通平面图,则有恒等式:n-m+r=2。 欧拉公式的推广: 对于具有k(k≥2)个连通分支的平面图G,有:n-m+r=k+1。 题意:给出连通平面图的各顶点,求这个欧拉回路将平面分成多少区域。 题解:根据平面图的欧拉定理“n-m+r=2”来求解区域数r。...

dhe56357的博客 298

Uvalive 3263 That Nice Euler Circuit(几何欧拉定理)

题目地址:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1264 思路:欧拉定理:设平面图的顶点数、边数和面数分别为V、E和F,则V+F-E=2。 顶点数可以通过计算两线段交点计算:首先判断两线段是否相交(每条线段的两个端点均在另一条线

哆啦AC梦的博客 628

计算几何学习10

这两天做了一些简单的题目 写完了第二期的1.2 poj 3334 给你一个尖端联通之后的两个漏斗形状的区域,问你问你对应面积对应的水平高度是多少 做法很明显是二分 注意的是连通器的性质是液面高度相同 因此二分的上界是 两个高点的min值 因为自己各种sb的错误 比如数组名打错 变量打反 调了很久 POJ 1819 和之前做的一个放置正方形的题目很像 但是这题的条件是哪些圆删去后,不会影响序列的放...

weixin_43133015的博客 47

图论 ACM 算法竞赛

图论学习资料 图论五百题 看到了有大神刷了五百题的图论, 感慨万千, 路漫漫其修远兮, 吾将上下而求索 图论五百题 以此为志 超级好的博客ACdreamer 图论基础知识 2017/8/14 图论 1. 什么是图, 一种高级数据结构, 三元组组成 ,V,点的集合, E ,边的集合, ψ是从边集合E到结点无序偶(有序偶)集合上的函数

海边拾贝,沧海一粟 1624

拓扑几何学

X(P)是多面体P的欧拉示性数。如果多面体P是同胚于一个球面的,那么X(P)=2,如果P同胚于一个接有h个环柄的球面(下图),那么X(P)=2-2h。如果把最外面的五边形外面也算作一个面,那就是点数-边数+面数 = 2,即。可以把多面体映射成图论图,直接利用图论图的结论即可。对于一个单连通多面体,点数-边数+面数 = 2。在一个联通无向图中,点数-边数+面数 = 1。

nameofcsdn的博客 1473

复数中欧拉公式与计算机,欧拉公式

在任何一个规则球面地图上,用 R记区域个 数 ,V记顶点个数 ,E记边界个数 ,则 R+ V- E= 2,这就是欧拉定理 ,它于 1640年由 Descartes首先给出证明 ,后来 Euler(欧拉 )于 1752年又独立地给出证明 ,我们称其为欧拉定理 ,在国外也有人称其 为 Descartes定理。[1]R+ V- E= 2就是欧拉公式。中文名欧拉公式外文名Euler's formula别...

weixin_31900373的博客 1899

【学习笔记】NOIP暴零赛

我是fw

cqbzlydd的博客 418

2022“杭电杯”中国大学生算法设计超级联赛(6)签到题5题

2022“杭电杯”中国大学生算法设计超级联赛(6)2022“杭电杯”中国大学生算法设计超级联赛(6)2022“杭电杯”中国大学生算法设计超级联赛(6)2022“杭电杯”中国大学生算法设计超级联赛(6)2022“杭电杯”中国大学生算法设计超级联赛(6)...

小哈里的博客 1693

【计几】欧拉公式

欧拉公式 欧拉定理 百度百科 计算几何 欧拉定理应用 内容: 如果一个联通平面图有 VVV 个顶点、EEE 条边、FFF 个面,那么V−E+F=2V-E+F=2V−E+F=2 定理扩充: 平面图包括 kkk 个连通分支,VVV 个顶点、EEE 条边、FFF 个面,那么V−E+F=k+1V-E+F=k+1V−E+F=k+1 定理推广: 多面体是平面图在三维下的拓展,也满足欧拉定理。 ...

ZhgDgE的博客 390
上一篇: 最长上升子序列问题LIS
下一篇: HDU1756--判断点与多边形的相对位置
joeycom2
博客等级 码龄11年 1粉丝 47原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值