http://web2.ck.tp.edu.tw/~step5/probdisp.php?pid=0094
這題是簡單的排序加區間和最大值搜尋。
一切都是從這首歌開始說起………..
總之就是給你多筆事件,由時間、警告度、番茄汁量組成。求連續N個時間中警告度和的最大值,如果警告度一樣,第二筆序就是番茄汁(笑… )
我拿來練習重載運算子。因為自己建的struct沒有運算規則(廢話….),丟到sort()叫他排序他一定擺臭臉給你CE,所以要先定義你的struct的運算規則,幾本上STL的比大小都用小於’<’符號比較,所以定義小於就可以讓STL正常運作。
基本上先打 inline bool operator< (const TYPE NAME a,const TYPENAME b){….你的函式…} inline(可有可無) bool (比大小當然回傳bool) operator< (關鍵字operator 加上符號就可以定義運算規則) const (把變數設成唯讀,不這樣編譯不會過) TYPE NAME (看你的sturct 名字叫什麼,宣告兩個吧) 這樣寫完後,就可以開心的在程式裡用 TYPE NAME a,b; if(a>b) 這種語法了, 其他加減乘除也可以重載,回傳值改成你的結構名字就可以了。
這題我定義完運算子就丟到sort裡照時間從小排到大,然後檢查寬度是N的區間的和,記錄最大值並輸出。
1 |
|