2020牛客寒假演算法基礎集訓營第一場(補題)

2021-10-02 13:58:13 字數 3431 閱讀 4124

題目描述

hanayo很喜歡吃公尺飯。

有一天,她拿出了 個碗,第乙個碗裝了 粒公尺飯,第二個碗裝了 粒公尺飯,以此類推,第 個碗裝了 粒公尺飯。

然而,愛搞惡作劇的rin把所有的碗的順序打亂,並拿走了乙個碗。hanayo想知道,rin拿走的碗裡有多少粒公尺飯?

輸入描述:

第一行輸入乙個正整數 。代表原始的總碗數。

第二行輸入 個正整數 a_ai​

,代表目前每碗裡公尺飯數量。

保證輸入合法。

輸出描述:

輸出乙個正整數,代表rin拿走的碗裡公尺飯數量。

示例1輸入複製5

2 5 1 3

輸出複製4說明

開始共有5個碗,每個碗內分別有1、2、3、4、5粒公尺飯。rin拿走的是第四碗。這麼簡單的樣例連tairitsu都看得懂好伐~

思路:水題,不過我做麻煩了,後來看題解,用標記法比較簡單。

#include

using

namespace std;

intmain()

for(

int i=

1;i<=n;i++)}

}

題目描述

有一天,kotori發現了乙個和lovelive相似的遊戲:bangdream。令她驚訝的是,這個遊戲和lovelive居然是同乙個公司出的!

kotori經過一段時間的練習後已經變得非常觸,每個音符 x%x% 的概率perfect,獲得 分, (100 -x)%(100−x)% 概率great,獲得 分。

已知一首歌有 個音符。kotori想知道,不考慮連擊加成的話,一首歌得分的期望是多少?

輸入描述:

一行 個整數,用空格隔開。分別是 。

輸出描述:

一首歌得分的期望,保留兩位小數。

示例1輸入

複製100 50 500 400

輸出複製

45000.00

說明如果全perfect是50000分,全great是40000分。由於它們的概率都是50%,即perfect和great五五開,所以期望是45000分。

思路:水題,計算數學期望。

#include

using

namespace std;

intmain()

題目描述

」數論真的太好玩了喵~「——hoshizora rin

rin最近喜歡上了數論。

然而數論實在太複雜了,她只能研究一些簡單的問題。

這天,她在研究正整數因子個數的時候,想到了乙個「快速迭代」演算法。設 為 的因子個數,將 迭代下去,rin猜想任意正整數最終都會變成 。

例如: 。

她希望你幫她驗證一下。她會給你乙個正整數 ,讓你輸出它在迭代過程中,第一次迭代成 的迭代次數。

輸入描述:

乙個正整數

輸出描述:

乙個正整數,為 迭代至 的次數。

示例1輸入

複製12

輸出複製4說明

12的因子:1,2,3,4,6,12。共6個。

6的因子:1,2,3,6。共4個。

4的因子:1,2,4。共3個。

3的因子:1,3。共2個。

12 → 6 → 4 → 3 → 2 , 故迭代了4次。

思路:這個題其實不算特別難,要注意的就是計算乙個數的因子個數時,如果不注意對資料進行處理,容易超時;這就要求在編寫計算因子個數的函式時,對時間複雜度進行處理。

#include

using

namespace std;

typedef

long

long ll;

intsearch

(ll n)

}return count;

}int

main()

printf

("%d"

,j+1);

}return0;

}

尺取法:顧名思義,像尺子一樣取一段,借用挑戰書上面的話說,尺取法通常是對陣列儲存一對下標,即所選取的區間的左右端點,然後根據實際情況不斷地推進區間左右端點以得出答案。尺取法比直接暴力列舉區間效率高很多,尤其是資料量大的時候,所以說尺取法是一種高效的列舉區間的方法,是一種技巧,一般用於求取有一定限制的區間個數或最短的區間等等。當然任何技巧都存在其不足的地方,有些情況下尺取法不可行,無法得出正確答案,所以要先判斷是否可以使用尺取法再進行計算。

使用尺取法時應清楚以下四點:

1、 什麼情況下能使用尺取法? 2、何時推進區間的端點? 3、如何推進區間的端點? 4、何時結束區間的列舉?

題目描述

eli拿到了乙個僅由小寫字母組成的字串。

她想擷取一段連續子串,這個子串包含至少 個相同的某個字母。

她想知道,子串的長度最小值是多少?

注:所謂連續子串,指字串刪除頭部和尾部的部分字元(也可以不刪除)剩下的字串。例如:對於字串\mathit「arcaea」而言,\mathit「arc」、\mathit「rcae」「rcae」都是其子串。而\mathit「car」「car」、\mathit「aa」「aa」則不是它的子串。

輸入描述:

第一行輸入兩個正整數 和

輸入僅有一行,為乙個長度為 的、僅由小寫字母組成的字串。

輸出描述:

如果無論怎麼取都無法滿足條件,輸出 。

否則輸出乙個正整數,為滿足條件的子串長度最小值。

示例1輸入

複製5 2

abeba

輸出複製3說明

選擇\mathit「beb」「beb」子串,長度為3,其中包含相同的兩個』b』

本題做法(寫的很爛)

}除這個題外,我還學了一點快速冪演算法,

int

fastpower

(int a,

int b,

int c)

return ans;

}

2020牛客寒假演算法基礎集訓營

長期更新,補完為止 2 g 判正誤 題意 t組資料。判斷a d b e c f是否等於g。1e9 a,b,c,g 1e9,0 d,e,f 1e9。保證不會出現指數和底數同為 0 的情況。思路 硬算會tle或mle。快速冪取模,為了增加過題概率,多取幾個模數判斷。includeusing namesp...

2020牛客寒假演算法基礎集訓營1

找規律,推公式 三角形個數為2 m n m n m 1 n 1 2 m n mn m 1 n 1 2 m n mn m 1 n 1 include include include include using namespace std typedef long long ll const int m...

2020牛客寒假演算法基礎集訓營1

h題 突然發現h題可以用好多種方法做的。方法一 雙指標,維護乙個修改次數小於等於k的區間 include using namespace std typedef long long ll const int mod 1e9 7 const int n 1e5 5 const int inf 0x3f...