785. 快速排序
給定你乙個長度為n的整數數列。
請你使用快速排序對這個數列按照從小到大進行排序。
並將排好序的數列按順序輸出。
輸入格式
輸入共兩行,第一行包含整數 n。
第二行包含 n 個整數(所有整數均在1~109範圍內),表示整個數列。
輸出格式
輸出共一行,包含 n 個整數,表示排好序的數列。
資料範圍
1≤n≤100000
輸入樣例:
53 1 2 4 5
輸出樣例:
1 2 3 4 5
#include
using
namespace std;
const
int n =
1e6+10;
int q[n]
;void
quick_sort
(int q,
int l,
int r)
quick_sort
(q,l,j)
;quick_sort
(q,j+
1,r);}
intmain()
給定乙個長度為n的整數數列,以及乙個整數k,請用快速選擇演算法求出數列從小到大排序後的第k個數。
輸入格式
第一行包含兩個整數 n 和 k。
第二行包含 n 個整數(所有整數均在1~109範圍內),表示整數數列。
輸出格式
輸出乙個整數,表示數列的第k小數。
資料範圍
1≤n≤100000,
1≤k≤n
輸入樣例:
5 32 4 1 5 3
輸出樣例:
3
#include
using
namespace std;
const
int n =
1e5+10;
int q[n]
;int
quick_sort
(int l,
int r,
int k)
int sl = j - l +1;
if(sl >= k)
return
quick_sort
(l,j,k)
;else
return
quick_sort
(j+1
,r,k-sl);}
intmain()
787. 歸併排序
給定你乙個長度為n的整數數列。
請你使用歸併排序對這個數列按照從小到大進行排序。
並將排好序的數列按順序輸出。
輸入格式
輸入共兩行,第一行包含整數 n。
第二行包含 n 個整數(所有整數均在1~109範圍內),表示整個數列。
輸出格式
輸出共一行,包含 n 個整數,表示排好序的數列。
資料範圍
1≤n≤100000
輸入樣例:
53 1 2 4 5
輸出樣例:
1 2 3 4 5
#include
using
namespace std;
const
int n =
1e5+10;
int q[n]
,temp[n]
;int n;
void
merge_sort
(int l,
int r)
while
(i <= mid) temp[k++
]= q[i++];
while
(j <= r) temp[k++
]= q[j++];
// 放回原陣列
for(
int i = l,j =
0;i <= r;i++
,j++
) q[i]
= temp[j];}
intmain()
788. 逆序對的數量#include
using
namespace std;
typedef
long
long ll;
const
int n =
1e5+10;
int n;
int q[n]
,temp[n]
;ll merge_sort
(int l,
int r)
}while
(i <= mid) temp[k++
]= q[i++];
while
(j <= r) temp[k++
]= q[j++];
for(
int i = l,j =
0;i <= r;i++
,j++
) q[i]
= temp[j]
;return res;
}int
main()
/*
二分:1.單調一定能二分,但是二分不一定需要單調,所以單調不是二分的本質
2. 第一步:把邊界確定了
第二步:先寫乙個checked函式
第三步: 看如何更新區間:
l = mid 補上加一
r = mid 不用補
*/// 二分一定會有解,只是題目不一定有解
789. 數的範圍
給定乙個按照公升序排列的長度為n的整數陣列,以及 q 個查詢。
對於每個查詢,返回乙個元素k的起始位置和終止位置(位置從0開始計數)。
如果陣列中不存在該元素,則返回「-1 -1」。
輸入格式
第一行包含整數n和q,表示陣列長度和詢問個數。
第二行包含n個整數(均在1~10000範圍內),表示完整陣列。
接下來q行,每行包含乙個整數k,表示乙個詢問元素。
輸出格式
共q行,每行包含兩個整數,表示所求元素的起始位置和終止位置。
如果陣列中不存在該元素,則返回「-1 -1」。
資料範圍
1≤n≤100000
1≤q≤10000
1≤k≤10000
輸入樣例:
6 31 2 2 3 3 434
5輸出樣例:
3 45 5
-1 -1
#include
using
namespace std;
const
int n =
1e5+10;
int n,q,a[n]
;int
main()
if(a[l]
!= k)
puts
("-1 -1");
else
printf
("%d\n"
,l);}}
return0;
}
題解思路**於演算法基礎課,主講人:yxc
AcWing 演算法基礎課 動態規劃
1 揹包問題 1 01揹包 每件物品僅用一次 可以做空間優化 dp j max dp j dp j v i w i 0,1揹包狀態均是從前一迴圈的狀態轉移 2 完全揹包 每件物品可以用無限次 完全揹包的狀態可以從當前迴圈的狀態轉移,進行優化 3 多重揹包 每件物品有不同的數量限制 可以對物品的數量限...
第一講 XHTML基礎
一 html概述 超文字標記語言 是一種基本的web網頁設計語言,主要用於實現靜態的全球資訊網文件。1997年1月,html4被發布正是標準 1999年12月,w3c又推出html4.01 三 html的標記語法 1 雙標記 標記 內容 2 單標記 標記 最常用的單標記是 3 標記屬性 標記 屬性1...
Acwing演算法基礎課知識點
知識點 基礎演算法 模板鏈結常用 模板1 基礎演算法 排序 二分高精度 字首和與差分 雙指標演算法 位運算離散化 區間合併 資料結構 模板鏈結常用 模板2 資料結構 鍊錶與鄰接表 樹與圖的儲存 棧與佇列 單調佇列 單調棧 kmptrie 並查集堆 hash表 c stl使用技巧 搜尋與圖論 模板鏈結...