第4次課 前綴和與差分 A

課堂學習

前綴和數組

前1個收購點:3箱
前2個收購點:3+2=5箱
前3個收購點:3+2+5=10箱
以此類推…

數組a存儲10個收購點的箱數。
收購點編號從1~10,數組下標也從1開始使用。
下標0位置直接賦值0

#include<bits/stdc++.h>
using namespace std;
int main(){//創建并初始化數組a:從下標1開始用,下標0賦值0int a[11]={0,3,2,5,6,6,1,4,1,7,3};//創建并初始化數組sint s[11]={};//1.初始條件:s[1]=a[1]s[1]=a[1];//2.根據遞推關系推導前綴和:s[i]=s[i-1]+a[i]  (i>=2)for(int i=2;i<=10;i++){s[i]=s[i-1]+a[i];}//3.循環輸出前綴和for(int i=1;i<=10;i++){cout<<s[i]<<" ";}return 0;
}

課堂訓練

2915?計算區間和

描述

輸入?n?個整數,再輸入m個區間,每個區間的起點下標L,終點下標R。
對于每個區間,輸出n個整數中從下標L到下標R的區間和。

輸入描述

第一行包括兩個整數n和m。(1≤n,m≤500000)
第二行包括n個整數。(1≤整數≤100)
接下來有m行,每行包含兩個整數L和R,表示區間范圍。(0<L≤R≤n)

輸出描述

輸出有m行,每行一個整數,表示一個區間和。

樣例輸入 1?

10 3
2 1 3 6 4 20 15 10 4 11
3 7
1 9
5 8

樣例輸出 1?

48
65
49

簡單分析

//2915 計算區間和
#include<bits/stdc++.h>//萬能頭文件
using namespace std;
const int N=500010;
int a[N],s[N];//a是原數組,s是前綴和數組
int main(){//輸入數據int n,m;cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];}s[1]=a[1];//求出任意位置的前綴和for(int i=2;i<=n;i++){s[i]=s[i-1]+a[i];}int L,R;for(int i=1;i<=m;i++){cin>>L>>R;cout<<s[R]-s[L-1]<<endl;}return 0;
}

練一練:?

總結:前綴和

③前綴和優勢:可以1步減法算出區間和。
下標[L~R]的區間和=s[R]-s[L-1]
④前綴和使用場景:多次計算區間和。
注意:區間起點L一般從1開始。
如果L=0,就會導致s[L-1]為s[-1]的情況。
?

2916?K個元素和

描述

輸入n個整數,求出所有連續且長度為K的元素總和。

輸入描述

第一行包括兩個整數n和K。(1≤K≤n≤500000)
第二行包括n個整數。(1≤整數≤100)

輸出描述

輸出一行,包含若干數字,每個數字表示1個元素總和。

樣例輸入 1?

10 3
2 1 3 6 4 5 8 7 0 9

樣例輸出 1?

6 10 13 15 17 20 15 16

提示

根據樣例得知,在10個數字中求連續且長度為3的元素總和,依次得到:
2+1+3=6;1+3+6=10;3+6+4=13;6+4+5=15;
4+5+8=17; 5+8+7=20; 8+7+0=15; 7+0+9=16。

#include<bits/stdc++.h>
using namespace std;
int a[500010]={};//原數組
int s[500010]={};//前綴和數組
int main(){int n,K;cin>>n>>K;//1.輸入n個元素; 注意從下標1開始使用for(int i=1;i<=n;i++){cin>>a[i];}//2.循環推導前綴和s[1]=a[1];for(int i=2;i<=n;i++){s[i]=s[i-1]+a[i];}//3.遍歷所有長度K的區間;計算輸出區間和for(int i=K;i<=n;i++){cout<<s[i]-s[i-K]<<" ";}return 0;
}

4434?m倍的區間

描述

輸入?n?個整數,在所有連續且長度為?K?的區間中,統計有多少區間和是?m?的倍數。

輸入描述

第一行包括三個整數?n,K?和?m。
第二行包括?n?個整數。

輸出描述

輸出一個整數,表示有多少個區間和是?m?的倍數。

樣例輸入 1?

5 3 2
2 1 3 6 4

樣例輸出 1?

2

提示

數據范圍與提示

1≤m≤K≤n≤500000,1≤整數≤100
長度為3的區間有:2 1 3,1 3 6,3 6 4。
區間2 1 3和1 3 6的和是2的倍數。

#include<bits/stdc++.h>
using namespace std;
int a[500010]={};//原數組
int s[500010]={};//前綴和數組
int main(){int n,k,m;cin>>n>>k>>m;for(int i=1;i<=n;i++){cin>>a[i];}//推導前綴和數組s[1]=a[1];for(int i=2;i<=n;i++){s[i]=s[i-1]+a[i];}int ans=0;//遍歷所有長度K的區間for(int i=k;i<=n;i++){int t=s[i]-s[i-k]; //計算區間和if(t%m==0){ //判斷區間和是m倍數ans++;}}cout<<ans;return 0;
}

4433?最大區間和

描述

輸入?n?個整數,在所有連續且長度為K的區間中,找到最大的區間和。

輸入描述

第一行包括兩個整數?n?和?K。
第二行包括?n?個整數。

輸出描述

輸出兩行。第一行一個整數,表示最大區間和。
第二行兩個整數,表示最大區間和的起點下標和終點下標。

樣例輸入 1?

10 3
2 1 3 6 4 5 8 7 5 3

樣例輸出 1?

20
6 8

提示

數據范圍與提示

1≤K≤n≤500000,1≤整數≤100
樣例中最大區間下標范圍:6~8,區間和為20。
注意:如果多個區間和同為最大,取第1個區間。

#include<bits/stdc++.h>
using namespace std;
int a[500010]={};//原數組
int s[500010]={};//前綴和數組
int main(){int n,K;cin>>n>>K;//1.輸入n個元素; 注意從下標1開始使用for(int i=1;i<=n;i++){cin>>a[i];}//2.循環推導前綴和s[1]=a[1];for(int i=2;i<=n;i++){s[i]=s[i-1]+a[i];}//3.遍歷所有長度K的區間//先計算區間和,再取最大的區間和int res=0;//最大區間和int b,e;//起點下標b,終點下標efor(int i=K;i<=n;i++){//終點下標:i//起點的前1個下標:i-Kint t=s[i]-s[i-K];if(t>res){res=t;b=i-K+1;e=i;}}//4.輸出結果cout<<res<<endl;cout<<b<<" "<<e<<endl;return 0;
}

差分

練一練?

差分性質

差分理論?

4436?混合操作

描述

輸入?n?個整數,計算區間和。

輸入描述

第一行包括一個整數?n。
第二行包括?n?個整數。
第三行包括一個整數?m,表示需進行?m?次操作。
操作包括兩種:1?表示計算區間和;2?表示修改?n?個整數的其中?1?個。(操作?2?只有?1?次)
接著有?m?行,每行表示?1?次操作:
如果第一個數字為?1,后面跟著區間的起點?L,終點?R;
如果第一個整數為?2,后面跟著被修改整數所在位置?k,修改為整數?num。

輸出描述

輸出?m?1?行,每行一個整數,表示一個區間和。

樣例輸入 1?

10
2 1 3 6 4 20 15 10 4 11
5
1 3 7
1 4 9
2 8 20
1 7 10
1 5 8

樣例輸出 1?

48
59
50
59

提示

數據范圍與提示

1≤n≤100000,1≤整數≤100,1≤m≤100000
對?10?個整數做?5?次操作:
第1次:計算[3~7]區間和,結果48;
第2次:計算[4~9]區間和,結果59;
第3次:修改第8個數字10,修改為20;
第4次:計算[7~10]區間和,結果50;
第5次:計算[5~8]區間和,結果59。

#include<bits/stdc++.h>
using namespace std;
int a[100010]={}; //原數組
int s[100010]={}; //前綴和數組
int main(){int n,m;cin>>n;//1、輸入n個整數for(int i=1;i<=n;i++)	cin>>a[i];//2、推導前綴和s[1]=a[1];for(int i=2;i<=n;i++)	s[i]=s[i-1]+a[i];//3、遍歷m次操作,判斷并處理cin>>m;int c;//操作標記int L,R;int k,num;for(int i=1;i<=m;i++){ //m次操作cin>>c;if(c==1){ //計算區間和cin>>L>>R;cout<<s[R]-s[L-1]<<endl;}else{ //修改一個整數cin>>k>>num;a[k]=num; //元素a[k]賦值num//重新計算前綴和s[1]=a[1];for(int j=2;j<=n;j++)	s[j]=s[j-1]+a[j];}}return 0;
}

?課后作業

2919?最要強的飛行員

描述

在一次電子模擬作戰中,假設敵方設置了一條防線,防線上依次有n個據點。每個據點都有一個牢固值,數值越大表示越牢固。
司令部計劃對n個據點進行m輪攻擊,每輪攻擊一段連續范圍的據點,每段范圍上的據點都存在一個總牢固值。
有一位最要強的飛行員,申請在總牢固值最大的一輪出戰。
請你編寫程序找到最大的總牢固值。

輸入描述

第一行包括兩個整數n和m。(1≤n,m≤500000)
第二行包括n個整數,依次表示n個據點的牢固值。(1≤整數≤100)
接下來m行,每行兩個正整數L和R,表示一輪范圍。(1≤L≤R≤n)

輸出描述

輸出一個整數,表示最大的總牢固值。

樣例輸入 1?

7 2
2 10 5 3 6 4 9
3 5
6 7

樣例輸出 1?

14

提示

輸入樣例中m=2,表示有2輪攻擊。
第1輪攻擊從3~5,總牢固值5+3+6=14。
第2輪攻擊從6~7,總牢固值4+9=13。
兩輪攻擊總牢固值最大14。

#include<bits/stdc++.h>
using namespace std;
int a[500001],s[500001];
int main(){int n,m;int L,R,res=0;//res存儲最大總牢固值cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];//輸入據點牢固值s[i]=s[i-1]+a[i];//計算該據點前綴和}for(int i=1;i<=m;i++){cin>>L>>R;//輸入一輪打擊范圍if((s[R]-s[L-1])>res){ //判斷當前據點總牢固值是否大于resres=s[R]-s[L-1];}}cout<<res;//輸出最大總牢固值resreturn 0;
}

2939?紙牌PK

描述

小童和小程每次遇到誰優先的問題,都會采用抽一張紙牌比大小的方式決定,總采用這種方式,難免感到無趣。
小童今天突發奇想,修改了抽紙牌的方式。修改后的方式是這樣的:兩人輪流在n張紙牌中抽取m輪,每輪抽取連續一定范圍的紙牌,計算m輪抽取中所有牌面上的數字總和,最終誰的數字總和大,誰獲得優先權。

輸入描述

第一行包括兩個整數n和m。(1≤m,n≤500000)(1≤m≤100)
第二行包括n個整數,依次表示n張紙牌上的數字。(1≤整數≤100)
接下來m行,每行兩個正整數L和R,表示小童每輪抽牌的范圍。
接下來m行,每行兩個正整數L和R,表示小程每輪抽牌的范圍。(1≤L≤R≤n)

輸出描述

輸出一個字符,小童數字總和大,輸出T;小程數字總和大,輸出C;總和相等輸出D。

樣例輸入 1?

7 3
2 10 5 3 6 4 9
3 5
6 7
2 7
2 6
1 2
1 6

樣例輸出 1?

C

提示

輸入樣例中m=3,表示兩人各自抽3輪范圍紙牌。
小童第1輪:抽取第3~5張紙牌,該輪數字和5+3+6=14。
小童第2輪:抽取第6~7張紙牌,該輪數字和4+9=13。
小童第3輪:抽取第2~7張紙牌,該輪數字和10+5+3+6+4+9=37。
小童數字總和14+13+37=64。
小程第1輪:抽取第2~6張紙牌,該輪數字和10+5+3+6+4=28。
小程第2輪:抽取第1~2張紙牌,該輪數字和2+10=12。
小程第3輪:抽取第1~6張紙牌,該輪數字和2+10+5+3+6+4=30。
小程數字總和28+12+30=70。
最終小程數字總和大于小童,輸出字符C。

#include<bits/stdc++.h>
using namespace std;
int a[500001],s[500001];
int main(){int n,m;long long sum_t=0,sum_c=0;int L,R;cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];s[i]=s[i-1]+a[i]; //計算前綴和}for(int i=1;i<=m;i++){cin>>L>>R;sum_t=sum_t+(s[R]-s[L-1]); //用前綴和計算范圍紙牌總和;并累加}for(int i=1;i<=m;i++){cin>>L>>R;sum_c=sum_c+(s[R]-s[L-1]); //用前綴和計算范圍紙牌總和;并累加}if(sum_t>sum_c){//小童m輪紙牌總數大cout<<'T';}else if(sum_t<sum_c){//小程m輪紙牌總數大cout<<'C';}else{//平局cout<<'D';}return 0;
}

2918?物資準備

描述

某國測試一種新型火炮,對一條路線進行打擊。
這條路線上有n個據點,每個據點都有一個牢固值,1發炮彈消耗1點牢固值,假設牢固值為10的據點,需要10發炮彈摧毀。
現在共有m門火炮參與測試,每門火炮摧毀一段連續范圍的據點。
由于指揮混亂,m門火炮發射前沒有溝通,可能存在炮彈浪費的情況。
問合計需要準備多少發炮彈。

輸入描述

輸入描述
第一行包括兩個整數n和m。(1≤n,m≤100000)
第二行包括n個整數,依次表示n個據點的牢固值。(1≤整數≤100)
接下來m行,每行兩個正整數L和R,表示一門火炮的摧毀范圍。(1≤L≤R≤n)

輸出描述

輸出一個整數,表示炮彈總數。

樣例輸入 1?

7 2
2 10 5 3 6 4 9
3 5
6 7

樣例輸出 1?

27

樣例輸入 2?

5 3
4 2 10 3 7
1 2
4 5
1 3

樣例輸出 2?

32

提示

樣例1解釋:

路線上有?7?個據點,2?門火炮參與。
7個據點的牢固值依次為:2,10,5,3,6,4,9。
第1門火炮摧毀第3,4,5據點,需發射炮彈數量:5+3+6=14。
第2門火炮摧毀第6,7據點,需發射炮彈數量:4+9=13。
合計需要準備?27?發炮彈。

樣例2解釋:

路線上有?5?個據點,3?門火炮參與。
5個據點的牢固值依次為:4,2,10,3,7。
第1門火炮摧毀第1,2據點,需發射炮彈數量:4+2=6。
第2門火炮摧毀第4,5據點,需發射炮彈數量:3+7=10。
第3門火炮摧毀第1,2,3據點,需發射炮彈數量:4+2+10=16。(無需考慮炮彈浪費的情況)
合計需要準備?32?發炮彈。

#include<bits/stdc++.h>
using namespace std;
int a[100010]; //原數據
int s[100010]; //前綴和
int main(){int n,m;cin>>n>>m;//輸入原數據for(int i=1;i<=n;i++)	cin>>a[i];//計算前綴和ss[1]=a[1];for(int i=2;i<=n;i++)	s[i]=s[i-1]+a[i];//總數 注意總數會超過int范圍,用long long類型long long sum=0;for(int i=1;i<=m;i++){int L,R;cin>>L>>R;sum+=(s[R]-s[L-1]);}cout<<sum;return 0;
}

3212?有趣的求和

描述

給出n個數排成一排,你可以任意選出連續的L個數字求和。例如:
n=5 L = 4
-20 30 80 50 40
連續取L個數的方法有兩種。
1、取前4個數-20 30 80 50 和為140。
2、取后4個數30 80 50 40 和為200。
請你找出最大和是多少,上例結果應該為200。

輸入描述

第1行為兩正整數n和L表示數列數字個數和取的長度;
第2行n個整數空格分隔,表示數列中的每個元素,數字在-100到100之間的整數。

輸出描述

輸出一個整數,最大的數字和。

樣例輸入 1?

5 4
-20 30 80 50 40

樣例輸出 1?

200

提示

數據范圍與提示

30%的數據1≤L≤n≤100。
50%的數據1≤L≤n≤10000。
100%的數據 1≤L≤n≤1000000。

#include<bits/stdc++.h>
using namespace std;
int a[1000001],s[1000001];
int main(){int n,l;cin>>n>>l;for(int i=1;i<=n;i++)	cin>>a[i];//計算前綴和s[1]=a[1];for(int i=2;i<=n;i++) s[i]=s[i-1]+a[i];//創建變量存儲最大數字和//初始化成比可能出現的最小值還小int max1=-1000000000;for(int i=l;i<=n;i++){if(max1<s[i]-s[i-l])	max1=s[i]-s[i-l];}cout<<max1;return 0;
}

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

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

相關文章

MySQL部分總結

mysql學習筆記&#xff0c;如有不足還請指出&#xff0c;謝謝。 外連接&#xff0c;內連接&#xff0c;全連接 外連接&#xff1a;左外、右外 內連接&#xff1a;自己和自己連接 全連接&#xff1a;左外連接右外鏈接 mysql unique字段 unique可以在數據庫層面避免插入相同…

Spring MVC 請求處理流程詳解

步驟1&#xff1a;用戶發起請求 所有請求首先被 DispatcherServlet&#xff08;前端控制器&#xff09;攔截&#xff0c;它是整個流程的入口。 DispatcherServlet 繼承自 HttpServlet&#xff0c;通過 web.xml 或 WebApplicationInitializer 配置映射路徑&#xff08;如 /&…

Vue 高級技巧深度解析

Vue 高級技巧深度解析 mindmaproot(Vue2高級技巧)組件通信EventBusprovide/inject$attrs/$listeners性能優化虛擬DOM優化函數式組件按需加載狀態管理Vuex模塊化持久化存儲嚴格模式高級指令自定義指令動態組件異步組件渲染控制作用域插槽渲染函數JSX支持一、組件通信的進階之道 …

2024年React最新高頻面試題及核心考點解析,涵蓋基礎、進階和新特性,助你高效備戰

以下是2024年React最新高頻面試題及核心考點解析&#xff0c;涵蓋基礎、進階和新特性&#xff0c;助你高效備戰&#xff1a; 一、基礎篇 React虛擬DOM原理及Diff算法優化策略 ? 必考點&#xff1a;虛擬DOM樹對比&#xff08;同級比較、Key的作用、組件類型判斷&#xff09; ?…

Zookeeper單機三節點集群部署(docker-compose方式)

前提: 服務器需要有docker鏡像zookeeper:3.9.3 或能連網拉取鏡像 服務器上面新建文件夾: mkdir -p /data/zk-cluster/{data,zoo-cfg} 創建三個zookeeper配置文件zoo1.cfg、zoo2.cfg、zoo3.cfg,配置文件里面內容如下(三個文件內容一樣): tickTime=2000 initLimit=10 …

面試題之數據庫-mysql高階及業務場景設計

最近開始面試了&#xff0c;410面試了一家公司 針對自己薄弱的面試題庫&#xff0c;深入了解下&#xff0c;也應付下面試。在這里先祝愿大家在現有公司好好沉淀&#xff0c;定位好自己的目標&#xff0c;在自己的領域上發光發熱&#xff0c;在自己想要的領域上&#xff08;技術…

數字內容體驗案例解析與行業應用

數字內容案例深度解析 在零售行業頭部品牌的實踐中&#xff0c;數字內容體驗的革新直接推動了用戶行為模式的轉變。某國際美妝集團通過搭建智能內容中臺&#xff0c;將產品信息庫與消費者行為數據實時對接&#xff0c;實現不同渠道的動態內容生成。其電商平臺首頁的交互式AR試…

4.15 代碼隨想錄第四十四天打卡

99. 島嶼數量(深搜) (1)題目描述: (2)解題思路: #include <iostream> #include <vector> using namespace std;int dir[4][2] {0, 1, 1, 0, -1, 0, 0, -1}; // 四個方向 void dfs(const vector<vector<int>>& grid, vector<vector<bool&g…

【三維重建與生成】GenFusion:SVD統一重建和生成

標題:《GenFusion: Closing the Loop between Reconstruction and Generation via Videos》 來源&#xff1a;西湖大學&#xff1b;慕尼黑工業大學&#xff1b;上海科技大學&#xff1b;香港大學&#xff1b;圖賓根大學 項目主頁&#xff1a;https://genfusion.sibowu.com 文章…

Quipus,LightRag的Go版本的實現

1 項目簡介 奇譜系統當前版本以知識庫為核心&#xff0c;基于知識庫可以快構建自己的問答系統。知識庫的Rag模塊的構建算法是參考了LightRag的算法流程的Go版本優化實現&#xff0c;它可以幫助你快速、準確地構建自己的知識庫&#xff0c;搭建屬于自己的AI智能助手。與當前LLM…

mysql 8 支持直方圖

mysql 8 可以通過語句 ANALYZE TABLE table_name UPDATE HISTOGRAM ON column_name WITH 10 BUCKETS; 生產直方圖&#xff0c;解決索引數據傾斜的問題 在之前的mysql5.7的版本上是沒有的 參考&#xff1a; MySQL :: MySQL 8.0 Reference Manual :: 15.7.3.1 ANALYZE TABL…

力扣-hot100(最長連續序列 - Hash)

128. 最長連續序列 中等 給定一個未排序的整數數組 nums &#xff0c;找出數字連續的最長序列&#xff08;不要求序列元素在原數組中連續&#xff09;的長度。 請你設計并實現時間復雜度為 O(n) 的算法解決此問題。 示例 1&#xff1a; 輸入&#xff1a;nums [100,4,200,…

RCEP框架下eBay日本站選品戰略重構:五維解析關稅紅利機遇

2024年RCEP深化實施背景下&#xff0c;亞太跨境電商生態迎來結構性變革。作為協定核心成員的日本市場&#xff0c;其跨境電商平臺正經歷新一輪價值重構。本文將聚焦eBay日本站&#xff0c;從政策解讀到實操路徑&#xff0c;系統拆解跨境賣家的戰略機遇。 一、關稅遞減機制下的…

Unity開發框架:輸入事件管理類

開發程序的時候經常會出現更改操作方式的情況&#xff0c;這種時候就需要將操作模式以事件的方式注冊到管理輸入事件的類中&#xff0c;方便可以隨時切換和調用 using System; using System.Collections.Generic; using UnityEngine;/// <summary> /// 記錄鼠標事件的的…

【kind管理腳本-2】腳本使用說明文檔 —— 便捷使用 kind 創建、刪除、管理集群腳本

當然可以&#xff0c;以下是為你這份 Kind 管理腳本寫的一份使用說明文檔&#xff0c;可作為 README.md 或內部文檔使用&#xff1a; &#x1f680; Kind 管理腳本說明文檔 本腳本是一個便捷的工具&#xff0c;幫助你快速創建、管理和診斷基于 Kind (Kubernetes IN Docker) 的…

opencv常用邊緣檢測算子示例

opencv常用邊緣檢測算子示例 1. Canny算子2. Sobel算子3. Scharr算子4. Laplacian算子5. 對比 1. Canny算子 從不同視覺對象中提取有用的結構信息并大大減少要處理的數據量的一種技術&#xff0c;檢測算法可以分為以下5個步驟&#xff1a; 噪聲過濾&#xff08;高斯濾波&…

Token安全存儲的幾種方式

文章目錄 1. EncryptedSharedPreferences示例代碼 2. SQLCipher示例代碼 3.使用 Android Keystore加密后存儲示例代碼1. 生成密鑰對2. 使用 KeystoreManager 代碼說明安全性建議加密后的幾種存儲方式1. 加密后采用 SharedPreferences存儲2. 加密后采用SQLite數據庫存儲1. Token…

MySQL數據庫表的約束類型和使用

表完整約束性 約束條件 說明 PRIMARY KEY (PK) 標識該字段為該表的主鍵&#xff0c;是可以唯一的標識記錄&#xff0c;不可以為空 UNIQUENOT NULL (primary key) FOREIGN KEY (FK) 標識該字段為該表的外鍵&#xff0c;實現表與表之間的關聯 (foreign key) NULL …

Java 線程詳解 --線程概念、線程池、線程同步與安全機制

一、Java線程的概念 Java 線程的本質&#xff1a;每個線程對應一個操作系統線程&#xff0c;由操作系統調度。JVM 通過調用操作系統 API&#xff08;如 Linux 的 pthread&#xff09;創建線程。 關鍵點&#xff1a; ? 用戶態與內核態&#xff1a;線程調度依賴操作系統&#…

PCL 計算點云至平面距離(SIMD加速)

文章目錄 一、簡介二、實現代碼三、實現效果一、簡介 SIMD 是一種并行計算模型,其中“單指令”表示處理器在同一時刻執行相同的指令,而“多數據”則表示同一條指令操作多個數據元素(如數組中的多個元素或矩陣中的多個元素)。與傳統的串行計算不同,SIMD 能夠同時處理多個數…