牛客陣列和字串2 5

2022-09-20 08:45:12 字數 4038 閱讀 9041

基礎很不紮實,一邊學新的,一邊刷題好了

求距離:

1006-求距離_牛客競賽語法入門班陣列字串習題 (nowcoder.com)

給你乙個1 -> n的排列,現在有一次機會可以交換兩個數的位置,求交換後最小值和最大值之間的最大距離是多少?

第一行乙個數n

之後一行n個數表示這個排列

輸出一行乙個數表示答案
示例1

複製

5

4 5 1 3 2

複製

3

把1和2交換後

序列為4 5 2 3 1

最大值5在陣列的2位置,最小值1在陣列的5位置

距離為3

對於100%的資料,1 <= n <= 100

簡單的模擬,沒啥難度

把當前的最大最小值的位置算出來,因為距離最大,肯定是兩邊,分別求距離取其最大值就好了

#include#include

#include

using

namespace

std;

const

int n=110

;int

a[n],b[n];

intmain()

if(minn>a[i])

}ex=max(abs(n-m),abs(m-1

)); em=max(abs(n-x),abs(x-1

)); maxn=max(ex,em);

cout

return0;

}

陣列下標:

1007-數列下標_牛客競賽語法入門班陣列字串習題 (nowcoder.com)

給出乙個數列 a,求出乙個數列b.

其中bi   表示 數列a中 ai 右邊第乙個比 ai 大的數的下標(從1開始計數),沒有找到這乙個下標  bi 就為0

輸出數列b

第一行1個數字 n (n ≤ 10000)

第二行n個數字第 i 個數字為 ai (0 ≤ ai  ≤ 1000000000)

一共一行,第 i 個數和第 i+1 個數中間用空格隔開.
示例1

複製

6

3 2 6 1 1 2

複製

3 3 0 6 6 0

樣例不用解釋

這個題的資料範圍很小哦

所以可以直接暴力來寫

也可以用單調棧來寫,對**進行優化:

暴力:

#includeusing

namespace

std;

const

int n=10010

;int

stk[n],tt,a[n],b[n];

intmain()

}if(x)

printf("0

");}

return0;

}

單調棧(模板題):

洛谷p5788

#include //

這個單調棧是單調遞減的棧,每次都找離的最近的比那個數字大的數

using

namespace

std;

const

int n=3000005

;int n,a[n],stk[n],f[n],tt;//

f陣列是存結果的陣列

intmain()

for (int i=1; i<=n; i++) printf("

%d "

,f[i]);

return0;

}

求逆序數:

這個資料範圍實在太小,直接暴力...

二進位制?十進位制:

給定兩個十進位制整數 : aaa,bbb

你需要把它們的二進位制形式十進位制的運算法則相加輸出結果。

例如:

a=3,b=2a = 3 , b = 2a=3,b=2 的時候,aaa 的二進位制表示是 : 111111 , bbb 的二進位制表示是 101010 ,你需要輸出答案為 : 212121

一行兩個十進位制整數: aaa,bbb

一行乙個整數,表示相加的結果。
示例1

複製

2 3
複製

21
示例2複製

5 4
複製

201

對於 100100100 % 的資料:

1<=a,b<=327681 <= a,b <= 327681<=a,b<=32768

關於乙個十進位制數如何轉化為二進位制:

將十進位制數每次除以 222 ,取餘數,直到這個數變為0,最後將得到的餘數反向記錄就是原十進位制數的二進位制形式。

例子:123

410-----> 5餘下 0

5------> 2餘下 1

2------> 1餘下 0

1------> 0餘下 1

最後得到 101010 的二進位制表示就是 101010101010

這個二進位制轉化為十進位製用棧來寫,我真的好喜歡,愛了愛了!

#include#include

;typedef

long

long

intll;

using

namespace

std;

ll chaifen(

intn)

ll ans=0

;

while(!stk.empty())

return

ans;

}int

main()

(看了一位大佬的**,我自己本身還以為超了一直尋思著用高精度...)

osu!

let's play osu!

ht姐姐很喜歡玩osu,她擁有著超凡的指法和無人披靡的手速,當然,還有超高的pp(performance point)。

某一天大英課上,她偶然發現了一句話中居然出現了"osu"這個子串行,這馬上引起了她的注意,於是她決定,在這節課剩下的時間中,找到這段文章中所有子串行"osu"。可是文章實在太長了,請你幫幫她。

*字串的子串行是從字串中將若干元素提取出來並不改變相對位置形成的序列。

一行乙個整數 nnn (1≤n≤1001 \leq n \leq 1001≤n≤100)------表示這段文章由nnn個小寫英文本母和下劃線組成。

接下來111行為該段文章.

一行乙個整數,表示答案。
示例1複製

6

oossuu

複製

8

在樣例一中,如果將字元分別從1開始編號

8個答案分別是

(1,3,5)(1,3,6)(1,4,5)(1,4,6)(2,3,5)(2,3,6)(2,4,5)(2,4,6)

示例2複製

100

secrets_of_straight_a_students_a_professor_of_education_who_has_conducted_major_studies_of_super_ach

複製

81
示例3複製

14

cookiezspeedup

複製

2

記憶化搜尋

#includeusing

namespace

std;

intmain()

cout

return0;

}

當然啦,這題100,資料範圍不是很大,三層迴圈暴力也能做

誒我突然發現,這個方法其實就是三層迴圈的優化,不斷迴圈,在碰到uso的時候然後++,嗯嗯

牛客 倒置字串

經過函式後變為 beijing.like i 輸入描述 每個測試輸入包含1個測試用例 i like beijing.輸入用例長度不超過100 輸出描述 依次輸出倒置之後的字串,以空格分割 1.先把字串整體倒轉 反轉前 i like beijing.反轉後1 gnijied ekil i 2.把字元傳...

字串雜湊 牛客白兔的字串

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 題目描述 abab 2abababab ababcbaba 輸出 cpp 52 include using namespace std typedef unsign...

牛客網 字串的統計字串

牛客網 題目描述 給定乙個字串str,返回str的統計字串。例如 aaabbbbcccd 的統計字串為 a 3 b 4 c 3 d 1 輸入字元長度都大於1 解題思路 1.第一種方法輸入的是 aaa n 這種字元。因此我們將當前字元cur指向首字元,從1 字串長度的範圍內開始遍歷判斷當前字元cur是...