火車票區間演算法 設計
拋磚引玉, 考慮不周到的地方請大家提意見,在zhihu上也提問了 問題描述這樣, 一列火車有m個座位,n個區間段,現在有x個人上車,x< m*n, 當第i (a-b)個人上車時,必須能夠找到一個最優的座位(儘量利用已售過區間的座位,讓車票售出量最多) ,寫出查詢速度,訂票速度(包括取消票) 題中可知 m >> n
站點通過查詢將其轉化為一個自然數序列,方便計算 演算法1 現在看來效率比較低 我開始是這樣設計,仿照記憶體分配演算法, 暫且不考慮位元組優化 emptyRange{ short number short size nextRange } 每個座位是個SkipList
查詢 火車票是否有座就遍歷連結串列 找到 node.number <= a && node.number+size >=b 就認為有座
訂票 這個要求最優解 ,找產生碎片最小的情況,也就是說 size - (b-a) 是最小的,然後修改該空白node,如果分成兩個區間就增加一個node
取消 找到對應節點,把該空白區域加入到列表裡,需要合併的合併
匆匆想的,有些細節還沒考慮清楚,我是想大家一起討論下, 看看有沒有更好的演算法
Btw, 從關聯式資料庫 -> NoSql ->? 下一個是什麼呢?我想有沒有可能是自定義資料結構伺服器呢? Redis算是一個資料結構伺服器,目前不太清楚設計好一種演算法後,是否很容易整合進去。或者將來是否有一種開放的資料結構伺服器?資料結構伺服器上的資料者定期儲存或者同步到資料庫中。
剛才查了下 最多停靠站的火車是62個,車廂最長20節左右,客車座位數一節我們可以照200算(無坐也算) 一個座位最壞情況下 是n/2長連結串列,所有座位都是這樣,嗯,總共一列車最壞可以用到20*200* (2+2+4) * (62/2 * 1.33)大概是 1289600 1.2M個位元組 8G可用記憶體 可以儲存 8*1024*1024*1024/1289600 = 6661輛 沒有查到客列總數,想來不會超過一萬輛 照10000算 12天 20臺電腦也夠了
演算法 2 受無鋒之刃 演算法1 啟發
為所有區段生成一個二維陣列,排序如下
A B C D
B C D
C D
D
每個節點儲存該區間車票數量和車票
查詢 找到起始站點,再到其中找終點,從該點向下的節點都是有票得,然後再到起始站點-1 向下找 總共時間複雜度為O(i)
訂票 同查詢,找到該區段,如果沒有,就找終點+1, 然後,起點-1, 終點+2,交錯找下去,找到第一張票,複雜度O(i*(n-i)),找到之後將該區間分解,除去訂票區間,然後將剩餘的掛到相應的站點下
取消 遍歷,找以該票起始點為終點的空白段,和以該票終點為起始點的空白段,如果找到就合併,找不到就直接加入到以該票起始和終點統計的區段 還沒想好,如果遍歷需要花O(m)
相關文章
- 車票100–火車票介面開發文件
- 火車票調整預售(轉)
- PostgreSQL與12306搶火車票的思考SQL
- Python3.6實現12306火車票自動搶票Python
- 火車售票軟體系統的設計方案
- 2019春運火車票搶票攻略,候補購票撿漏搶票技巧
- 飛豬:清明假期火車票和景區預訂量環比增長超100%
- Python3實現搶火車票功能(下)Python
- 多執行緒賣火車票簡單例子執行緒單例
- 火車票預訂的一些問題
- 實驗2-2-9 計算火車執行時間 (15分)
- 從 Kafka 看時間輪演算法設計Kafka演算法
- 12306火車票搶票Python程式碼最新完整版釋出,五一搶票就靠它了!Python
- 12306候補購票怎麼用?12306火車票候補購票使用攻略和注意事項
- 多車軌道路徑規劃演算法設計演算法
- 談談搶火車票的技術、技巧,以及暗藏其中的套路
- STL區間成員函式及區間演算法總結函式演算法
- XYD 統計區間
- 汽車生產車間PMC組態畫面應該怎麼設計
- 搶火車票這個事吧,其實我也能做!(python黑科技)Python
- 教你用Python動重新整理搶12306火車票,附原始碼!Python原始碼
- Java+SpringBoot+vue+element實現火車訂票平臺管理系統JavaSpring BootVue
- 乾貨 | 資料為王,攜程國際火車票的 ShardingSphere 之路
- 從《怪物火車》與《欺詐之地》看RougeLike卡牌如何做設計提升?
- 程式設計師在火車站寫程式碼,大媽直忙叫保安:黑客程式設計師黑客
- 基於數字化工廠的車間佈局設計框架框架
- 票據系統設計
- 貪心演算法篇——區間問題演算法
- 中國鐵總:春運火車票已售出3.83億張 日均1320萬張
- 中國旅遊研究院:2023年十一假期火車票已售1.46億張
- Java語言多執行緒實現一個火車站賣票系統Java執行緒
- 鐵路12306:2023年五一假期淄博火車票搜尋量環比增長988%
- 貪心演算法之無重疊區間演算法
- 05.Map 案例 滑動區間演算法演算法
- 匹配火車車次的正規表示式
- [譯] 偉大設計與好設計之間區別是什麼?這裡告訴你真相
- 【設計模式】第十二篇:車票購買場景中的代理模式講解設計模式
- [JOI 2013 Final]搭乘 IOI 火車
- 貪心演算法-找不重疊的區間段演算法