今天狀態還不錯,得分還可以:
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 以上是一道簡單的三位數交換位置的題,由此延伸變數交換的三種方法...