補題2 2023年牛客演算法入門課練習賽1

2021-10-06 12:06:31 字數 2449 閱讀 6320

a:第k小數

考查乙個函式nth_element()

具體用法:傳送門

其實就是只排好了陣列中指定的乙個數的位置,時間複雜度低

(因為這個題,去看了一下有關排序的其他函式,傳送門)

附ac**:

#include

#include

using

namespace std;

const

int n=

2e7+10;

inline

intread()

while

(ch >=

'0'&& ch <=

'9')

return x * f;

}int

main()

nth_element

(a,a+m-

1,a+n)

;//第m小的數,前面有m-1個數,第二個引數就是首位址+(m-1)

cout<<}}

b:不平行的直線

題目要求直線兩兩不平行也不重合,我們知道斜率k相同的話,必定是平行或重合的,那麼把乙個點和其他所有點連成的直線的斜率判斷一遍即可

附ac**:

#include

#include

using

namespace std;

const

int n=

210;

int x[n]

,y[n]

;map<

double

,bool

> f;

intmain()

for(

int i=

0;i} cout<}

c:丟手絹

輸入樣例的最後一行感覺是多餘的…

圍成乙個圈,兩個人的距離一定不會超過圈的一半tmp,如果沒有超過,那麼當前資料就加上到下個人的距離,如果超過了,那麼此時兩個人的距離就是min(maxx, sum - maxx),尺取法遍歷所有情況

#include

using

namespace std;

const

int maxn =

1e5+7;

typedef

long

long ll;

int n, a[maxn]

;ll sum;

intmain()

ans =

max(ans,

min(maxx, sum - maxx));

//因為"/"是整除,所有sum-maxx不是都比maxx小的

maxx -

= a[i];}

printf

("%lld\n"

, ans)

;}

d:二分(二分的標題,差分的本質)

mp記錄每乙個數被猜測到的可能性

以輸入樣例「6 +」為例,說明猜測的數比6大,我們將7~∞的每乙個數的可能性都+1

同理「8 -」,我們將-∞~7的每乙個的可能性都+1

「5 .」只將數字5的可能性+1

#include

#include

#include

using

namespace std;

const

int inf=

0x7f7f7f7f

;//0x7f7f7f7f即int型別的最大值(加乙個數就會溢位的那種大)

map<

int,

int>mp;

intmain()

if(ch==

'+')

if(ch==

'-')

}int ans=

-inf;

int k=0;

for(

auto x:mp)

cout<}

e:交換

這題不能用選擇排序,會超時。

可以用另乙個陣列復刻原陣列的值,記住陣列下標,然後逐個比較,不一樣就交換。交換後重新更新下標。

附ac**:

#include

using

namespace std;

const

int maxn =

1e5+5;

typedef

long

long ll;

int a[maxn]

,b[maxn]

;map<

int,

int>pos;

intmain()

sort

(b,b+n)

;int ans=0;

for(

int i=

0; i)printf

("%d\n"

,ans)

;}

2023年牛客演算法入門課練習賽2

dp題,沒做上來qaq include using namespace std const int inf 0x3f3f3f3f int h 205 dp 205 dp i 跳到第i級階梯的最小步數 intmain void dp 1 0 for int i 2 i n i dp maxh min ...

2023年牛客演算法入門課練習賽3 B

2020年牛客演算法入門課練習賽3 b 傳送門題意 給你乙個區間 l,r 和長度為n乙個陣列 n 15 考慮這個區間裡有多少個數能被8整除,並且無法被這個陣列中任何乙個數字整除。分析 由於要考慮不能被乙個陣列中的任何乙個元素進行整除,並且陣列中的數字比較大。個人感覺寫數字dp是沒有前途的。由於陣列比...

牛客演算法入門課練習賽2題解

a.古老的牛市,遺跡的天梯題目描述 牛市,乙個擁有悠久歷史的城市,2333年考古學家在牛市發現了乙個神秘的遺跡,這些勇敢而智慧型的古隊員準備進入這個遺跡,但要進入這個遺跡就需要通過一段天梯。而登上天梯必須要按照它要求的方法,否則就無法登上。它要求的方法為 可以直接登上比當前位置高1個單位高度的天梯。...