寒假第一天1 12訓練小結

2021-07-25 23:57:14 字數 1240 閱讀 6062

今天狀態還不錯,得分還可以:

100+10+50

。第二題題目沒有加

spj,雖然我打了正解,但還是

a不了。

problem1:100

這題注意到樣例解釋中有一句話:顯然只有3的倍數才是好的。這句話看似沒什麼稀奇的,實則給我們重大的解題思路。好的數的分布毫無規律,為什麼一定只有

3的倍數才是好的?仔細想一想就可以發現所謂的「好的數」一定要是原序列

a中所有數的最大公因數的倍數,因為設

a1=kp1 a2=kp2 a3=kp3 ......,k為a

中所有數的最大公因數。又因為「好的數」一定是

a中的數通過不斷地加減運算得到的,所以「好的數」必定是

k的倍數。這樣樣例解釋中的

3指的就是最大公因數。

problem2:10(or 100)

如果f[i]表示以

i為根的子樹中,包含了節點

i的連通子圖個數為多少,則滿足

f[i]=pai(f[i

的兒子]+1),pai

表示連乘。那麼如果樹的形態給出,我們就能求出

f[1]

。現在逆向思維,如果

f[1]

給出,我們怎麼求樹的形態。因為每個

f[i]

都是由他所有兒子的f值

+1全部乘起來得到的,所以我們可以嘗試將

f[i]

分解質因數,每個分解出的質因子就代表他的兒子,然後這個兒子的

f值就為這個質因子

-1。就這樣,我們在分解質因數的同時構造這顆樹,就能得到樹的形態了。根據實測情況,這種方法應該是不會構造多於

60個點的,至於為什麼,我也不知道啦!

problem3:50

這題主要是注意到乙個細節:詢問串串長之和

<=2*10^5。這個條件說明詢問串長的種類並不多,最多只有串長之和的算術平方根。所以我們只需要將詢問按詢問串串長從小到大排序,對於每一種串長,我們只需

o(n)

掃一遍,

用乙個桶記錄一下就行了。

然而為什麼我只拿了50分,因為我沒有使用桶,而是又

sb地使用快排。這個故事告訴我們,不要以為排序方法中快排一定在什麼時候都是最快的。每一種排序方法都有它的優缺點,而在這種待排序序列數字都比較小的時候,桶排是佔明顯優勢的。

總結:如果今天第二道題考我們逆向思維,第三道題考我們離線處理詢問,那今天第一道題就考我們觀察能力,是否能從題目中的每乙個資訊中挖掘出做題的一些思路。今天總體情況還好,明天繼續保持。

寒假第一天 流

流 資料互動的通道,因為在我們的計算機中,所有的內容都是通過流來傳遞的rtmp 流分為輸出流 輸入流 位元組流 字元流 輸入位元組流inputstream 輸入字元流reader 輸出位元組流outstream 輸出字元流write 例子 inputstream is null outputstre...

寒假開學第一天

伴隨著短暫而又漫長的寒假的結束,我們迎來了寒假開始的第一天,在開學之際難免有點浮躁的,但是這都不是事啦,我要面對的還有很多很多了,所以我要盡可能早得將心態給調整過來,重新回到正途中,絕對不會讓之前的努力白費的,也絕對不會讓我最重要的人和關心我的人失望的,在這裡也同樣希望和我一樣剛開學的友友們都要盡快...

藍橋杯訓練第一天

例題1 輸入乙個三位數,分離出它的百位 十位和個位,反轉後輸出。樣例輸入 127樣例輸出 721分析 首先將三位數讀入變數n裡,然後進行分離。百位 n 100 十位 n 10 10 個位 n 10 解法 include int main 以上是一道簡單的三位數交換位置的題,由此延伸變數交換的三種方法...