2024.7.28

xrlong發表於2024-07-28
群青

嗚呼いつもの様に
過ぎる日々にあくびが出る
さんざめく夜越え今日も
渋谷の街に朝が降る
どこか虛しいような
そんな気持ち
つまらないな
でもそれでいい
そんなもんさ
これでいい
知らず知らず隠してた
本當の聲を響かせてよほら
見ないフリしていても
確かにそこにある
感じたままに描く
自分で選んだその色で
眠い空気纏う朝に
訪れた青い世界
好きなものを好きだと言う
怖くて仕方ないけど
本當の自分
出會えた気がしたんだ
嗚呼手を伸ばせば伸ばすほどに
遠くへゆく
思うようにいかない今日も
また慌ただしくもがいてる
悔しい気持ちも
ただ情けなくて
涙が出る
踏み込むほど
苦しくなる
痛くもなる
感じたままに進む
自分で選んだこの道を
重いまぶた擦る夜に
しがみついた青い誓い
好きなことを続けること
それは楽しいだけじゃない
本當にできる
不安になるけど
何枚でも
ほら何枚でも
自信がないから描いてきたんだよ
何回でも
ほら何回でも
積み上げてきたことが武器になる
周りを見たって
誰と比べたって
僕にしかできないことはなんだ
今でも自信なんかない
それでも
感じたことない気持ち
知らずにいた想い
あの日踏み出して
初めて感じたこの痛みも全部
好きなものと向き合うことで
觸れたまだ小さな光
大丈夫行こうあとは楽しむだけだ
全てを賭けて描く
自分にしか出せない色で
朝も夜も走り続け
見つけ出した青い光
好きなものと向き合うこと
今だって怖いことだけど
もう今はあの日の透明な僕じゃない
ありのままの
かけがえの無い僕だ
知らず知らず隠してた
本當の聲を響かせてよほら
見ないフリしていても
確かにそこに今もそこにあるよ
知らず知らず隠してた
本當の聲を響かせてよさあ
見ないフリしていても
確かにそこに君の中に

沒什麼可推的了。

紀念一下我卡常了一下午

T4 樸素的抽象代數題(algebra)

是 joke 私題但過於簡單了

顯然找迴圈節,整體一起找是莫名奇妙複雜度,我不會,考慮單個字母找。

迴圈節最長是 \(26n\)

發現直接找複雜度是 \(n26^2\) 不太可過。考慮反正也需要求一個字母跳 \(k(k\le n)\) 步的方案數,直接先預處理即可。

然後有了 \(next_{c,k}\) 就可以 \(26^2\) 暴力跳預處理迴圈節。

考慮查詢,自然也是按位考慮,對於整個迴圈節可以不用考慮,但處理散塊是 \(26\) 的(\(n\) 可以直接跳),總複雜度還是 \(n26^2\) 的。

考慮繼續預處理,發現複雜度上限是最多要跳 \(26\)\(n\) ,繼續預處理出任意字元跳 \(k(\le 26)n\) 個字元,複雜度 \(26^2\)

致此,已經做到了 \(26n\)

然後你就可以透過了……嗎?

當你真正實現的時候,你會發現,它簡直跑的飛慢!

簡單測一下時間,發現對於第一個預處理,\(26n\) 的複雜度,最高不到 \(3\times 10^7\),竟然會跑 \(2s\)

後面的查詢也半斤八兩。

其實前後的原因類似,在預處理的時候,你有一個 \(26\times n\) 的陣列的記憶體在肆意亂跳,定址常數巨大,嘗試多種方法後,對於第一個預處理,將其先複製一遍去除無用行並且交換前後兩維使得第二位記憶體訪問連續,就可以跑過了。

查詢不太能最佳化定址,但是我們發現題目中的 getHash 實現簡單,我們又是按位考慮,可以直接邊求邊做,可以砍掉一半常數。

然後就可以卡過了。

有點太水了,下次可能推點好的?

圖——from 匿名