P8720 [藍橋杯 2020 省 B2] 平面切分--set、pair

P8720 [藍橋杯 2020 省 B2] 平面切分--set、pair

      • 題目
  • 分析
    • 一、pair
    • 1.1pair與vector的區別
    • 1.2 兩者使用場景
    • 兩者組合使用
  • 二、set
    • 2.1核心特點
    • 2.2set的基本操作
    • 2.3 set vs unordered_set
    • 示例:統計唯一單詞數
      • 代碼

題目

在這里插入圖片描述

分析

大佬寫的很明白,看這兒

我講講其中用到的知識點吧!

一、pair

pair是 C++ 中的一個模板類,用于存儲兩個值(可以是不同類型)。

1、基本用法

#include <iostream>
#include <utility> // pair 的頭文件
using namespace std;int main() {pair<int, string> student = {18, "小明"}; // 存儲年齡和姓名cout << "年齡: " << student.first << endl;   // 輸出 18cout << "姓名: " << student.second << endl;  // 輸出 小明return 0;
}

2、核心特性:
pair 中的兩個值可以是不同類型(如 int 和 string)。
通過 .first 和 .second 訪問兩個值。

3、pair 的常見用途

1)存儲關聯數據
例如,存儲一個點的坐標 (x, y)

pair<double, double> point = {3.14, 2.71};

2)函數返回兩個值

pair<bool, int> checkValue(int x) {if (x > 0) return {true, x};else return {false, 0};
}

1.1pair與vector的區別

在這里插入圖片描述

1.2 兩者使用場景

對pair:

  1. 坐標 (x, y)。
  2. 一個學生的年齡和姓名 (int, string)

對vector:

需要存儲一組同類型數據,例如:
學生成績列表 [90, 85, 95]。
一組字符串 [“apple”, “banana”, “cherry”]。

兩者組合使用

vector<pair<double, double>> points;
points.push_back({1.0, 2.0}); // 添加點 (1.0, 2.0)
points.push_back({3.0, 4.0}); // 添加點 (3.0, 4.0)// 遍歷所有點
for (auto p : points) {cout << "x: " << p.first << ", y: " << p.second << endl;
}

二、set

set是 C++ 中的一個重要容器,用于存儲一組唯一且有序的元素。set 是 C++ 中的一個重要容器,用于存儲一組唯一且有序的元素。它的核心特性是自動去重自動排序,非常適合處理需要唯一性和順序性的數據。

2.1核心特點

在這里插入圖片描述

2.2set的基本操作

(1) 創建 set

#include <set>
using namespace std;set<int> s1;                // 默認升序排列的整數集合
set<string> s2;             // 字符串集合
set<pair<int, int>> s3;     // 存儲 pair 的集合

(2) 插入元素

s1.insert(3);       // 插入元素 3
s1.insert(1);       // 插入元素 1
s1.insert(2);       // 插入元素 2
s1.insert(3);       // 重復插入 3,會被自動忽略
// 此時 s1 = {1, 2, 3}

(3) 遍歷 set

//若set<pair<int,int>> s1;
//for(auto &i:s1) cout<<num;
for (auto num : s1) {cout << num << " ";   // 輸出 1 2 3
}

(4) 查找元素

auto it = s1.find(2);
if (it != s1.end()) {cout << "元素 2 存在!" << endl;
}

(5) 刪除元素

s1.erase(2);        // 刪除元素 2
s1.erase(s1.begin()); // 刪除第一個元素(即 1)

2.3 set vs unordered_set

在這里插入圖片描述

示例:統計唯一單詞數

#include <iostream>
#include <set>
using namespace std;int main() {set<string> uniqueWords;string word;while (cin >> word) {  // 輸入單詞,按 Ctrl+Z (Windows) 或 Ctrl+D (Mac) 結束uniqueWords.insert(word);}cout << "唯一單詞數: " << uniqueWords.size() << endl;return 0;
}
//輸入:apple banana apple cherry banana
//輸出:唯一單詞數: 3

代碼

#include <iostream>
#include <vector>
#include <set>
#include <string>
#include <algorithm>
#include <math.h>
#include <queue>
#include <climits>  // 包含INT_MAX常量
#include <cctype>
using namespace std;
int n;
typedef pair<long double, long double> DL;
set<DL> f;
DL a[1010];int main() {cin >> n;for (int i = 0; i < n; i++) {int k, b;cin >> k >> b;f.insert({k, b});}int cnt = 0;for (auto &i : f) {a[cnt++] = i;}int ans = 1;for (int i = 0; i < cnt; i++) {set<DL> d;for (int j = 0; j < i; j++) {long double k1 = a[i].first;long double b1 = a[i].second;long double k2 = a[j].first;long double b2 = a[j].second;if (k1 == k2)continue;//注意,交點的x,y值是浮點型,別定義成int了!!!long double x = (b2 - b1) / (k1 - k2);long double y = k1 * x + b1;d.insert({x, y});}ans += d.size() + 1;}cout << ans << endl;return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/72291.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/72291.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/72291.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

游戲引擎學習第128天

開始 然而&#xff0c;我們仍然有一些工作要做&#xff0c;渲染部分并沒有完全完成。雖然現在已經能夠運行游戲&#xff0c;而且幀率已經可以接受&#xff0c;但仍然有一些東西需要進一步完善。正在使用調試構建編譯版本&#xff0c;雖然調試版本的性能不如優化版本&#xff0…

多元數據直觀表示(R語言)

一、實驗目的&#xff1a; 通過上機試驗&#xff0c;掌握R語言實施數據預處理及簡單統計分析中的一些基本運算技巧與分析方法&#xff0c;進一步加深對R語言簡單統計分析與圖形展示的理解。 數據&#xff1a; 鏈接: https://pan.baidu.com/s/1kMdUWXuGCfZC06lklO5iXA 提取碼: …

第8天:面向對象編程入門 - 類與對象

第8天&#xff1a;面向對象編程入門 - 類與對象 一、&#x1f4da; 今日學習目標 &#x1f3af; 掌握類與對象的定義與使用&#x1f527; 理解封裝、繼承、多態三大特性&#x1f4a1; 完成銀行賬戶管理系統實戰&#x1f6e0;? 學會構造函數與析構函數的編寫 二、?? 核心知…

Hadoop之02:MapReduce編程模型

MapReduce編程模型 理解MapReduce編程模型獨立完成一個MapReduce程序并運行成功了解MapReduce工程流程掌握并描述出shuffle全過程&#xff08;面試&#xff09;獨立編寫課堂及作業中的MR程序理解并解決數據傾斜 1. MapReduce編程模型 Hadoop架構圖 Hadoop由HDFS分布式存儲、M…

2.7 大模型RAG內容安全合規檢查-大模型ACP模擬題-真題

單選題 在RAG應用中&#xff0c;輸入內容合規檢查的正確順序是&#xff1f; A. 先處理模型生成&#xff0c;后檢查用戶輸入 B. 先檢查用戶輸入&#xff0c;后處理模型生成 ? C. 僅檢查用戶輸入 D. 僅檢查模型輸出 解析&#xff1a;合規流程應優先過濾用戶輸入風險&#xff0…

mapbox基礎,使用geojson加載heatmap熱力圖層

????? 主頁: gis分享者 ????? 感謝各位大佬 點贊?? 收藏? 留言?? 加關注?! ????? 收錄于專欄:mapbox 從入門到精通 文章目錄 一、??前言1.1 ??mapboxgl.Map 地圖對象1.2 ??mapboxgl.Map style屬性1.3 ??heatmap熱力圖層樣式二、??使用geojs…

Deepseek Api Function Calling解析(tools、tool_calls)Deepseek函數調用流程圖、Python代碼示例

文章目錄 Function Calling介紹**核心原理**1. **動態擴展模型能力**2. **JSON結構化交互** **實現步驟**&#xff08;以支持Function Calling的模型為例&#xff09;1. **定義可用函數**2. **模型匹配與生成**3. **開發者執行函數**4. **結果反饋給模型** **DeepSeek R1的當前…

在2023idea中如何創建SpringBoot

目錄 一.下載和安裝 Maven 1.前往 https://maven.apache.org/download.cgi 下載最新版的 Maven 程序 2.將文件解壓到D:Program FilesApachemaven目錄 3.新建環境變量MAVEN_HOME&#xff0c;賦值D:Program FilesApachemaven 4.編輯環境變量Path&#xff0c;追加%MAVEN_HOME…

基于YOLO11深度學習的遙感視角農田檢測與分割系統【python源碼+Pyqt5界面+數據集+訓練代碼】深度學習實戰、目標分割、人工智能

《------往期經典推薦------》 一、AI應用軟件開發實戰專欄【鏈接】 項目名稱項目名稱1.【人臉識別與管理系統開發】2.【車牌識別與自動收費管理系統開發】3.【手勢識別系統開發】4.【人臉面部活體檢測系統開發】5.【圖片風格快速遷移軟件開發】6.【人臉表表情識別系統】7.【…

用冒泡排序法模擬qsort函數

目錄 1.前言 2.qsort函數的介紹 ?3.冒泡法回顧 4.模擬qsort---buble_sort 4.1 buble_sort格式 4.2 主函數&#xff0c;以int類型為例 4.3comp_int函數的功能設計 4.4 swap函數的功能設計 5. 總代碼概覽 1.前言 今天&#xff0c;小鄧兒帶大家用冒泡排序法來模擬一下qs…

全星研發項目管理APQP軟件系統:鑄造芯片集成電路產業研發體系化建設平臺

全星研發項目管理APQP軟件系統&#xff1a;鑄造芯片集成電路產業研發體系化建設平臺 在芯片集成電路行業&#xff0c;研發效率和質量直接決定了企業的核心競爭力。面對日益復雜的芯片設計、日益縮短的產品生命周期以及日益嚴格的質量要求&#xff0c;傳統的研發管理模式已難以滿…

《Python實戰進階》No 11:微服務架構設計與 Python 實現

第11集&#xff1a;微服務架構設計與 Python 實現 2025年3月3日更新了代碼和微服務運行后的系統返回信息截圖&#xff0c;所有代碼在 python3.11.5虛擬環境下運行通過。 微服務架構通過將復雜應用拆分為獨立部署的小型服務&#xff0c;顯著提升了系統的可擴展性和維護性。本集…

USRP7440-通用軟件無線電平臺

1、產品描述 USRP7440基于第三代XILINX Zynq UltraScale RFSoC架構&#xff0c;它將射頻ADC、DAC、ARM、FPGA等集成一體&#xff0c;瞬時帶寬可以達到2.5GHz&#xff0c;尤其適合于射頻直采應用&#xff0c;比如通信與雷達。 第一代RFSOC高達4GHz ? 8x 或 16x 6.554GSPS DAC…

1.2.3 使用Spring Initializr方式構建Spring Boot項目

本實戰概述介紹了如何使用Spring Initializr創建Spring Boot項目&#xff0c;并進行基本配置。首先&#xff0c;通過Spring Initializr生成項目骨架&#xff0c;然后創建控制器HelloController&#xff0c;定義處理GET請求的方法hello&#xff0c;返回HTML字符串。接著&#xf…

【小羊肖恩】小羊杯 Round 2 C+K

題目鏈接&#xff1a;https://ac.nowcoder.com/acm/contest/100672#question C.是毛毛蟲嗎&#xff1f; 思路&#xff1a; 其實很簡單&#xff0c;假設我們要滿足題目所給條件&#xff0c;那么這個毛毛蟲最壞情況下肯定是一條如下圖所示的無向圖 右端省略號為對稱圖形 &…

不謂俠--記錄

音樂《不謂俠》 衣襟上 別好了晚霞 余暉送我牽匹老馬 正路過 煙村里人家 恰似當年故里正飛花 醉過風 喝過茶 尋常巷口尋個酒家 在座皆算老友 碗底便是天涯 天涯遠 無處不為家 蓬門自我也像廣廈 論意氣 不計多或寡 占三分便敢自稱為俠 刀可捉 拳也耍 偶爾閑來…

不同規模企業如何精準選擇AI工具: DeepSeek、Grok 和 ChatGPT 三款主流 AI 工具深度剖析與對比

本文深入探討了最近國內外主流的 DeepSeek、Grok 和 ChatGPT 三款主流 AI 工具的技術細節、性能表現、應用場景及局限性&#xff0c;并從技術能力、功能需求、成本預算、數據安全和合規以及服務與支持五個關鍵維度&#xff0c;詳細分析了不同規模企業在選擇 AI 工具時的考量因素…

Vue核心知識:KeepLive全方位分析

KeepAlive 是 Vue 組件中的一個重要功能&#xff0c;主要用于緩存組件&#xff0c;以提升性能和用戶體驗。 目錄 一、KeepAlive 基本概念二、KeepAlive 的核心原理三、KeepAlive 關鍵屬性解析1. include&#xff1a;指定需要緩存的組件2. exclude&#xff1a;指定不需要緩存的組…

【電力——tarjan割點,求連通塊】

題目 分析 這是割點的板子 代碼 #include <bits/stdc.h> using namespace std;const int N 1e410; const int M 3e410;int h[N], e[M], ne[M], idx; int dfn[N], low[N], tot; int root, ans;void add(int a, int b) // 添加一條邊a->b {e[idx] b, ne[idx] h…

【HTTP】解碼網絡通信的奧秘:HTTP,IP 地址,端口,DNS及NAT地址轉換的協同之舞

引言 每文學習一句詩&#xff1a;行一棋不足以見智&#xff0c;彈一弦不足以見悲 ——《淮南子說林訓》 譯文&#xff1a;走一個棋子&#xff0c;不足以現出智慧&#xff1b;彈一根琴弦&#xff0c;不能夠使人產生悲哀之情。 自述&#xff1a;互聯網現如今已經成為每個人都離不…