第十一届蓝桥杯C/C++B组省赛-平面切分

2023-10-28

题目

题目链接

题解

计算几何。


存在这么一个结论:

向一个平面中加入一条直线,分两种情况,

  1. 若新加入的直线不与平面中的任何一条直线重合,则向平面中加入该直线对平面部分数的贡献为:平面中已经存在的直线与该直线相交得到的不同的交点数 + 1;

  2. 若新加入的直线与平面中的某条直线重合,则该直线没有贡献.

特别地,当平面中没有直线时,平面部分数为 1。


举几个例子:

请添加图片描述

代码

#include<bits/stdc++.h>
#define PDD pair <long double, long double> 
using namespace std;

const int N = 1010;

int n, ans;
long double a[N], b[N]; // 开 long double 
bool vis[N];

int main()
{
	cin >> n;
	for (int i = 1;i <= n;i ++) {
		cin >> a[i] >> b[i];
		set <PDD> s;
		s.clear ();
		for (int j = 1;j < i;j ++) {
			if (vis[j]) continue; // 如果枚举到的j是重合直线,直接跳过了,因为在j之前肯定存在与之一样的直线 
			if (a[i] == a[j] && b[i] == b[j]) { // 第i条直线的斜率与截距与前i-1条直线中的某一条完全一致说明重合 
				vis[i] = true; // 标记第i条直线是一条重合直线 
				break; // 重合无贡献,交点不算,直接break 
			}
			if (a[i] == a[j]) continue; // 如果第i条直线与当前枚举到的第j条直线平行,则说明i和j直线无交点,直接continue,不用向set中加入交点 
			s.insert ({ (b[i]-b[j])/(a[j]-a[i]), (a[j]*b[i]-a[i]*b[j])/(a[j]-a[i]) }); // 交点的计算是采用的行列式的方式计算的,克拉默法则了解一下 
		}
		if (!vis[i]) ans += s.size () + 1; // 只有当第i条直线不是重合直线时才统计 
	}
	cout << ans + 1 << endl; // 初始平面的1 
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第十一届蓝桥杯C/C++B组省赛-平面切分 的相关文章

随机推荐

  • MySQL-窗口函数&聚合函数

    从salaries表中查询emp no salary 并根据emp no字段升序累加salary作为running total字段 最后的结果如下图所示 MySQL语句如下 SELECT emp no salary SUM salary O
  • iOS 扩大UIView的点击范围原理

    扩大view点击范围的原理就是iOS的事件传递原理 事件从Window 上开始传递流程 首先执行window的hottest with event 方法 然后在该方法中会调用point inside 方法 判断点击点是否在 window中
  • 第五讲:常见的BeanPostProcessor

    常见的BeanPostProcessor 一 入门Demo 二 添加BeanPostProcessor 1 AutowiredAnnotationBeanPostProcessor 2 CommonAnnotationBeanPostPro
  • 关于SecureCRT输入无显示的问题解决办法

    在使用SecureCRT进行与ARM开发板TQ210做串口通信测试时 发现从开发板发数据能够在窗口中显示 而通过键盘输入时 SecureCRT不显示输入的内容 但敲Enter后 开发板也能接收到 这需要设置SecureCRT进行本地回显 L
  • 【牛客网SQL“必知必会”】刷题记录:一些容易遗忘的知识点

    目录 导读 SQL13 知识点 字符串 IN 范围选择 SQL14 知识点 BETWEEN 数值范围选择 SQL16 知识点 LIKE SQL22 知识点 字符串拼接 SQL23 知识点 时间函数格式化 SQL25 知识点 WHERE GR
  • 全排列算法(java实现)

    100题目之53题目和70题目 在做100题目的时候 全排列的算法困扰了很久 虽然网上了搜了一些资料 可是并没有搞懂 今天花了一个下午的时间 从新梳理了一遍 终于弄明白了 全排列的算法 递归分析网上都有 http www cnblogs c
  • Google Guava Cache--localcache本地缓存实例

    何为缓存 本地缓存类似于map 当给定一个key 首先查找缓存中是否已经有值了 如果有则直接返回数据 相反如果不存在这样的key 则将新的内容value值缓存起来 以便下一次来查询 可以快速返回 当然缓存不是说value值一直不变 会按照一
  • VMware虚拟机安装Windows Server 2012 R2

    想必同学们已经开学了 也都进入了军训阶段吧 而很多计算机网络专业的同学们要开始接触到Windows Server了 这也是计算机网络技术专业的专业基础课程 想当年我们实训课学习使用的好像是2008版的 也不晓得现在各个学校会用到哪个版本实操
  • STC单片机在线ISP IAP OTA

    作者 QQ群 852283276 微信 arm80x86 微信公众号 青儿创客基地 B站 主页 https space bilibili com 208826118 参考 STC15单片机功能和应用电路 STC8A单片机功能和应用电路 ST
  • 【漏洞发现-xss跨站脚本攻击】实体编码绕过

    一 漏洞描述 xss跨站脚本攻击是黑客通过 html注入 篡改了网页 插入了js恶意脚本 前端渲染时进行恶意代码执行 从而控制用户浏览的一种攻击 经常出现在需要用户输入的地方 一旦对输入不进行处理 就会发生网页被篡改 分为三类 反射型 经过
  • element中table表格多选项翻页或者切换不同数据后保存之前选择的数据并返显选中的状态

    问题需求 我们需要做一个选择表格中显示咨询意见的数据 但是因为点击不同的选项后会发送请求展示不同的数据 table表格普通的方法在选择新的数据后之前选择的数据就会消失 现在需要保存用户所选择的所有信息 解决方法 查找后发现Element中有
  • 【QT】枚举与字符串互相转换

    QT 枚举与字符串互相转换 利用Qt元对象系统的特性实现对枚举类型与字符串的互相转换功能 1 使用方法 项目文件添加QT core 创建类Car继承于QObject并使用Q OBJECT宏 类内添加枚举Color 使用Q ENUM宏将Col
  • sqlserver 分组取前几行

    select top 100 ss1 from select rank OVER PARTITION BY ss senderip ss report order by ss num desc AS RowNumber ss from se
  • Basic Level 1053 住房空置率 (20分)

    题目 在不打扰居民的前提下 统计住房空置率的一种方法是根据每户用电量的连续变化规律进行判断 判断方法如下 在观察期内 若存在超过一半的日子用电量低于某给定的阈值 e 则该住房为 可能空置 若观察期超过某给定阈值 D 天 且满足上一个条件 则
  • 图像相似度识别算法aHash|dHash|PHash

    图像相似度识别算法aHash dHash PHash aHash算法 基本原理 优缺点 python实现 dHash算法 基本原理 优缺点 python代码实现 aHash pHash dHash 是常用的图像相似度识别算法 原理简单 实现
  • conda中设置源

    文章目录 添加源 清华源 腾讯源 移除源 清华源 腾讯源 打印当前channels 系统中的配置文件 使用pip源 添加源 清华源 conda config add channels https mirrors tuna tsinghua
  • Python基础教程学习完后,如何进一步提高?

    Python基础教程学习完后 如何进一步提高 这里就针对这个问题跟大家分享一些经验 其实Python 的发展方向有很多 各个方向上的名词和概念对于初学者来说也是一种压力 一开始不要贪多贪大 建议先从概念最少的方向入手 循序渐进 打怪升级 建
  • element-ui树形控件el-tree详解

    概述 这里我利用element ui开发一个vue的树形组件 引入element ui 安装element plus cnpm install element plus save 安装按需导入 cnpm install D unplugin
  • java如何返回上一步_java程序中,肿么返回上一个步骤?

    String firstPage 欢迎使用我行我素购物管理系统 n n 1 登 录 系统 n 2 更 改 管 理 员 密 码 n 3 退 出 n n 不同页定义一个不同的String类型的变量用于打印 System firstPage 楼下
  • 第十一届蓝桥杯C/C++B组省赛-平面切分

    题目 题目链接 题解 计算几何 存在这么一个结论 向一个平面中加入一条直线 分两种情况 若新加入的直线不与平面中的任何一条直线重合 则向平面中加入该直线对平面部分数的贡献为 平面中已经存在的直线与该直线相交得到的不同的交点数 1 若新加入的