發表文章

TIOJ 1008 量杯問題

總之一直就是壓不過? 然後就去查查看別人的code了 最後就發現,無解的時候會變得很肥,所以就先判掉吧

[CF] A. Office Keys

題目: https://codeforces.com/problemset/problem/830/A MySol: https://codeforces.com/contest/830/submission/51925156 很明顯的,我根本沒腦袋。 很明顯的,會被撿到的鑰匙序列會是連續的 如果不是,那就把最旁邊的鑰匙改成中間斷掉的那支鑰匙肯定會變好 為甚麼呢? 考慮在被選到的序列中,沒被選到的鑰匙所在的位置 假設它在終點左邊,然後它更左邊還有鑰匙的話,那就把那支換成這支肯定更好 畢竟更靠近終點不虧嘛 那就只剩下它更左邊沒咚咚了,可是聰明的你一定發現了這根本不是個 case 就這樣,對 b 做 sliding window 之類的東東 DP 就結束了唷 可惜我還是跑去看解了,嗯嗯,反正我的智商已經不可能再下降了,就隨便啦

[CF] 835D - Palindromic characteristics

題目: https://codeforces.com/problemset/problem/835/D MySol: https://codeforces.com/contest/835/submission/51920899 我是看解智障,不過我不在乎。 這題看完之後肯定會想到是甚麼區間DP之類的東東。 然後我就不太會了,沒多想後就跑去看解了。 一個 k 回文的兩半肯定是 k - 1 回文 一個 k 回文一定是個回文 所以只要 [ l + 1, r - 1 ] 是回文、 s[ l ] == s [ r ] 那就是符合條件的咚咚了 [ l + 1, r - 1 ] 在DP時就會弄好,那現在只剩下答案為多少了 明顯是 dp[ l ][ l、r 的 mid ] + 1 啊 很顯然吧,只可惜我不會思考

[CF] B. XOR-pyramid

題目: https://codeforces.com/contest/983/problem/B MySol: https://codeforces.com/contest/983/submission/51883938 我是智障的一千種理由 其中之一是我根本無法多看題目一眼然後看出性質 看完這題後很明顯可以感覺到如果我能夠O(1)弄出[l, r]的答案的話,那麼隨便弄弄就可以求出所有答案了。 理由是按照長度做DP,就可以維護在[l, r]內的最佳答案了。 然後我的思路就跑到了要如何O(1)呢?我馬上就想到了巴斯卡三角形 每格被算到的次數剛好是巴斯卡三角耶,成功把算出區間的複雜度弄到O(N)了,因為可以O(N^2)預處理楊輝三角形 然後就不會了QQ 看解之後馬上就察覺到了,[l, r]的答案 = [l, r - 1]^[l + 1, r]的答案,我根本智障 上面那個式子看起來很顯然,對吧? 嗯...,我也是這麼覺得的,那麼,一開始沒看出來的我是智障這件事就沒有爭議了,對吧?

[CF] D - Bookshelves

題目: https://codeforces.com/contest/981/problem/D MySol: https://codeforces.com/contest/981/submission/51882872 我是智障 OK,這樣上面那句就可以在還沒點進去就看到了 這題有個大性質,那就是AND,這可跟甚麼XOR、OR不同,可是AND喔>< 雖然有點違和感,但我一開始就當作一般的東東隨便去DP看看,結果卻連範測都過不了 問題在哪呢? 亂做的話它的子問題不能推到大問題,當然,如果你已經AC的話就另當別論了 那要怎樣才能有子問題的最優甚麼的性質呢?你應該要想到AND,像我就沒想到就去看解了 如果你有一塊的加起來的長相是mask,那你最終答案肯定小於mask 如果你有一次得到的結果是(1 << 60),你就算是(1 << 59) - 1這麼多的1你也不care。 所以就會想到要從高位開始往下做DP 應該說看到是位元運算的題目就要想到對位元做事了,但我腦袋只閃過了一下下,就拋之腦後了QQ

[CF] D. Yet Another Array Queries Problem

題目: https://codeforces.com/problemset/problem/863/D MySol: https://codeforces.com/contest/863/submission/51850623 再不寫treap、再不寫資料結構、再不寫code啊,我。

[CF] 893D - Credit Card

題目: https://codeforces.com/problemset/problem/893/D MySol: https://codeforces.com/contest/893/submission/51845222 SAD,沒有做出來 可以知道要做事的時候大概只有要check的時候嘛 其他時候就只有判會不會超過而已 然後為了要使得要存錢的時候最少 我每次必須存錢的時候都要想辦法存最多的錢,並且使得以後不會爆掉 所以我要掃一遍,我現在到之後可能會變到的最大值 然後就是某種噁心的取max? 但我不會寫,所以我就抄了別人的code 得證,我不會寫code。