0w1

Entries from 2016-03-01 to 1 month

TOI 日記 Day10

感覺這幾天都一直想回去呢,待在這邊真是挺折磨的。每天打14個小時的程式,吃飽打,打飽吃,吃飽打,打飽吃,吃飽打,打飽睡。。這麼狂還是第一次 XDDD 這樣兩個禮拜累積起來就 200hr了,說起來還真不健康。。回去我絕對要頹廢個幾天。。。然後再繼續拼呢。 …

POI 19 Fibonacci Representation ( DP )

http://main.edu.pl/en/archive/oi/19/rozIDDFSで頑張ろうとしたが、当たり前にもTLEした。 24 / 100。 #include <bits/stdc++.h> using namespace std; typedef long long ll; const ll MAXK = 4e17 + 4; int maxd; vector< ll > fib; bool dfs(ll k, int d){ if( k == 0 )</bits/stdc++.h>…

C++ Tricks - from CFR Blog

http://codeforces.com/blog/entry/15643 There are sure a lot of great techniques many great coders use, especially macros for debugging and so. I find myself not yet familiar with templates and multiple argument or so, but I will not bother…

IOI 15 Sorting ( Binary Search + Greedy )

PEG Judge - IOI '15 - Sorting 首先我們要想到,如果 k回合內能完成,那麼 k + 1回合內一定也能完成,這是很顯然的,因為對方換了什麼,換回來就行了。所以我們可以進行二分搜,現在問題就簡化成要在O( n ) 判斷 k回合內可不可能達成。 接著要發現,設原始…

CFR 546 C. Soldier and Cards ( 狀態記錄 )

http://codeforces.com/contest/546/problem/C 水。 #include <bits/stdc++.h> using namespace std; const int MAXN = 10 + 2; int n; deque< int > dq1, dq2; typedef pair< deque< int >, deque< int > > pdq; set< pdq > vis; void solve(){ int rnd_cnt = 0; while( !d</bits/stdc++.h>…

CFR 546 D. Soldier and Number Game ( 素数分解 )

http://codeforces.com/contest/546/problem/D 用質數預處理的方法快速計算每個值可以分解成多少質因數。 #include <bits/stdc++.h> using namespace std; const int MAXT = 1e6 + 6; const int MAXAB = 5e6 + 6; typedef long long ll; ll ps[ MAXAB ]; int val[ MAXAB ], </bits/stdc++.h>…

IOI 15 Horses ( Segment Tree )

終於做出來了。。 首先要直覺地想到,如果有一個日期是值得賣的,那麼一定會將所有都在這一天賣出去,因為如果留到後面的價值更高,這一天就根本不會是值得賣的。 如果要比較兩個不同日期賣出的錢,舉例來說比較 day i 和 day j,且不失一般性 i x[ 1 ] * x[…

UVA 11487 Gathering Food ( DP 統計路徑數 )

傳出去才覺得dp判斷該不該走的部分怪怪的,不過AC了。之後可能要小心一點,從終點回去比較好。 #include <bits/stdc++.h> using namespace std; const int MAXN = 10 + 2; const int INF = 0x3f3f3f3f; const int dx[] = { 0, 1, 0, -1 }; const int dy[] = { 1, 0, -1, 0 }</bits/stdc++.h>…

UVA 11167 Monkeys in the Emei Mountain ( 區間分配置點問題 )

很經典的算法。只是不知道時間複雜度對不對。嘛AC了就算了。 追記:後來發現這是題 Dinic題,竟然被我亂水過了,估算一下我的時間複雜度,O( N * lg N + MAXB * M * lg N ),咦,感覺挺好的啊。。 blog.csdn.net 大神 241行的 code.. Orz 拜了 這故事告訴我…

TOI 日記 Day9

今日はpaizaのスキルチェックの問題解いてた。サイコロ系の問題で苦戦。。満点取れたはずのを見逃した。S級の問題はもう全部開けたので今は銀のままでのぼらない。。最難問だと言われてる「嘘つき探し」を適当に貪欲してみたらWAをもらったけど30点取った…

TOI 日記 Day8

今天也一樣寫了幾場CFR,只是沒昨天那麼順。難題總是想不出來,只能說我平時思維鍛鍊不夠。或許我編程上的技巧在這個階段已經足夠,現在迫切的是思考複雜抽象的問題吧。 之後可能要寫的題目是盡快把訓練指南的都學一學,應該很快就結束了。 在那之後想去把JO…

CFR 622 C. Not Equal on a Segment ( TLE Mo's / AC Segment Tree )

Problem - C - Codeforces すぐに思いついたのが mo'sだったが、実装が下手すぎてTLEした。 でも自分の書き方のバグに気付いた。 以前は int lb = 2, rb = 1; みたいなもの書いてすぐ適当に尺取りしていたが、 もしさきに lbを縮ませてしまうとまだ何も入っ…

CFR 334 1A. Alternative Thinking ( DP )

Problem - 603A - Codeforces dp[ i ][ j ][ k ]: considered i digits, not yet reversed / reversing / finished reversing, last digit is k #include <bits/stdc++.h> using namespace std; const int MAXN = 1e5 + 5; int n; int a[ MAXN ]; void upmax(int &x, int v)</bits/stdc++.h>…

TOI 日記 Day7

崩潰完的隔天,倒是整個氣都放出來了,感覺沒什麼鬥志。 雖然說打了三四場CFR,ABC都能打得很順還算不錯,但DE或許才是我接下來該超越的部分。 我現在想,這次的失敗雖然影響我的未來重大,但其實是給我機會重新尋找自我。原來寫程式並非我的興趣,而只是專…

CFR 644 B. Processing Queries ( Deque Implementation )

Problem - B - Codeforces 適当に queueでやってWAもらいました。 Dequeで終了時間を抑える方が合ってるそうです。 #include <bits/stdc++.h> using namespace std; const int MAXN = 2e5 + 5; const int MAXB = MAXN; const int MAXT = 1e9 + 9; const int MAXD = 1e9 + 9;</bits/stdc++.h>…

TOI 日記 Day6 一模

今天早上練了幾次teams和boxes,然後翻翻部落格之前寫的東西複習,特別是圖論和DP。 中午因為學長的建議就睡了一下午覺。 吃了條牛奶巧克力,買個綠茶,就上去要比一模了。 一模真的是相當重要,因為如果考不好,下個禮拜真的就會心情很難過的吧。。 然後就…

TOI 日記 Day5

今天也沒練到什麼手感,都卡在ioi的teams那題。。就這樣卡死到晚上八點才終於抓出幾個爛bug搞定他。整個很沒信心。問了學長說起碼要 70分才可以進,而且又不太考圖論,都是思考題啥的。。嘛,我還是乖乖練teams,複習一下這幾個月學的東西比較踏實吧。

IOI 15 Teams ( Persistent Segment Tree + Stack Monotonicity )

PEG Judge - IOI '15 - Teams 就是一個蛋疼。。改天補說明。 這個問題有兩種解法,一種是霍爾定理+DP,似乎code比較短也比較好寫,但我對二分匹配完全沒概念Orz。。 只能用持久化線段樹去很直觀的搞,雖然說這就是想定解。 首先因為每個學生的屬性是二維的,…

TOI 日記 Day4

昨天晚上被三隻以上蚊子纏,到處被叮,眼皮也被叮腫了= =。 今天又糾纏在 ioi題搞得焦頭爛額,CBD大神來講解題目,但還是不會寫。他們說他們覺得不會考這麼難,但直到看到題目的那一刻,沒有東西是誰說得準的。。後天就要模考,想到如果搞差了,之後就要灰心…

UVA 11297 Census ( 2D Segment Tree Single Point Modify )

UVa Online Judge 之前的寫法是錯的 每一個二維結構存的應該是一個 x軸的線段樹,每一個節點保有該二維的上下界範圍內所有 y的 min / max。但我之前只是隨便更新而已,變成只要O( lg n ),但如果同個節點被修改兩次就會發生問題,因為包含自己的二維結構不會…

UVA 11270 Tiling Dominoes ( 輪廓線DP )

UVa Online Judge 訓練指南上的輪廓線DP基本題。一開始看的時候怎樣都看不懂,沈下來想就懂了。要考慮的是放一個 tile不管橫置還是直擺,以當前那個格子為那個 tile的右下角,這種“結束考慮這個格子"的情況當作狀態。那麼如果上面的格子沒有放東西,我們就被…

TOJ 47 1d-kd-tree ( STL map )

TOJ

http://sprout.tw/oj/pro/47/ 題目的要點在於求離一個數距離最小的數,並且支持插入和修改。先考慮如果題目只求正方向距離最小,那其實只是求 lower_bound罷了。加了一個負方向其實也只是要找以該點在數線上對稱的lower_bound。因此我們只需要維護正數和負數…

TOJ 72 Happiness Function ( 三分搜 )

http://sprout.tw/oj/pro/72/ 一個三分搜模板。每次總是縮小至少三分之一的搜索範圍,慢慢走往凹點。 #include <cstdio> int n; double a[10], b[10], c[10]; double S(double t){ double mx = 0; for(int i = 0; i < n; ++i) if(a[i]*(t-b[i])*(t-b[i])+c[i] > mx) </cstdio>…

TOJ 275 同學會 ( Adhoc )

http://sprout.tw/oj/pro/275/ 這題雖然看起來很簡單,卻要想清楚很多細節才能寫好。最重要的關鍵是要發現如何做才能快速地發現那個團體中最後一個人。如果我們對每個團體紀錄 id的總和,剩下的人數,每次減少一個人就從 id總和減去它的 id,就能夠在刪除某…

TOJ 277 騎腳踏車 ( Greedy )

http://sprout.tw/oj/pro/277/ 很明顯如果希望疲累度最大,就不能讓休息站幫我們太多。讓休息站最沒有幫助的方法無疑是連續的,還有一個起點一個終點的情況。 #include <bits/stdc++.h> using namespace std; const int MAXN = 1e6 + 6; const int MAXA = 1e3 + 3; typedef </bits/stdc++.h>…

CFR 500 B. New Year Permutation ( Greedy + Union Find )

Problem - 500B - Codeforces 如果某兩個數可以交換,那麼可以和那兩個數的任意一個交換的數同樣能和另一個交換,所以我們可以維護一個集合代表當前的位子可以用的數字有哪些。欲處理完就能貪心的由左到右依次選取集合中最小的。 #include <bits/stdc++.h> using namespace </bits/stdc++.h>…

POJ 1456 Supermarket ( Greedy + Union Find )

1456 -- Supermarket 很顯然要從最貴的開始放,而且是放到離他期限最近的時間點。我們需要快速查詢 lastDay[ i ],代表第 i天( 含 )之前最晚的還沒有賣東西的時間,又因為這件事可以指來指去 i.e. lastDay[ 5 ] = 3 AND lastDay[ 3 ] = 1 -> lastDay[ 5 ] = …

CFR 371 D. Vessels ( Union Find )

Problem - 371D - Codeforces 細節需要想一下下,怎麼快速存取下一個非滿的盤子的下標。 #include <bits/stdc++.h> using namespace std; const int MAXN = 2e5 + 5; const int MAXA = 1e9 + 9; const int MAXM = 2e5 + 5; int n; int a[ MAXN ], f[ MAXN ]; int m; struct </bits/stdc++.h>…

POJ 1182 Food Chain ( Union Find )

1182 -- 食物链 這題解法我覺得很特別,是要維護哪些情報有相互證明的關係,哪些情報有相互排斥的關係,哪些情報沒有關係。這些都可以透過並查集的一些小技巧解決。 #include <bits/stdc++.h> using namespace std; const int MAXN = 1e6 + 4; const int MAXK = 1e5 + 5; in</bits/stdc++.h>…

TOI 日記 Day3

今日もまた何もしなかった気がする。朝はJOI春合宿系の問題を色々解こうとしてみたが、手に負えなかった。予選 / 本選のとは全く違うレベルだとしか思えません。 午後は教授が vjudgeで宿題だと出された IOI practice - Virtual Judge グラフ色々簡単な問題…