發表文章

random生成一顆樹

用了那個啥prufer還啥的序列的啥的東西,然後這是用在generator上的之類的,最後如果要改成一般的話就改main前面幾行就好了,大概吧。 #include <bits/stdc++.h> using namespace std ; int n ; vector < int > t ; set < int > s ; multiset < int > tt ; signed main ( int argc, char * argv [ ] ) { registerGen ( argc, argv, 1 ) ; int n = atoi ( argv [ 1 ] ) ; for ( int i = 1 ; i <= n - 2 ; ++ i ) t. push_back ( rand ( ) % n + 1 ) ; for ( int i = 1 ; i <= n ; ++ i ) s. insert ( i ) ; for ( auto i : t ) cout << i << " " ; cout << endl ; for ( auto i : t ) { if ( s. find ( i ) ! = s. end ( ) ) s. erase ( s. find ( i ) ) ; tt. insert ( i ) ; } for ( auto i : t ) { auto it = s. begin ( ) ; cout << * it << " " << i << endl ; s. erase ( it ) ; tt. erase ( tt. find ( i ) ) ; if ( tt. find ( i ) == tt. end ( ) ) s. insert ( i ) ;

Shellshock.io從入門到上手(針對單狙)(沒有圖片、影片版本)

簡單介紹 作為一款網頁版FPS遊戲,Shellshock.io提供了相對簡單易懂的遊戲機制。 首先,遊戲中總共只有六種主要武器,雖然在商城會販賣不同的skin,但不同的skin並不影響武器的強度。這六種分別為AK、散彈、SMG、連狙、RPG、單狙。 同時每位玩家會持有一把小槍作為輔助武器。 子彈會在地圖中隨機生成,同時手榴彈也是要在地上撿,最大上限是持有三顆手榴彈。重生時會將玩家的子彈補滿、手榴彈數量為max(now_num, 1)。 每位玩家都是一顆蛋,而且蛋的尺寸還挺大的。 SS是一種運動系FPS。主要原因有:移動速度快、受到傷害後會自動回血、每發子彈傷害並不高(depend on 槍種)……等等。 反正玩過就知道了>_<。 如何成為不錯的玩家(大部分針對crackshot) SS作為線上FPS遊戲,遊戲機制十分寬鬆,但說難聽一點,就是高手與新手全部攪在一起的大雜燴,所以常常會在某場中遇到數十殺以上的強者,每次與其對槍都輸,因而造成自己遊戲體驗不佳;又或者每次streak都無法超過3,這種情況著實令人沮喪。 那要怎麼才能成為強一點的玩家呢? 由於本人專精於單狙,所以只對單狙加以說明,但部分道理其實是通用的。 其實要脫離一般人的程度其實很簡單,只要掌握「跑跑跳跳 -> 停下來射擊 -> 跑跑跳跳」這樣的循環就可以了。 相較於一般FPS,SS的子彈速度簡直就像是高鐵對上腳踏車一樣,非常慢,況且如果擦邊的話傷害也不高,另外還會自動回血,那麼很重要的一個要點就是,一直跑跑跳跳。 絕對不要停下來,停下來超過三秒的話早就被狙掉了。 在SS中,一個好的狙擊手從發現敵人到消滅對方根本花不到一秒。 其他近戰武器如果距離適當的話也不需要一秒。 換言之,站在原地超過一秒就NG了。 所以切記,一直跑跑跳跳,把WASD通通用上,最好是能用不規則的步伐移動,並且有事沒事就跳一下,這樣敵人也難以瞄準,何樂而不為呢? 同理,如果為了瞄準一個敵人而停在原地也是不值得的事情,停下來,將準心瞄準敵人,等準心縮小,射擊,別管到底能不能射中,這種事情丟給上天決定就好了,絕對不要為了多調整一點點而多待任何一瞬間,射擊完後立刻跑,因為槍聲會使敵人注意到你。 只要記住以上要訣並且切實實踐的話,你就會發現自己的KDR漸漸上升了;可能會覺得槍

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