2020牛客多校暑期訓練營(賽後總結和補題)

2021-10-08 06:45:18 字數 1337 閱讀 9069

ac**:

#include

using

namespace std;

intmain()

if(c==

'a')

}return0;

}

總結:

這個題是第三場的第三道簽到題,需要o(1)實現題目中對字串的移動。我們隊開始是直接暴力模擬,需要o(n)來實現每次移動,超時了。賽後補題,學到了用乙個指標來分割,非常地巧妙,但是其實還是超時,需要採用上面的方式改變輸入的方式,最終才能通過。

ac**:

#include

using

namespace std;

intmain()

if(flag&&s[i]

=='1'

) cnt++;}

if(cnt>=

2) ans+

=cnt/2;

cout<}return0;

}

總結:

這個是第三場的第二道簽到題,題意有一點繞,當時放在了b題之後做的,心態有一點崩,說實話應該是可以寫出來的。主要是對於1和0的處理,先預設按順序1用來做魚餌包,0用來釣魚,如果1有多出來,則做一包魚餌,抓一次魚,記最終的答案加上多餘的1的數目/2。

ac**:

#include

#include

using

namespace std;

int a[

100005];

intmain()

sort

(a,a+n)

;int p=0;

while

(!a[p]

) p++;if

(!a[0]

)swap

(a[0

],a[p]);

if(!a[1])

swap

(a[1

],a[p+1]

);//非前導零

for(

int i=

1;i) a[i]

=a[0

]*a[i]

;for

(int i=n-

1;i>

1;i--

)//模擬乘法進製,a[1]儲存的可能是兩位數,不影響

for(

int i=

1;i) cout<}return0;

}

總結:

這個題是第九場的i題,思路蠻好想的,看完樣例就可以知道是拆成乙個最小的非零的一位數,和乙個可構造的最小的多位數相乘,在實現**的時候,需要用到模擬乘法進製,還不太熟練。

牛客暑期多校訓練營B Boundary

給定n個點,然後確定乙個過原點的圓,要使這n個點盡可能多的存在與圓上,最後輸出最多的存在於圓上的點的個數 三點確定乙個圓,我們已知這個圓必定經過原點,所以再依次利用三點求圓心的公式列舉每兩個點與原點 三點不共線 確定的圓心,最後選擇確定次數最多的圓心構成的圓 include include incl...

牛客暑期多校訓練營2020第4場

題意 給乙個以1為根的樹,定義乙個點的 ancient distance 祖先距離 為該點到最近的被標記的祖先的距離。對於i 1 i n 1 le i le n 1 i n 求標記i個點時,整棵樹上的 ancient distance 的最大值的最小值 設為xi 輸出xi的和。思路 假設已知整棵樹上...

2020牛客暑期多校訓練營(第五場)

總結 f題添老師一發ac,i 題起初不會做在想怎麼化簡那個式子,後來就直接畫出了最優的圖,然後猜了一發2 3過了。ef 一級目錄 一級目錄 一級目錄 乙個包括n個音符的陣列,音符按下標1 n排列,表示音符由低到高。有兩個操作 drop 2 將第二高的音符移到最低的位置 即將倒數第二個移到第乙個。in...