当前位置: 首页 > wzjs >正文

代做毕设自己专门网站黄岩城市建设发展集团网站

代做毕设自己专门网站,黄岩城市建设发展集团网站,网站建设预计资金投入,ppt素材大全免费题目描述 平面上有 N 条直线, 其中第 i 条直线是 yAi​⋅xBi​ 。 请计算这些直线将平面分成了几个部分。 输入格式 第一行包含一个整数 N。 以下 N 行, 每行包含两个整数 Ai​,Bi​。 输出格式 一个整数代表答案。 输入输出样例 输入 #1复制 3 1 1 2 2 3 3 输出 #1…

题目描述

平面上有 N 条直线, 其中第 i 条直线是 y=Ai​⋅x+Bi​ 。

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

输入格式

第一行包含一个整数 N。

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

输出格式

一个整数代表答案。

输入输出样例

输入 #1复制

3
1 1
2 2
3 3

输出 #1复制

6

说明/提示

对于 50% 的评测用例, 1≤N≤4,−10≤Ai​,Bi​≤10。

对于所有评测用例, 1≤N≤1000,−10^5≤Ai​,Bi​≤10^5。

蓝桥杯 2020 第二轮省赛 B 组 I 题

解题思路:

这题我们首先需要定义一个包含两个元素的对象typedef pair<int int >PII;和typedef pair<double double>PDD;,这两个PII一个用来存储每次输入斜线的斜率k和截距b,PDD则是用来存储新添加的线的焦点坐标线x,y,      其次就是定义set<PII>lines,进行出入将输入的的k,b通过lines.insert(k,b)进行存储,“这里利用set容器的去重判断是否有不重复的线加入,不重复的线必定相交”,这就进入到Get_point 函数中进行

// 函数:计算当前直线与已存在的直线交点的个数
int get_point(int k, int b) {set<PDD> point;  // 用于存储当前直线与其他直线的交点 (x, y)// 遍历所有已存在的直线for (it = lines.begin(); it != lines.end(); it++) {int K = it->first;  // 已存在直线的斜率int B = it->second;  // 已存在直线的截距// 如果两条直线的斜率不同,则计算交点if (K != k) {double x = 1.0 * (B - b) / (k - K);  // 计算交点的 x 坐标double y = 1.0 * k * x + b;  // 计算交点的 y 坐标point.insert({x, y});  // 将交点加入集合,避免重复}}// 返回交点的数量return point.size();
}

如果有新的交点最终的平面被划分为:新的交点个数+1;依次累加

 C++ STL(标准模板库)中的 set 容器与迭代器 的使用。以下是对其中涉及到的知识点:

1. typedef 的使用

typedef 是 C++ 中的一个关键字,用于给现有的数据类型定义一个新的名字(别名)。这在代码中非常常见,尤其是在类型较长或者复杂时,使用 typedef 可以提高代码的可读性和简洁性。

示例:typedef pair<double, double> PDD;
  • pair<double, double>:是 C++ STL 中的一个模板类,它用来存储一对值,通常用于表示关联数据,如 (x, y) 坐标或 (key, value) 键值对。

    • double 类型表示浮点数,pair<double, double> 存储的是两个浮点数。

    • pair 是一个模板类,它可以接受任意类型作为参数,表示一对值。pair<double, double> 表示存储两个 double 类型的值。

  • typedef pair<double, double> PDD;:给 pair<double, double> 这个类型起了一个别名,叫做 PDD。以后我们可以直接使用 PDD 来代替 pair<double, double>,使代码更加简洁和易于理解。

    例子:

    PDD point = {3.5, 4.2};  // 创建一个 PDD 类型的变量,表示点 (3.5, 4.2)
    cout << point.first << ", " << point.second << endl;  // 输出 3.5, 4.2
    
示例:typedef pair<int, int> PII;
  • pair<int, int>:同样是 C++ STL 中的一个 pair 类型,表示一个包含两个 int 类型元素的对象。这里的 int 类型通常用于表示整数,比如直线的斜率 k 和截距 b

  • typedef pair<int, int> PII;:给 pair<int, int> 这个类型起了一个别名,叫做 PII。以后我们可以直接使用 PII 来代替 pair<int, int>,简化代码。

    例子:

    PII line = {2, 3};  // 创建一个 PII 类型的变量,表示直线 y = 2x + 3
    cout << line.first << ", " << line.second << endl;  // 输出 2, 3
    

2. set 容器

set 是 C++ STL(标准模板库)中的一个关联容器,它存储唯一的元素,并且这些元素会按照某种排序规则(默认是升序)自动排序。set 容器不允许有重复元素。

  • 基本特性

    • 自动排序set 内部的元素会根据 operator< (默认)或者自定义的比较规则进行自动排序。

    • 元素唯一性set 中的元素不能重复,若尝试插入重复的元素,插入操作将会失败。

  • 用法:在这段代码中,set<PII> 用来存储一组直线的斜率和截距,PIIpair<int, int> 类型,即每个元素是一个表示直线的 (k, b) 对。

    set<PII> lines;  // 声明一个 set 容器,用于存储 (k, b) 形式的直线
    
    • 通过 insert 方法将新的直线加入 set 中:

      lines.insert({2, 3});  // 插入直线 y = 2x + 3
      lines.insert({1, 1});  // 插入直线 y = x + 1
      
    • 插入时,set 会自动对直线的 (k, b) 进行排序,按照斜率 k 和截距 b 的升序排列。

    • 由于 set 中的元素是唯一的,如果你尝试插入一个重复的 (k, b),插入操作将会失败(即元素不会被加入)。

3. 迭代器:set<PII>::iterator it;

iterator 是一种遍历 C++ STL 容器的对象,用于访问容器中的元素。

  • set<PII>::iterator it 声明了一个迭代器 it,用于遍历 set<PII> 容器中的元素。这里,it 会指向 set 中每一个存储的 PII 类型的元素(即 pair<int, int>)。

  • 迭代器的常见用法是通过 it 来访问容器中的元素,通常使用 begin() 获取指向容器第一个元素的迭代器,使用 end() 获取指向容器最后一个元素之后的位置的迭代器。

    例如:

    for (it = lines.begin(); it != lines.end(); ++it) {cout << it->first << ", " << it->second << endl;  // 输出每条直线的 k 和 b
    }
    
    • it->first 表示当前直线的斜率 k

    • it->second 表示当前直线的截距 b

总结

  • typedef pair<double, double> PDD;typedef pair<int, int> PII; 通过 typedefpair 类型起了别名,使得代码更简洁,方便表示坐标和直线的斜率与截距。

  • set<PII> 是一个 set 容器,存储 PII 类型的元素,每个元素表示一条直线的斜率和截距。set 容器保证元素的唯一性,并且会自动按升序排列。

  • set<PII>::iterator it 是用于遍历 set<PII> 容器的迭代器,能够按顺序访问每条直线的斜率和截距。

这些概念和容器在实际编程中非常常见,能够帮助我们高效地处理和存储一组数据,尤其是需要自动排序且不允许重复的场景。

#include<bits/stdc++.h>
using namespace std;// 宏定义和类型别名
#define rep(x,y,z),for(int x=y;x<=z;x++)  // 用于简化循环结构
typedef pair<double, double> PDD;       // 用于表示交点的坐标对 (x, y)
typedef pair<int, int> PII;             // 用于表示直线的斜率 (k) 和截距 (b)
set<PII> lines;  // 用于存储平面上的所有直线,每个元素为一条直线的 (k, b)
set<PII>::iterator it;  // 用于遍历 'lines' 集合
int ans = 1;  // 初始区域数,平面没有直线时为 1
int n, k, b;  // n 表示直线数量,k 和 b 分别表示当前直线的斜率和截距// 函数:计算当前直线与已存在的直线交点的个数
int get_point(int k, int b) {set<PDD> point;  // 用于存储当前直线与其他直线的交点 (x, y)// 遍历所有已存在的直线for (it = lines.begin(); it != lines.end(); it++) {int K = it->first;  // 已存在直线的斜率int B = it->second;  // 已存在直线的截距// 如果两条直线的斜率不同,则计算交点if (K != k) {double x = 1.0 * (B - b) / (k - K);  // 计算交点的 x 坐标double y = 1.0 * k * x + b;  // 计算交点的 y 坐标point.insert({x, y});  // 将交点加入集合,避免重复}}// 返回交点的数量return point.size();
}int main() {cin >> n;  // 输入直线的数量// 循环处理每一条直线while (n--) {cin >> k >> b;  // 输入当前直线的斜率 k 和截距 bint cnt = lines.size();  // 获取当前已存在的直线数lines.insert({k, b});  // 将当前直线加入到集合中// 如果直线集合的大小发生变化,说明当前直线是新加入的if (cnt != lines.size()) {// 更新区域数:新增的直线会通过交点增加区域数ans += get_point(k, b) + 1;  // 增加的区域数 = 交点数 + 1}}// 输出最终的区域数cout << ans;return 0;
}


文章转载自:

http://C3B1dhvo.phxdc.cn
http://Ic3yEvA9.phxdc.cn
http://rmkORgls.phxdc.cn
http://peNSeSeQ.phxdc.cn
http://wD8Wcs5l.phxdc.cn
http://F8gyz3TZ.phxdc.cn
http://TLnlVgR6.phxdc.cn
http://smY0Dgu2.phxdc.cn
http://RiFz6sGj.phxdc.cn
http://FChztCww.phxdc.cn
http://drBVAZW9.phxdc.cn
http://CMDUITAP.phxdc.cn
http://9Wtu8LCp.phxdc.cn
http://UGtEFPuJ.phxdc.cn
http://glf4yqw1.phxdc.cn
http://xg1ukNcu.phxdc.cn
http://aIXRxkEn.phxdc.cn
http://aF4eTXkT.phxdc.cn
http://tJK2sEqM.phxdc.cn
http://ZbvgaJLD.phxdc.cn
http://mF9bAR2V.phxdc.cn
http://l1zLytYj.phxdc.cn
http://NpGNvrbI.phxdc.cn
http://DvaaAy52.phxdc.cn
http://xb3Ruxm4.phxdc.cn
http://AojJNdlY.phxdc.cn
http://9V4oLy5Q.phxdc.cn
http://7k2TpQhU.phxdc.cn
http://gSYRwxrL.phxdc.cn
http://9gYnp1nt.phxdc.cn
http://www.dtcms.com/wzjs/697085.html

相关文章:

  • 无障碍网站建设的摘要外发加工网会员
  • 网站建设 微信外贸网站建站公司
  • 一级a做爰片免费网站国语版的海外流量渠道
  • 上海营销型网站建设方案如何用wordpress挖比特币
  • 网站页面数量做网站多久才会有收益
  • 网站的查询系统怎么做详情页设计素材
  • 品牌的互联网推广seo文章范文
  • 企业网站托管一个月多少钱网站设计制作的服务和质量
  • 网站开发属于程序员吗威海网站建设
  • 优良的定制网站建设服务商爱上链外链购买交易
  • 网站不备案可以访问吗微网站用手机可以做吗
  • 网站建设服务都包含展示型手机网站
  • 6617网址导航彩票网站大全费县做网站
  • app开发与网站建设十大免费ppt课件网站
  • 视频收费网站怎么做互联网大厂设计哪家口碑好
  • 买手表网站免费会员管理软件
  • 汶上县住房和城乡规划建设局官方网站一个网站完整详细的seo优化方案
  • 网站开发形式python3的网站开发
  • 织梦网站专题模板下载专做水果店加盟的网站
  • 中国都在那个网站上做外贸网站跳出率什么意思
  • 网站 平均加载时间网站默认后台登陆
  • 烟台有没有做网站网络技术服务包括哪些范围
  • 网站平台建设实训心得体会平潭综合实验区建设工程网站
  • 互联网软件门户网站三一国际网站设计
  • 安卓盒子做网站苏州做网站的专业公司哪家好
  • 质监站网址广告图片网站源码
  • 北京智能模板建站兴义做网站的公司
  • wordpress子网站河南招标投标信息网
  • 东莞+网站+建设+汽车百度app打开
  • 申请域名网站价格wordpress 变小程序