題單【排序】

P1271 【深基9.例1】選舉學生會

P1271 【深基9.例1】選舉學生會 - 洛谷

【方法一】快速排序

使用sort(),注意數組的范圍!!!

#include<bits/stdc++.h>
using namespace std;int a[2000000],n,m;int main()
{cin>>n>>m;for(int i=0;i<m;i++){cin>>a[i];}sort(a,a+m);for(int i=0;i<m;i++){cout<<a[i]<<" ";}return 0;
}

【方法二】桶排序

桶排序(Bucket Sort)是一種基于分配策略的排序算法,其工作原理是將數組分到有限數量的桶子里,然后對每個桶內的元素進行排序(可能再使用其他排序算法或是以遞歸方式繼續使用桶排序),最后合并所有已排序的桶,從而完成整個數據集的排序。

#include<bits/stdc++.h>
using namespace std;int main()
{int n,m,p;cin>>n>>m;int a[1000]={0};        // 以候選人作為“桶”for(int i=0;i<m;i++){cin>>p;a[p]++;}for(int i=1;i<=n;i++){for(int j=0;j<a[i];j++){cout<<i<<' ';}}return 0;
}

P1923 【深基9.例4】求第 k 小的數

P1923 【深基9.例4】求第 k 小的數 - 洛谷

【方法一】快速排序,直接輸出

但是無法通過所有的測試點!!!

#include<bits/stdc++.h>
using namespace std;int main()
{int n,k;cin>>n>>k;int a[5000001]={0};for(int i=0;i<n;i++){cin>>a[i];}sort(a,a+n);cout<<a[k];return 0;
}

【方法二】根據快排的思想進行二分

在原二分的基礎上可以進行修改:因為每次遞歸都會將數組劃分為三部分,而答案只會在這三部分中的一個,不需要再對其他部分進行搜索,從而達到優化時間復雜度的效果。

#include<bits/stdc++.h>
using namespace std;int x[5000005],k;void qsort(int l,int r)
{int i=l,j=r,mid=x[(l+r)/2];do{while(x[j]>mid){j--;}while(x[i]<mid){i++;}if(i<=j){swap(x[i],x[j]);i++;j--;}}while(i<=j);//快排后數組被劃分為三塊: l<=j<=i<=rif(k<=j){qsort(l,j);			//在左區間只需要搜左區間}else if(i<=k){qsort(i,r);			//在右區間只需要搜右區間}else 					//如果在中間區間直接輸出{printf("%d",x[j+1]);exit(0);}
}int main()
{int n;scanf("%d%d",&n,&k);for(int i=0;i<n;i++){scanf("%d",&x[i]);}qsort(0,n-1);
}

【方法三】利用?nth_element

在 STL 里有?nth_element 函數。它的用法是?nth_element(a+x,a+x+y,a+x+len)。

執行之后數組?a?下標?x?到?x+y?1?的元素都小于?a[x+y],下標?x+y+1?到?x+len?1?的元素 都大于?a[x+y],但不保證數組有序。此時?a[x+y]?就是數組區間?x?到?x+len?1?中第?y?小的數,當然也可以自己定義?cmp?函數。

#include<bits/stdc++.h>
using namespace std;int x[5000005],k;int main()
{int n;scanf("%d%d",&n,&k);for(int i=0;i<n;i++){scanf("%d",&x[i]);}nth_element(x,x+k,x+n);printf("%d",x[k]);
}

P1781 宇宙總統

P1781 宇宙總統 - 洛谷

#include<bits/stdc++.h>
using namespace std;int main()
{int n;cin>>n;int num;string a[21];string max;cin>>max;for(int i=1;i<n;i++){cin>>a[i];if((a[i].length()>max.length()) || (a[i].length()==max.length() && a[i]>max)){max=a[i];num=i+1;}}cout<<num<<endl;cout<<max<<endl;return 0;
}

P2676 [USACO07DEC] Bookshelf B

P2676 [USACO07DEC] Bookshelf B - 洛谷

貪心算法

先選最大的數(即最高的奶牛),一定能使取的數的數目(即奶牛數)最小

#include<bits/stdc++.h>
using namespace std;int main()
{long S[200005];long N,B,sum=0;cin>>N>>B;int num=0;for(int i=0;i<N;i++){cin>>S[i];}sort(S,S+N);for(int i=N-1;i>=0;i--){sum+=S[i];num++;if(sum>=B){break;}}cout<<num;return 0;
}

P1116 車廂重組

P1116 車廂重組 - 洛谷

計算每個數字后面有幾個數字比它小,再相加,就可以計算出需要的最少次數。

相對于冒泡排序

#include<bits/stdc++.h>
using namespace std;int main()
{int n;int a[10010];cin>>n;for(int i=0;i<n;i++){cin>>a[i];}int num=0;for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){if(a[i]>a[j]){num++;}}}cout<<num;return 0;
}

P1068 [NOIP 2009 普及組] 分數線劃定

P1068 [NOIP 2009 普及組] 分數線劃定 - 洛谷

#include<bits/stdc++.h>
using namespace std;struct people
{int k;int s;
}per[5001];bool cmp(people a,people b)
{if(a.s!=b.s){return a.s>b.s;}else{return a.k<b.k;}
}int main()
{int n,m;cin>>n>>m;for(int i=0;i<n;i++){cin>>per[i].k>>per[i].s;}int num=m*1.5;sort(per,per+n,cmp);for(int i=num;i<n;i++){if(per[i].s==per[num-1].s){num++;}else{break;}}cout<<per[num-1].s<<" "<<num<<endl;for(int i=0;i<num;i++){cout<<per[i].k<<" "<<per[i].s<<endl;}return 0;
}

P5143 攀爬者

P5143 攀爬者 - 洛谷

#include<bits/stdc++.h>
using namespace std;struct zuobiao
{double x;double y;double z;
}dot[50001];bool cmp(zuobiao a,zuobiao b)
{return a.z<b.z;
}double solve(double x1,double x2,double y1,double y2,double z1,double z2)
{double x=pow(abs(x1-x2),2);double y=pow(abs(y1-y2),2);double z=pow(abs(z1-z2),2);double sum=pow(x+y+z,0.5);return sum;
}int main()
{int n;cin>>n;for(int i=0;i<n;i++){cin>>dot[i].x>>dot[i].y>>dot[i].z;}sort(dot,dot+n,cmp);double ans=0.0;int tag=0;for(int i=1;i<n;i++){if(dot[i].z>dot[tag].z){ans+=solve(dot[tag].x,dot[i].x,dot[tag].y,dot[i].y,dot[tag].z,dot[i].z);tag=i;}else{continue;}}cout<<fixed<<setprecision(3)<<ans;return 0;
}

P1012 [NOIP 1998 提高組] 拼數

P1012 [NOIP 1998 提高組] 拼數 - 洛谷

to_string------>可以實現數字向字符串轉換(雖然這題沒用到)

兩個字符串?a,b,如果?a+b>b+a?則?a?排在前面。 這個公式的具體意思是當?a?排在?b?前面比?b?排在?a?前面要好,因為字典序更高,所以?a?自然要排在?b?的前面。

#include<bits/stdc++.h>
using namespace std;string a[25];bool cmp(string a,string b)
{return a+b>b+a;
}int main()
{int n,m;cin>>n;for(int i=0;i<n;i++){cin>>a[i];}sort(a,a+n,cmp);for(int i=0;i<n;i++){cout<<a[i];}return 0;
}

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

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

相關文章

【機器學習】(算法優化二)提升算法之:AdaBoost與隨機梯度

文章目錄一、 AdaBoost&#xff1a;自適應提升算法1、AdaBoost數學原理詳解1.1、 目標函數1.2、 樣本權重更新的邏輯1.3、 模型權重計算的含義1.4、 AdaBoost的核心思想2、為什么AdaBoost如此有效&#xff1f;二、 隨機梯度提升算法&#xff1a;梯度優化下更精細的優化1、隨機梯…

力扣 hot100 Day65

75. 顏色分類 給定一個包含紅色、白色和藍色、共 n 個元素的數組 nums &#xff0c;原地 對它們進行排序&#xff0c;使得相同顏色的元素相鄰&#xff0c;并按照紅色、白色、藍色順序排列。 我們使用整數 0、 1 和 2 分別表示紅色、白色和藍色。 必須在不使用庫內置的 sort 函…

12.Linux 磁盤管理

Linux : 磁盤管理 一、磁盤設備命名規則磁盤類型設備命名模式示例特點SATA/SCSI/SAS/dev/sdXsda&#xff08;第一塊硬盤&#xff09; sda1&#xff08;第一塊硬盤第一分區&#xff09;機械硬盤/通用接口NVMe/dev/nvmeXnYpZnvme0n1&#xff08;第一通道第一塊盤&#xff09; …

《Linux服務與安全管理》| DHCP服務器安裝和配置

《Linux服務與安全管理》| DHCP服務器安裝和配置 目錄 《Linux服務與安全管理》| DHCP服務器安裝和配置 一、點擊“編輯虛擬機設置”&#xff0c;配置三臺虛擬機為“僅主機”模式。 二、server01開機&#xff0c;root用戶登錄&#xff0c;輸入nmtui&#xff0c;進入圖形界面…

賽博威攜手Dify,助力AI在企業的場景化落地

人工智能正以前所未有的速度重塑商業世界。我們經歷了從理論探索到大語言模型&#xff08;LLM&#xff09;的爆發式增長&#xff0c;如今&#xff0c;一個以“AI Agent&#xff08;智能體&#xff09;”為核心的新階段已然來臨。AI Agent代表了人工智能應用的未來形態。它不再被…

嵌入式硬件中三極管推挽電路控制與實現

我們昨天講到了這個電路。 如果 A 電是 PWM 波,那么請問 B 點是不是 PWM 波呢?那么,當 PWM 為高時, B 點的電流是從哪里流過來的?

數據結構——查找(三、樹形查找)

一、二叉排序樹&#xff08;BST&#xff09;1、二叉排序樹的定義構造一棵二叉排序樹的目的并不是排序&#xff0c;而是提高查找、插入和刪除關鍵字的速度二叉排序樹&#xff08;也稱二叉搜索樹&#xff09;或者是一顆空樹&#xff0c;或者是具有以下性質的二叉樹1、若左子樹非空…

八股——Kafka相關

文章目錄1、 消息隊列的作用什么&#xff1f;思&#xff1a;消息隊列是什么?消息隊列的定義消息隊列的工作原理消息隊列的作用消息隊列的常見類型消息隊列的簡單例子2、Kafka 集群的架構是什么樣子的&#xff1f;3、Kafka 消費者組和生產者組是什么&#xff1f;定義與核心作用…

墨者學院SQL手工注入漏洞測試(MySQL數據庫)題目,純手工注入教程

打開練習手工注入的靶場,發現此時為一個登錄頁面,我們先試著登錄看看注入點在不在登錄頁面 使用用戶:or 1=1# 密碼:admin123;嘗試登錄,發現顯示錯誤后直接彈回原頁面,無sql報錯相關語句,這里不存在sql注入點 一:判斷注入點以及猜測是否有注入 此時點擊這里的動態頁面…

[硬件電路-140]:模擬電路 - 信號處理電路 - 鎖定放大器概述、工作原理、常見芯片、管腳定義

一、鎖定放大器概述鎖定放大器&#xff08;Lock-in Amplifier&#xff09;是一種基于相干檢測技術的高靈敏度測量儀器&#xff0c;通過將待測信號與參考信號進行同步處理&#xff0c;從強噪聲中提取微弱信號并精確測量其振幅與相位。其核心優勢包括&#xff1a;信噪比提升&…

下載 | Windows Server 2025官方原版ISO映像!(7月更新、標準版、數據中心版、26100.4652)

? 資源A066_Windows_Server_2025系統映像&#x1f536; Windows Server 2025官方原版ISO映像&#xff0c;7月更新版已放出。提供來自微軟官方每月更新的ISO原版映像&#xff0c;內部包含了標準版和數據中心版&#xff0c;可選擇無GUI界面版或桌面體驗版&#xff0c;滿足不同部…

Go 語言模糊測試 (Fuzz Testing) 深度解析與實踐

學習一個知識&#xff0c;要先了解它的來源 1. 模糊測試的誕生&#xff1a;Barton Miller 的故事 “Fuzz”一詞起源于1988年&#xff0c;由威斯康星大學麥迪遜分校的Barton Miller教授及其研究生團隊在一個高級操作系統課程項目中提出 。這個概念的誕生頗具戲劇性。Miller教授在…

【軟考和軟著】

一、&#x1f4ab; 杭州E類人才政策 在這里插入圖片描述 二、人才認定標準 三、關于軟考 1、什么是軟考&#xff1f; 軟考指的是“計算機技術與軟件專業技術資格&#xff08;水平&#xff09;考試”。計算機軟件資格考試是由國家人力資源和社會保障部、工業和信息化部領導下…

「源力覺醒 創作者計劃」開源大模型重構數智文明新范式

起來輕松玩轉文心大模型吧一文心大模型免費下載地址&#xff1a;https://ai.gitcode.com/paddlepaddle/ERNIE-4.5-VL-424B-A47B-Paddle開源大模型的崛起與AI幻覺挑戰&#xff1a;中國AI發展的雙重使命 ——從技術追趕到生態引領的跨越之路一、開源大模型&#xff1a;重構數智文…

政務云數智化轉型:靈雀云打造核心技術支撐能力

政務云數智化轉型進行時&#xff0c;亟需體系升級政務信息化作為政府治理與服務的重要支撐&#xff0c;業務呈現出政策性強、數據敏感度高、系統復雜度高、服務連續性要求嚴等特點&#xff0c;對IT系統提出了極高要求&#xff1a;不僅需支撐高并發、高可用的政務應用&#xff0…

軟件測試自學之路

別找了&#xff01;2025B站最全最細的軟件測試教程&#xff0c;7天從零基礎小白到精通軟件測試&#xff0c;學完即上崗&#xff01;自學軟件測試對于小白來說還是有一定的難度&#xff0c;各種專業術語的不熟悉&#xff0c;各種電腦操作的不熟悉&#xff0c;有時候要安裝一個學…

備案期間老網站有什么要求

老網站的內容必須符合法律法規和互聯網管理規定。這可不是開玩笑的事兒&#xff0c;相關部門對于網站內容的審核可是相當嚴格的。比如說&#xff0c;不能有違法犯罪、色情低俗、虛假信息等不良內容。根據互聯網信息管理專家的建議&#xff0c;網站內容應該積極健康、真實準確。…

Java數組轉換為逗號分隔字符串的方法

Java數組轉換為逗號分隔字符串的方法 在Java中&#xff0c;將數組轉換為逗號分隔的字符串有幾種常用方法&#xff0c;以下是清晰可靠的實現方案&#xff1a; 方法1&#xff1a;使用Arrays.toString() 字符串處理&#xff08;通用型&#xff09; import java.util.Arrays;publi…

抗輻照DCDC與MCU在核環境監測設備中的集成應用

摘要核環境監測設備對保障核設施安全、保護環境與人員健康意義重大&#xff0c;需在復雜惡劣的核環境中穩定運行。電子設備易受核輻射影響產生單粒子效應等故障&#xff0c;選用具備抗輻照能力的DCDC與MCU芯片至關重要。本文結合實際測試數據&#xff0c;深入探討抗輻照DCDC與M…

C語言-指針[指針數組和數組指針]

知識重復變量指針&#xff1a;變量最小的地址值&#xff08;首地址&#xff09;&#xff0c;本質是地址、指針指針變量&#xff1a;存儲指針的變量&#xff0c;本質是變量&&#xff1a;取地址運算符&#xff08;取址符、取地址符&#xff09;&#xff0c;獲取變量、數組等的…