蓝桥杯 平面切分(欧拉定理)

问题描述
平面上有 N条直线,其中第 i条直线是 y = Ai*x + B。

请计算这些直线将平面分成了几个部分。

输入格式
第一行包含一个整数N。

以下N行,每行包含两个整数 Ai, Bi。

输出格式
一个整数代表答案。

样例输入

3
1 1
2 2
3 3

样例输出

6

基本思路
首先通过set容器对输入的数据进行去重,根据“每增加一条直线,对平面数增加的贡献值,是其与先前直线的交点数(不包括与已有交点重合的点)+1 ”的结论进行累加,最后输出结果即可(具体步骤见代码注释~)。

AC代码

#include<bits/stdc++.h>
using namespace std;
const int N = 1005;int main()
{int n;scanf("%d", &n);int a, b;long double A[N], B[N];pair<long double, long double> p; set<pair<long double, long double> > s;  //利用set自动去重功能筛选掉重边 for(int i = 0; i < n; i++){scanf("%d %d", &a, &b);p.first = a;p.second = b;s.insert(p);}int i = 0;  //将去重后的直线数据放回A,B数组 for(set<pair<long double, long double> >::iterator it = s.begin(); it != s.end(); it++, i++){A[i] = it -> first;B[i] = it -> second;}long long ans = 2;  //初始情况当只有一条直线时,有两个平面 for(int i = 1; i < s.size(); i++)  //从下标1开始,也就是第二条直线 {set<pair<long double, long double> > pos;  //记录第i条直线与先前的交点 for(int j = i-1; j >= 0; j--){int a1 = A[i], b1 = B[i];int a2 = A[j], b2 = B[j];if(a1 == a2)  //遇到平行线无交点,跳出 continue; p.first = 1.0*(b2-b1)/(a1-a2);p.second = 1.0*a1*((b2-b1)/(a1-a2)) + b1;pos.insert(p); }ans += pos.size() + 1;  //根据结论,每增加一条直线,对平面数的贡献值是其与先前直线的交点数(不重合)+1 } printf("%d\n", ans);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/312758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用HttpReports快速搭建API分析平台

HttpReports简单介绍HttpReports 是 .Net Core下的一个Web组件&#xff0c;适用于 WebAPI 项目和 API 网关项目&#xff0c;通过中间件的形式集成到您的项目中, 通过HttpReports&#xff0c;可以让开发人员快速的搭建出一个 API 性能分析的基础报表网站。主要包含 HttpReports …

PAT(乙级) 1001 害死人不偿命的(3n+1)猜想 C++

卡拉兹(Callatz)猜想&#xff1a; 对任何一个正整数 n&#xff0c;如果它是偶数&#xff0c;那么把它砍掉一半&#xff1b;如果它是奇数&#xff0c;那么把 (3n1) 砍掉一半。这样一直反复砍下去&#xff0c;最后一定在某一步得到 n1。卡拉兹在 1950 年的世界数学家大会上公布了…

他,TypeScript GitHub Star 上海第一,全国第四!GitHub 总标星超两万!

前两天和老同学羡辙&#xff08;Apache Echarts 核心开发、百度最美工程师&#xff09;聊天。她分享了一个 GitHub 排名的网站给我。http://git-awards.com/users?typecity&languagetypescript&cityShanghai我看了下 TypeScript star 数量的排名。哇噻&#xff01;厉害…

PAT(乙级) 1002 写出这个数 (20point(s)) Python

读入一个正整数 n&#xff0c;计算其各位数字之和&#xff0c;用汉语拼音写出和的每一位数字。 AC代码 i input() count 0 for j in i:count count int(j) d {"0":"ling","1":"yi","2":"er","3"…

[原]排错实战——拯救加载调试符号失败的IDA

本文之前发表的时候有些问题&#xff0c;作为强迫症患者的我又重新编辑后再次发表。如果您已经看过&#xff0c;请忽略。望见谅。缘起 最近想借助IDA逆向一个函数。在windows下&#xff0c;调试器&#xff08;比如vs, windbg&#xff09;可以通过调试符号&#xff08;PDB&#…

数据结构 旅游规划(Dijkstra+Dfs)

题目&#xff1a; 有了一张自驾旅游路线图&#xff0c;你会知道城市间的高速公路长度、以及该公路要收取的过路费。现在需要你写一个程序&#xff0c;帮助前来咨询的游客找一条出发地和目的地之间的最短路径。如果有若干条路径都是最短的&#xff0c;那么需要输出最便宜的一条路…

如何运用DDD - 实体

概述本文将介绍领域驱动设计&#xff08;DDD&#xff09;战术模式中另一个常见且非常重要的概念 - 实体。相对战术模式中其他的一些概念&#xff08;例如 值对象、领域服务等&#xff09;来说&#xff0c;实体应该比较容易让人理解和运用。但是我们如何去发现所在领域中的实体呢…

数据结构 最大堆和最小堆

前言&#xff1a; 关于最大堆和最小堆的题目&#xff0c;我做过了很多次&#xff0c;但是好像没有一个是完全独立AC的。2021春季PAT考试的前一天&#xff0c;天梯赛校内赛还专门考了最小堆&#xff0c;我复习了一下&#xff0c;结果第二天PAT考了最大堆&#xff0c;又是没做出来…

Natasha v2.5.4 版与运行时实战

文章转载授权级别&#xff1a;BNatasha 是一个十分便捷的动态构建库&#xff0c;支持.NET Standard2.0 / Core3.0 ; 比起繁杂的 IL 指令和 Expression 的众多 API , Natasha 的构建方式更加友好简洁&#xff0c; 基于 Natasha 可以让动态工作变得傻瓜&#xff0c;简单&#xf…

数据结构 堆中的路径(最小堆)

题目&#xff1a; 将一系列给定数字插入一个初始为空的小顶堆H[ ]。随后对任意给定的下标i&#xff0c;打印从H[i]到根结点的路径。 输入格式: 每组测试第1行包含2个正整数N和M(≤1000)&#xff0c;分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 100…

.Net Core3.1下使用Swagger搭建web api项目

前言&#xff1a;微软于前天发布.net core 3.1正式版,并将长期支持3.1。所以我听到这个消息后就急忙下载.net core 3.1的SDK和Runtime,应该是公司最先用3.1的攻城狮了????。OK&#xff01;废话少说&#xff0c;今天的目的是基于.net core 3.1建一个web api的项目先下载.net…

一个值得学习的WPF开源项目

项目介绍此项目应用了Prism MVVM框架&#xff0c;项目展示数据来源于其他服务程序&#xff0c;使用的WebAPI通信&#xff0c;如果要正常运行此程序&#xff0c;需要您自己做一个WebAPI程序&#xff0c;由API接口提供数据驱动&#xff0c;其实直接查看代码最直接&#xff0c;有需…

程序员修神之路--打通Docker镜像发布容器运行流程

菜菜哥&#xff0c;我看了一下docker相关的内容&#xff0c;但是还是有点迷糊还有哪不明白呢&#xff1f;如果我想用docker实现所谓的云原生&#xff0c;我的项目该怎么发布呢&#xff1f;这还是要详细介绍一下docker了Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言…

PTA 三足鼎立 (lower_bound()+upper_bound())

当三个国家中的任何两国实力之和都大于第三国的时候&#xff0c;这三个国家互相结盟就呈“三足鼎立”之势&#xff0c;这种状态是最稳定的。 现已知本国的实力值&#xff0c;又给出 n 个其他国家的实力值。我们需要从这 n 个国家中找 2 个结盟&#xff0c;以成三足鼎立。有多少…

用.NET解索尼相机ARW格式照片

用.NET解索尼相机ARW格式照片目前常用的照片格式是 .jpg&#xff0c;它只能提供 8bit的色彩深度&#xff0c;而目前主流的相机都能提供高达 12bit- 14bit的色彩深度&#xff0c;动态范围和后期处理能力也大大增加&#xff0c;这也是为什么不少摄影爱好者会优先使用相机提供原始…

天梯赛 喊山 bfs

喊山&#xff0c;是人双手围在嘴边成喇叭状&#xff0c;对着远方高山发出“喂—喂喂—喂喂喂……”的呼唤。呼唤声通过空气的传递&#xff0c;回荡于深谷之间&#xff0c;传送到人们耳中&#xff0c;发出约定俗成的“讯号”&#xff0c;达到声讯传递交流的目的。原来它是彝族先…

ASP.NET Core on K8S深入学习(10)K8S包管理器Helm-Part 1

本篇已加入《.NET Core on K8S学习实践系列文章索引》&#xff0c;可以点击查看更多容器化技术相关系列文章。关于HelmWhy Helm&#xff1f;虽然K8S能够很好地组织和编排容器&#xff0c;但是缺少一个更高层次的应用打包工具&#xff0c;而Helm就是专门干这个事的。通过Helm能够…

520 钻石争霸赛 7-8浪漫侧影(二叉树的遍历)

“侧影”就是从左侧或者右侧去观察物体所看到的内容。例如上图中男生的侧影是从他右侧看过去的样子&#xff0c;叫“右视图”&#xff1b;女生的侧影是从她左侧看过去的样子&#xff0c;叫“左视图”。 520 这个日子还在打比赛的你&#xff0c;也就抱着一棵二叉树左看看右看看…

依赖注入在 dotnet core 中实现与使用:2 使用 Extensions DependencyInjection

既然是依赖注入容器&#xff0c;必然会涉及到服务的注册&#xff0c;获取服务实例&#xff0c;管理作用域&#xff0c;服务注入这四个方面。服务注册涉及如何将我们的定义的服务注册到容器中。这通常是实际开发中使用容器的第一步&#xff0c;而容器本身通常是由框架来实例化的…

520 钻石争霸赛 7-6 矩阵列平移(循环)

给定一个 nn 的整数矩阵。对任一给定的正整数 k<n&#xff0c;我们将矩阵的偶数列的元素整体向下依次平移 1、……、k、1、……、k、…… 个位置&#xff0c;平移空出的位置用整数 x 补。你需要计算出结果矩阵的每一行元素的和。 输入格式&#xff1a; 输入第一行给出 3 个…