匿名
首先先跟大家確認正式賽的時間~
8/5 (六)晚上十點到十二點可以嗎?
如果不行的話請在底下留言
然後說一下8/4~8/6可以的日期和時間
我希望想參加的都能參加
所以就配合一下囉😊
然後是最終的計分板:
http://i.imgur.com/c5ExOqw.png
編號1, 7, 11, 5, 6, 8, 15, 18確定可以參加正式賽
如果你想參加可是你的編號還沒有在記分板裡面或是還沒有答對第一題
麻煩用留言或站內信通知我喔!
以下是題解(我的程式碼最後面有測試資料輸入&輸出可以自行檢查,還有所有的AC程式碼,大家可以互相觀摩)
第一題 - A+B問題
就是在程式競賽中經典程度僅次於「輸出”Hello world!”」的A+B問題XD
維基百科有專門的頁面: https://zh.wikipedia.org/zh-tw/A+B问题
不過可能有人沒碰過多筆輸入,反正就是用個跑T次的迴圈整個包起來就好
應該不需要再多解釋了吧
時間複雜度:O(1);空間複雜度:O(1)。
我的程式碼: https://pastebin.com/Bb49QvPe
第二題 - 數對
就照著題目說的做就可以了
用雙層迴圈檢查每一個可能的數對,統計個數。
時間複雜度:O(n^2);空間複雜度:O(1)。
我的程式碼: https://pastebin.com/8r3dn8zE
第三題 - 最大總和遞增子序列
這題比較複雜一點
不過如果你已經學過動態規劃(Dynamic Programming)的概念應該也不會太難
可以參考: https://zh.wikipedia.org/wiki/动态规划
使用一個陣列B,b[i]儲存的數為「最後一個所留下的數是第i個的條件下的最大總和」,答案為所有b[i]的最大值。
先看程式碼,不懂再問我
時間複雜度:O(n^2);空間複雜度:O(n)。
我的程式碼: https://pastebin.com/jwS1s6hy
***bonus***
如果這題的N和a[i]的最大值都是十萬,你可以用更有效率的方法解出這一題嗎 ;)
解出來的把程式碼站內信給我,第一個解出來的我給5000M幣(已解出,可以參考我的程式碼: https://pastebin.com/bmPUzq0m
你可能有興趣的文章...
全部留言
B1 恭喜答對!!(沒有很認真檢查不過應該對啦,只是你第29行回傳型態要改成 long long😂) 你覺得ok的話就把程式碼跟大家分享吧~ 之後有時間的話考慮解說一下這要怎麼做 有興趣先自行google線段樹(segment tree)或是樹狀數組(binary indexed tree) 我的程式碼: pastebin.com/bmPUzq0m
版主太強大拉 簡潔有力的Code 是我的長度的三分之一QQ 我也來分享一下我的Code https://pad.infor.org/qrVGHu0z 我是用線段樹維護區間最大值 配合區間查詢單點修改 如果你已經會O(n^2)的作法 要壓成O(nlogn)的話 可以想一想怎麼用O(logn)的時間找dp[1~x] 中 a[i]比a[x]小或等於的最大值(a[i]代表原序列第i格的值)