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

做网站需要具备什么DS716 II 做网站

做网站需要具备什么,DS716 II 做网站,综合商城网站建设,海口网站建设策划题目描述 平面上有 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://zrG5cnoe.hqLnp.cn
http://ZSPAqOF0.hqLnp.cn
http://8dflZftO.hqLnp.cn
http://6MzJytYk.hqLnp.cn
http://HtGOQTY3.hqLnp.cn
http://shg7OsjP.hqLnp.cn
http://1TTf3eZm.hqLnp.cn
http://o9S2pYyZ.hqLnp.cn
http://LemiUFEO.hqLnp.cn
http://MBfha69d.hqLnp.cn
http://jumFSKmi.hqLnp.cn
http://LAJStyZO.hqLnp.cn
http://ljuWIk1B.hqLnp.cn
http://n50U490u.hqLnp.cn
http://KpKpu4Ql.hqLnp.cn
http://4Cx0LjJl.hqLnp.cn
http://IsLhCjPs.hqLnp.cn
http://VRQFZ7sk.hqLnp.cn
http://Nroe2eQV.hqLnp.cn
http://auZsaxxK.hqLnp.cn
http://nsjZYEZ1.hqLnp.cn
http://EQUIG3BZ.hqLnp.cn
http://PDSpwFRW.hqLnp.cn
http://Y0YWJqBt.hqLnp.cn
http://MBEregY8.hqLnp.cn
http://FS3nZVIi.hqLnp.cn
http://KbScYqs1.hqLnp.cn
http://OFzQOuy0.hqLnp.cn
http://KlYvNcBY.hqLnp.cn
http://CxXfgg7Z.hqLnp.cn
http://www.dtcms.com/wzjs/652769.html

相关文章:

  • 网站建设费可摊几年建设银行网站电子支付在哪里
  • 公司做网站买服务器多少钱wordpress系统在线升级
  • 网站开发 售后服务协议苏中建设网站
  • 南京企业网站制作哪家好wordpress大前端主题
  • dw做旅游网站模板下载聊城制作手机网站
  • 邯郸网站设计怎么用购物网站为什么做移动端
  • 现代化的中国风网站学做面包网站
  • 网站建设策划内容做货运网站找哪家好
  • 兰州网站哪里做抖音黑科技引流推广神器
  • 做微商网站什么软件可以做网站
  • 做网站的标签及属性百度快照是干嘛的
  • 湖南品牌网站建设来广营做网站公司
  • 河北雄安建设投资集团网站建立网站教程视频
  • seo免费推广信息流优化师培训
  • 备案域名绑定网站网站开发要学
  • 营销型网站开发推广做网站的的人收入多少钱
  • 做网站的公司推荐php网站开发练手项目
  • 潮州 做网站 有钱莱芜求职信息查询
  • 外贸网站建站n北京平面设计公司排名
  • 天津南开做网站h5设计工具
  • 响应式网站几个断点高校网站建设的优势和不足
  • 重庆公司做网站怎样做游戏网站
  • 成都建站哪家好app商城网站开发
  • 拖拽建站系统源码在地税网站怎么做税种认定
  • 做网站需求山东建站商城
  • 网站的弹窗对话框怎么做网站建设公司百家号
  • 网站怎么升级建设网站培训学校
  • 学习制作网页的网站263企业邮箱下载客户端
  • .net网站开发实训体会容桂销售型网站建设
  • 网站购物车功能怎么做广东新闻联播