PAT之查詢 遍歷 二分 hash

2021-10-07 14:14:36 字數 2962 閱讀 3293

知識點筆記:雜湊儲存:字串儲存、數字儲存

3 hash

3.2 字串儲存

// 相等

intfind_equ

(int low,

int high,

int a,

int key)

else

if(key < a[mid]

)else

}return-1

;}// 第乙個》=(公升序)

intfind_lower_bound

(int low,

int high,

int a,

int key)

else}if

(a[low]

>=key)

return low;

//low=high

else

return-1

;}// >

intfind_lower

(int low,

int high,

int a,

int key)

else}if

(a[low]

>key)

return low;

//low=high

else

return-1

;}int arr[3]

=;// >=

int*p, index;

p =lower_bound

(arr, arr+3,

20);//不存在,返回假設存在arr[i]>=20應該在的位置,即index=3

index = p-arr;

int k =

find_lower_bound(0

,2,arr,10)

;//k=1

// >

p =upper_bound

(arr, arr+3,

15);//不存在,返回假設存在arr[i]>15的位置,即index=3

index = p-arr;

k =find_lower(0

,2,arr,10)

;// k=2

(1)題目

求所有連續子串行和》=k的子串行

(2)**

#include

#include

#include

using

namespace std;

const

int n =

1e+5+10

;const

int inf=

0x3f3f3f3f

;typedef

struct nodenode;

// >=

intfind_lower_bound

(int low,

int high,

int a,

int key)

else

}return low;

//low=high

}bool

cmp(node no1, node no2)

vector<

int> vect;

int sum[n]=;

//sum[i]:vect[1] 到 vect[i]的和

intmain()

int tempsum,j;

int minsum=inf;

vector vect2;

node node;

for(

int i=

1; isize()

; i++

)else

if(tempsum == minsum && tempsum>=m)

}sort

(vect2.

begin()

, vect2.

end(

), cmp)

;for

(int i=

0; isize()

; i++

)//fclose(stdin);

return0;

}

(3)小結

題目:(2)**

#include

#include

#include

using

namespace std;

const

int id_max =

100000+10

;const

int n =

50000+10

;int couple[id_max]

;//couple[i]=j,i和j是一對couples

bool party[id_max]

;//party[i]:id=i party[i]=true:出席了party

vector<

int> alone;

//第1種沒有couple,第2種自己的couple沒出席

intmain()

int m;

scanf

("%d"

,&m)

;for

(int i=

0; i)for

(int i=

0; i)elseif(

!party[j])}

}sort

(alone.

begin()

, alone.

end())

;printf

("%d\n"

,alone.

size()

);for(

int i=

0; isize()

; i++

)printf

("%05d"

, alone[i]);

}//fclose(stdin);

return0;

}

(3)小結

迭代二分查詢二分查詢

在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...

PAT甲級 二分

思路 1 n1 確定進製的數,n2 未確定進製的數 方便後面進行統一計算 2 n1轉換成10進製數,二分n2進製,將n2轉換成十進位制與n1進行比較,大了就把進製往小的方向調整,小了的話往大的調 如果相等,則找到進製,輸出 tips 本題的變數盡量都使用long long型 坑 進製radix的範圍...

PAT 之 01 複雜度3 二分查詢

01 複雜度3 二分查詢 20 分 本題要求實現二分查詢演算法。函式介面定義 position binarysearch list l,elementtype x 其中list結構定義如下 typedef int position typedef struct lnode list struct l...