當前位置:首頁 » 交易知識 » 股票交易動態規劃
擴展閱讀
英利浦垃圾股票代碼 2025-01-24 19:07:20

股票交易動態規劃

發布時間: 2023-04-12 12:23:33

1. 股票買賣有哪幾種策略

第一種:不同情緒階段有不同的操作特點和策略。對於投資者來說,買股票都是需要買主流人氣股的,對於轉折時低吸人氣股的恐慌殺跌,買轉勢板。第二種:買股、選股的時候要做到:手中有股,心中無股。不要受手裡現有的股票干擾,不能局限於自選股,要看當時整個市場資金選擇的主流熱點中的最強股。第三種:關於賠錢的交易分析。第四種:跟隨。這個指的就是,不見買入信號不買入,投資者一定要跟隨果斷的買在啟動點,因為敢於預判的資金都是有能力去引導,當預判偏離了預期的時候,可以四處點火去修正,所以在股市中的操作,就要看資金的動向,跟隨市場資金是不會出錯的。第五種:在新題材出現的第一天第一時間買入龍頭或龍二。作為投資者來說要買進超預期的真正強的股票,打有溢價的板。在新題材出現的第一天,第一時間買入龍頭或者龍二最安全,第二天往往高開,龍頭甚至一字板漲停,第二天的溢價最高,而不是溢價兌現的板,板塊高潮第二天買跟風股,就屬於第一天漲停的溢價兌現。

2. 股市交易規則股票買入賣出規則

股票賣出是有時間限制的,股票可以買賣的時間是工作日(周一~周五)上午9:30~11:30,下午13:00~15:00,節假日以及交易所休假日除外,其他時間不能進行股票交易。在交易規定的時間內股票買賣還遵循T+1規則,也就是股票買入之後需要下一個工作日才可以賣出。
拓展資料:
股票交易
一字型:即開盤價、收盤價、最高價、最低價在同一價位。
可分為以下幾種情況:
(1)漲停:開盤即以漲停價開出,至收盤為止,漲停未被打開過,全天均以最高價成交,說明買盤旺盛,該股屬於強勢股。
(2)跌停:開盤即以跌停價開出,至收盤為止,跌停未被打開過,全天均以最低價成交,說明賣盤沉重,該股屬於弱勢股。
(3)交易非常冷清,全日交易只有一檔價位成交。
交易時間
周一至周五 (法定休假日除外)
上午9:30 --11:30 下午13:00 -- 15:00
競價成交
(1) 競價原則:價格優先、時間優先。價格較高的買進委託優先於價格較低買進委託,價格較低賣出委託優先於較高的賣出委託;同價位委託,則按時間順序優先。
(2) 競價方式:上午9:15--9:25進行集合競價;上午9:30--11:30、下午13:00--15:00進行連續競價 (對有效委託逐筆處理)。
交易單位
(1) 股票的交易單位為「股」,100股=1手,委託買入數量必須為100股或其整數倍;
(2) 基金的交易單位為「份」,100份=1手,委託買入數量必須為100份或其整數倍;
(3) 國債現券和可轉換債券的交易單位為「手」,1000元面額=1手,委託買入數量必須為1手或其整數倍;
(4)當委託數量不能全部成交或分紅送股時可能出現零股 (不足1手的為零股),零股只能委託賣出,不能委託買入零股。
交易帳戶
新股民要做的第一件事就是為自己開立一個股票帳戶(即股東卡)。股票帳戶相當於一個「銀行戶頭」,投資者只有開立了股票帳戶才可進行證_買賣。
如要買賣在上海、深圳兩地上市的股票,投資者需分別開設上海證_交易所股票帳戶和深圳證_交易所股票帳戶,開設上海、深圳A股股票帳戶必須到證_登記公司或由其授權的開戶代理點辦理。
股票帳戶有許多不同種類。個人投資者如需買賣滬、深股市的A股股票,則需開設A股股票帳戶。

3. 動態規劃經典案例

斐波那鍥數列1,1,2,3,5,8,13,。。。
給N輸出數列第N個數

上樓梯問題,一次只能上1 or 2;一個n階的樓梯,有多少走法?

輸入一個整型數組,數組中的一個或連續多個整數組成一個子數組。求所有子數組的和的最大值。例如
輸入: nums = [-2,1,-3,4,-1,2,1,-5,4]
輸出: 6
解釋: 連續子數組 [4,-1,2,1] 的和最大,為 6。

假設把某股票的價格按照時間拆族攜先後順序存儲在數組中,求買賣該股票一次可能獲得的最大利潤是多少?
例如:
輸入: [7,1,5,3,6,4]
輸出: 5
解釋: 在第 2 天(股票價格 = 1)的時候買入,在第 5 天(股票價格 = 6)的時候賣出,最大旅伏利潤 = 6-1 = 5 ;()利潤不能是 7-1 = 6, 因為賣出價格需要大於買入價格。

在一個 m*n 的棋盤的每一格都放有一個禮物,每個禮物都有一定的價值(價值大於 0)。你可以從棋盤的左上角開始拿格子里的禮物,並每次向右或者向下移動一格、直到到達棋盤的右下角。給定一個棋盤及其上面的禮物的價值,請計穗肆算你最多能拿到多少價值的禮物?

總結:動態規劃問題的核心在於定於dp函數,找個i和i-1之間的關系,可以有限降低演算法的復雜度。

4. 如何建立自己的演算法交易

一、傳統方法

在某些假設下的顯式最優策略

  • 【Bertsimas, Dimitris, and Andrew W. Lo. "Optimal control of execution costs."Journal of Financial Markets1.1 (1998): 1-50.】這里假設了不同的價格沖擊函數,然後求解得到最優的交易執行方案。根據參數的不同,最優的策略要麼是全部開頭賣掉、均勻減倉、或者全部最後賣掉。https://stuff.mit.e/afs/athena.mit.e/user/d/b/dbertsim/www/papers/Finance/Optimal%20control%20of%20execution%20costs.pdf

  • 【Almgren, Robert, and Neil Chriss. "Optimal execution of portfolio transactions." Journal of Risk 3 (2001): 5-40. 】這篇文章我們專欄前面有講過,很著名的 Almgren-Chriss 模型。https://www.smallake.kr/wp-content/uploads/2016/03/optliq.pdf張楚珩:【交易執行】Almgren-Chriss Model

  • 【Guéant O, Lehalle C A, Fernandez-Tapia J. Optimal portfolio liquidation with limit orders[J]. SIAM Journal on Financial Mathematics, 2012, 3(1):740-764.】這篇文章我們專欄前面也有講過;前面的 Almgren-Chriss 其實考慮的是使用市價單,而這里考慮使用限價單進行交易。https://arxiv.org/pdf/1106.3279.pdf張楚珩:【交易執行】限價單交易執行

  • 【Guéant, Olivier, and Charles‐Albert Lehalle. "General intensity shapes in optimal liquidation." Mathematical Finance 25.3 (2015): 457-495.】這里也是考慮限價單進行交易,但是與前面不同的是:前一個假設限價單考慮的成交概率隨著價格指數衰減,而這里考慮了一個更加一般的形式。https://arxiv.org/pdf/1204.0148.pdf

  • 【Cartea A, Jaimungal S. Optimal execution with limit and market orders[J]. Quantitative Finance, 2015, 15(8): 1279-1291.】這里考慮同時使用限價單和市價單進行交易,從而能夠完成 Almgren-Chriss 模型所規定的方案,或者找到一個更有的交易方案。https://sci-hub.se//https://www.tandfonline.com/doi/abs/10.1080/14697688.2015.1032543

  • 【Bulthuis, Brian, et al. "Optimal execution of limit and market orders with trade director, speed limiter, and fill uncertainty." International Journal of Financial Engineering 4.02n03 (2017): 1750020.】也是考慮使用限價單和市價單一起交易。https://arxiv.org/pdf/1604.04963.pdf張楚珩:【交易執行】市價單+限價單 最優執行

  • 【Cartea A, Jaimungal S. Incorporating order-flow into optimal execution[J]. Mathematics and Financial Economics, 2016, 10(3): 339-364.】這里考慮市場所有交易者的訂單都會產生線性的短期/長期市場沖擊,因此可以估計未來一段時間的訂單流向(買單總量和賣單總量的差),從而能夠在 Almgren-Chriss 模型的基礎上進行一定的調整,使得策略更優。https://sci-hub.se//https://link.springer.com/content/pdf/10.1007/s11579-016-0162-z.pdf

  • 圖書

  • 【Cartea Á, Jaimungal S, Penalva J. Algorithmic and high-frequency trading[M]. Cambridge University Press, 2015.】講交易執行的基礎上,更側重講了一些數學工具。

  • 【Guéant O. The Financial Mathematics of Market Liquidity: From optimal execution to market making[M]. CRC Press, 2016.】從 Almgren-Chriss 模型開始講,一直到相應的拓展和實際的問題,十分推薦。

  • 融合對於市場環境隱變數的估計

  • 【Casgrain P, Jaimungal S. Trading algorithms with learning in latent alpha models[J]. Mathematical Finance, 2019, 29(3): 735-772.】市場交易者會根據不同的市場掛單和價格走勢而採取不同的反映,因此我們也可以根據歷史數據學習到各種情況下的價格後驗分布,從而更好地幫助我們進行交易執行或者套利。最後的結果可以看做在 Almgren-Chriss 模型的基礎上外加了一個調控項,反映我們對於未來的預期。https://arxiv.org/pdf/1806.04472.pdf

  • 如何實現以按量加權平均價格(VWAP)交易

  • 【Kakade, Sham M., et al. "Competitive algorithms for VWAP and limit order trading." Proceedings of the 5th ACM conference on Electronic commerce. 2004.】從在線學習的角度提出了幾個用於使得我們交易到 VWAP 價格的模型。為什麼會關注 VWAP 的交易執行?當大的流通股股東需要減持的時候,為了避免直接出售引起的價格波動,一般是把需要減持的股票賣給券商,然後由券商來拆單出售,而交易價格一般為未來一段時間的 VWAP,因此券商需要盡量以 VWAP 來交易執行。https://sci-hub.se//https://dl.acm.org/doi/abs/10.1145/988772.988801

  • 【Białkowski, Jędrzej, Serge Darolles, and Gaëlle Le Fol. "Improving VWAP strategies: A dynamic volume approach." Journal of Banking & Finance 32.9 (2008): 1709-1722.】改進對於交易量的建模,從而得到更好的 VWAP 交易演算法。把交易量拆分為兩個部分,一部分是市場整體的交易量變動,另一部分是特定股票上的交易量模式。https://sci-hub.se//https://www.sciencedirect.com/science/article/pii/S0378426607003226

  • 以按時間加權平均價格(TWAP)交易

  • 為了對稱,可以介紹一下另一種加權平均的情形 TWAP,這種情形實現起來相對比較簡單;如果不考慮市場沖擊,就拆分到每個時間步上均勻出售即可實現。

  • 可以證明 TWAP 交易在以下兩種情形下最優:市場價格為布朗運動並且價格沖擊為常數;對於晚交易沒有懲罰(其實更晚交易意味著面臨更大的風險),但是對於最後未完成交易的懲罰較大。

  • 二、強化學習方法

    基於傳統模型的強化學習方法

  • 【Hendricks D, Wilcox D. A reinforcement learning extension to the Almgren-Chriss framework for optimal trade execution[C]//2014 IEEE Conference on Computational Intelligence for Financial Engineering & Economics (CIFEr). IEEE, 2014: 457-464.】本專欄有講。https://arxiv.org/pdf/1403.2229.pdf

  • 強化學習 + 交易執行(Paper/Article)

  • 【Nevmyvaka Y, Feng Y, Kearns M. Reinforcement learning for optimized trade execution[C]//Proceedings of the 23rd international conference on Machine learning. 2006: 673-680.】比較經典的一篇,發在 ICML 上,本專欄前面有講。使用 DQN 方法,實現形式接近 DP。http://smallake.kr/wp-content/uploads/2019/01/rlexec.pdf

  • 【Dabérius K, Granat E, Karlsson P. Deep Execution-Value and Policy Based Reinforcement Learning for Trading and Beating Market Benchmarks[J]. Available at SSRN 3374766, 2019.】使用了 DDQN 和 PPO 方法,基於生成的價格序列來進行實驗,使用特定的模型考慮短期和長期市場沖擊。https://sci-hub.se//https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3374766

  • 【Ning B, Lin F H T, Jaimungal S. Double deep q-learning for optimal execution[J]. arXiv preprint arXiv:1812.06600, 2018.】DDQN 的強化學習解法,在美股上實驗。https://arxiv.org/pdf/1812.06600.pdf

  • 【Lin S, Beling P A. An End-to-End Optimal Trade Execution Framework based on Proximal Policy Optimization[C]//IJCAI. 2020: 4548-4554.】使用 PPO 的解法,比較有意思的是這裡面的實驗結果顯示,使用 LSTM 和把歷史數據全部堆疊起來用 MLP 效果差距不大。也是在美股上實驗。https://www.ijcai.org/Proceedings/2020/0627.pdf

  • 【Fang Y, Ren K, Liu W, et al. Universal Trading for Order Execution with Oracle Policy Distillation[J]. arXiv preprint arXiv:2103.10860, 2021.】在使用強化學習的基礎上,引入了一個教師網路,教師網路學習一個基於未來數據的策略,並且用於訓練學生網路。本專欄前面有講。https://www.aaai.org/AAAI21Papers/AAAI-3650.FangY.pdf

  • 【Vyetrenko S, Xu S. Risk-sensitive compact decision trees for autonomous execution in presence of simulated market response[J]. arXiv preprint arXiv:1906.02312, 2019.】ICML-19 的文章。構造了一個可以反映市價單市場沖擊的模擬器;使用 tabular Q-learning 來學習基於決策樹的模型;使用特徵選擇的方法來篩選特徵。通過以上方式,能夠學習到一個模型幫助決策什麼時候應該下市價單、什麼時候應該下限價單。https://arxiv.org/pdf/1906.02312.pdf

  • 【Akbarzadeh N, Tekin C, van der Schaar M. Online learning in limit order book trade execution[J]. IEEE Transactions on Signal Processing, 2018, 66(17): 4626-4641.】從 online learning 的視角來解決這個問題,使用 DP 類的方法,分析 regret 。http://repository.bilkent.e.tr/bitstream/handle/11693/50289/Bilkent-research-paper.pdf?sequence=1

  • 【Wei H, Wang Y, Mangu L, et al. Model-based reinforcement learning for predictions and control for limit order books[J]. arXiv preprint arXiv:1910.03743, 2019.】專欄剛剛講了的一篇文章,使用 model-based 類的強化學習演算法,直接學習一個世界模型,然後讓強化學習策略通過和世界模型的交互進行學習。https://arxiv.org/pdf/1910.03743.pdf

  • 【Karpe M, Fang J, Ma Z, et al. Multi-agent reinforcement learning in a realistic limit order book market simulation[J]. arXiv preprint arXiv:2006.05574, 2020.】這里的多智能體似乎適用於結合歷史數據生成其他市場參與者的動作,而最優策略的學習仍然是使用單智能體 DDQN 方法來做。他們開源了一個考慮多智能體的模擬環境 ABIDES。https://arxiv.org/pdf/2006.05574.pdf

  • 【Schnaubelt M. Deep reinforcement learning for the optimal placement of cryptocurrency limit orders[J]. European Journal of Operational Research, 2022, 296(3): 993-1006.】研究數字貨幣上如何下限價單。對比了 PPO 和 DDQN,發現 PPO 更好。探索出了一些重要的因子,比如 current liquidity cost,queue imbalance 等。https://www.econstor.eu/bitstream/10419/216206/1/1696077540.pdf

  • 強化學習 + 交易執行 (Thesis)

  • 【Hu R. Optimal Order Execution using Stochastic Control and Reinforcement Learning[J]. 2016.】KTH (瑞典)工程學院碩士論文。演算法直接是基於價值函數的動態規劃。不過提供了比較詳細的模擬環境和演算法偽代碼。https://www.diva-portal.org/smash/get/diva2:963057/FULLTEXT01.pdf

  • 【Rockwell B. Optimal Order Execution with Deep Reinforcement Learning[J]. 2019.】加拿大蒙特利爾高等商學院碩士論文。使用 TD3 和 DDPG 演算法,不過實驗是基於人工生成的數據的(skew-normal Brownian motion)。https://biblos.hec.ca/biblio/memoires/m2019a628776.pdf

  • 【Reiter M B. An Application of Deep Reinforcement Learning for Order Execution[D]. School of Engineering Science, Osaka University, 2020.】多倫多大學本科畢業論文。在使用 A3C 演算法的基礎上,考慮了使用教師學生網路的方式進行遷移學習,並且考慮了短期市場沖擊。https://mbreiter.github.io/doc/thesis.pdf

  • 強化學習 + 風險偏好

  • Robust Risk-Sensitive Reinforcement Learning Agents for Trading Markets

  • Deep equal risk pricing of financial derivatives with non-translation invariant risk measures

  • 強化學習 + 做市策略

  • Optimal Market Making by Reinforcement Learning

  • Optimizing Market Making using Multi-Agent Reinforcement Learning

  • Deep Reinforcement Learning for Market Making

  • Deep Recurrent Q-Networks for Market Making

  • Robust Market Making via Adversarial Reinforcement Learning

  • Market making via reinforcement learning

  • 強化學習 + 資產組合

  • Deep Stock Trading: A Hierarchical Reinforcement Learning Framework for Portfolio Optimization and Order Execution

  • Robo-Advising: Enhancing Investment with Inverse Optimization and Deep Reinforcement Learning

  • Large Scale Continuous-Time Mean-Variance Portfolio Allocation via Reinforcement Learning

5. 股票交易異動規則

如果上市公司股票出現異常波動,交易所將實施臨時停牌制度。相關的暫停規則如下:

滬深主板:

1.連續三個交易日日收盤價偏離度累計達到20%。

2.連續三個交易日日均換手率與前五個交易日日均換手率之比為30倍,連續三個交易日累計換手率為20%。

上述兩點停牌一小時,停牌時間跨越14:57,當日14:57復牌。

3.深交所新股上市首日,盤中成交價較當日開盤價首次上漲或下跌超過10%。交易會暫時停牌30小時,之後可以漲到44%。

4.股票在風險警示板的日收盤價偏離度連續三個交易日累計達到15%,應當停牌至少一個交易日。

創業板和科技創新板:

1.首日漲跌幅比開盤價高30%或60%,各停牌10分鍾。

2.連續三個交易日內每日收盤價偏離值累計達到30%的,應當暫停交易至少一個交易日。

[擴展信息]

股票異常波動一般是短期資金的大規模炒作,或者公司重組等題材的炒作造成的。

基本解釋

根據交易所交易規則,連續三個交易日收盤價偏離度超過20%(ST,*ST為15%),不存在根據有關規定應當披露的未披露事項,或者與該事項有關的對公司股票交易價格有較大影響的計劃、談判、意向、協議等信息,稱為股票交易異常波動。上交所是指連續三個交易日交易達到漲停限制時的異常波動(漲跌均包括在內)。

深交所連續三個交易日收盤價漲幅累計偏離度20%。如果不正常,就暫停一個小時。

出現下列情形之一的,證券交易所將根據市場情況確定是否屬於股票交易異常波動。(1)如果一隻股票連續三個交易日的日收盤價偏離度達到20%(2011年以前特別處理的ST和*ST為15%,現在修正為12%),則屬於異常波動。解釋:偏離值是指股票與相關基準指數的偏離值。在上海證券交易所上市的股票的基準指數為上海證券交易所,在深圳證券交易所上市的股票的基準指數為深圳證券交易所。偏差值的計算方法如下:假設股票(非ST或S類)今日下跌10%,而相關基準指數上漲1%,其當日偏差值為=-10%-1%=-11%,即該股票當日偏差值下跌11%。但有些股票(非ST或S類)經常會遇到連續三天上漲或下跌的累計偏差值超過20%的情況,而這20%是把該股票連續三天的偏差值加起來算出來的。比如股票漲跌基準指數,第一天偏差8% -1% 9%,第二天偏差7% 2% 5%,第三天偏差10% 3% 7%,三天累計偏差21%。(2)股票連續五個交易日被列入「股票與基金公開信息」;(三)股票價格連續三個交易日振幅達到15%。(4)股票連續五個交易日日均成交量日均漲幅達到50%;(五)證券交易所或者中國證監會認為屬於異常波動的其他情形。前款第(一)至第(四)項所列情形之一被認定為異常波動的,自公告之日起重新開始異常波動的計算。上市公司因召開股東大會、發布定期報告等原因例行停牌時。,其異常波動的計算從股票復牌之日重新開始。

6. 股票漲跌有什麼規律嗎

從歷史經驗來看,股市在戰爭期初是下跌的,戰爭開打以後會加速下跌,在戰爭中期會恢復到原來的運行軌道中。戰爭後期,如果是勝利的,那麼股市會大漲,如果是失敗的,股市會走弱。從中國的形勢來看,主要是以恢復上漲為主的,因為戰爭對市場的影響是有限的。

因為戰爭中能握者夠刺激經濟大生產,這樣有利於企業加快生產,加快資金周轉。所以從這個角度來說是對企業有利的。股票看是賠還是賺,主要就是看股票的價格跟買入時的價格之間相比是變高了還是變低了。

如果變高了就是賺了,變低了就是賠了。股票交易指的是股票投資者之間按照市場價格對已經發行上市的股票所進行的買賣活動。股票進行公開轉讓的場所首先就是證券交易所。

股票價格變動
股票消喊價格的變動,簡單來說指的就是買方和賣方的的博弈,因為買的人覺得股票後期的價值會高於現價,所以會買入,而賣出的人會覺得股票後期的價值會降低,所以賣出。如果買的人大大多於賣的人那麼就會推段橋薯高股票的價格。但是如果當賣方力量大於漲停時的買方力量時,漲停就會被打開。

比如,X(1+10%)的價位有10000手買單,也就是「封漲停板」。但如果不斷的有拋盤湧出,並且賣方大於買方的話,10000手交易完成後,賣方如果想交易,就不得不降低價格來賣出,這時股票的價格就會下跌,也就是我們俗稱的「打開漲停」。此時的買方賣方又開始博弈。

而此外,影響股票漲跌的因素還有很多,大致分成,宏觀因素和微觀因素。宏觀因素主要包括國家政策、戰爭霍亂以及宏觀經濟等;而微觀因素主要是市場因素,公司內部、行業結構以及投資者的心理等。

7. 股票的交易時間段是怎樣的

根據A股股票交易時間來劃分為三個階段和四個節點:
早盤集合競價:9:15:~9:30分屬於早盤集合競價,而9:15~9:20分可以掛單也可以撤單;9:20~9:25分可以掛單但不可以撤單;9:25~9:30分可以接受掛單,但數據不提交交易所,要等到9:30分才會提交數據到交易所。
盤中撮合交易:9:30~11:30分和13:00~14:57分這個時間段稱為盤中撮合交易時間段,直接根據大家的實時掛單情況進行申報數據,撮合成交交易。
尾盤集合競價:14:57~15:00點為尾盤競價時間段,這個時候段只有3分鍾,根據這3分鍾的情況撮合成交,以成交額最大的那筆單為股票當天的收盤價收盤。
拓展資料:
一入股市深似海,從此股票似親人。不過,入股市首先得懂股市,懂得股市行話,才能更好地在股市中遨遊,股票交易規則如下:
一、交易時間
股市交易講究先來後到,講究時間優先和價格優先,不像在菜市場中大家可以一哄而上,它有規定的時間進行買賣,而這個時間跟我們上班的時間基本上差不多,也是周一到周五,法定節假日雙休日都是沒有開放的,一般是每天上午9:30到11:30,下午13:00至15:00,一天4個小時,據說操盤手的上班時間也是這樣,是不是特別爽。
集合競價(9:15—9:25)是一個特殊時間段,這段時間可以委託買進和賣出單子,其中9:15-9:20可以撤單,9:20—9:25不能撤單,此時成交量最大的價格就是開盤價。
二、交易制度
我大A股很正經,它實行T+1交易制度,當天買的第二天才能賣掉,當天賣的股票第二天才能把錢錢取出來;而全世界包括HongKong都是實行T+0,當天買當天就可以賣出,不過這兩種制度互有利弊啦~
三、漲跌幅限制
股票波動如果太瘋狂的話,可能會引起市場合投資者的不適,所以不能太任性,它設有單日最大漲跌幅,一般情況下,普通股是10%,ST股更嚴格,只有5%。
但也有一些身份特殊首缺沒的沒有這個限者納制,比如上市首日的新股,借殼上市的股票,回復上市日的退市股票,還有最近紅得發紫的科創板,漲跌幅放寬至20%,新股上市前5個交易日還不設漲跌幅限扮帆制,是不是夠牛掰~
四、交易和報價單位
平常毛毛經常聽身邊的小夥伴說買了幾百股的股票,其實這個手法不是很正規,應該是講幾手的。股票的報價和交易單位為股,一支股票的最低交易額為一手,一手=100股,委託買入和賣出必須是1手,或為其整數倍。
比方說5元1股的股票,你需要買入的最低額度為100股,也就是1手,需要花費5*100=500元。
五、交易方式
包括櫃台,交易商進行集中交易,減少了市場莊家這環節,成本相對交易所要低;電腦PC端操作,下載相應的證券公司軟體,比如同花順、大智慧的PC端進行買賣操作;手機移動端,是目前最流行快捷的方式,現在每個證券公司都有相應的APP,可以在手機上下載進行股票交易。

8. 什麼是動態規劃如何運用動態規劃解決實際問題

我也不明白,找一下看有用沒。

動態規劃演算法的應用
一、動態規劃的概念
近年來,涉及動態規劃的各種競賽題越來越多,每一年的NOI幾乎都至少有一道題目需要用動態規劃的方法來解決;而競賽對選手運用動態規劃知識的要求也越來越高,已經不再停留於簡單的遞推和建模上了。
要了解動態規劃的概念,首先要知道什麼是多階段決策問題。
1. 多階段決策問題
如果一類活動過程可以分為若干個互相聯系的階段,在每一個階段都需作出決策(採取措施),一個階段的決策確定以後,常常影響到下一個階段的決策,從而就完全確定了一個過程的活動路線,則稱它為多階段決策問題。
各個階段的決策構成一個決策序列,稱為一個策略。每一個階段都有若干個決策可供選擇,因而就有許多策略供我們選取,對應於一個策略可以確定活動的效果,這個效果可以用數量來確定。策略不同,效果也不同,多階段決策問題,就是要在可以選擇的那些策略中間,選取一個最優策略,使在預定的標准下達到最好的效果.
2.動態規劃問題中的術語
階段:把所給求解問題的過程恰當地分成若干個相互聯系的階段,以便於求解,過程不同,階段數就可能不同.描述階段的變數稱為階段變數。在多數情況下,階段變數是離散的,用k表示。此外,也有階段變數是連續的情形。如果過程可以在任何時刻作出決策,且在任意兩個不同的時刻之間允許有無窮多個決策時,階段變數就是連續的。
在前面的例子中,第一個階段就是點A,而第二個階段就是點A到點B,第三個階段是點B到點C,而第四個階段是點C到點D。
狀態:狀態表示每個階段開始面臨的自然狀況或客觀條件,它不以人們的主觀意志為轉移,也稱為不可控因素。在上面的例子中狀態就是某階段的出發位置,它既是該階段某路的起點,同時又是前一階段某支路的終點。
在前面的例子中,第一個階段有一個狀態即A,而第二個階段有兩個狀態B1和B2,第三個階段是三個狀態C1,C2和C3,而第四個階段又是一個狀態D。
過程的狀態通常可以用一個或一組數來描述,稱為狀態變數。一般,狀態是離散的,但有時為了方便也將狀態取成連續的。當然,在現實生活中,由於變數形式的限制,所有的狀態都是離散的,但從分析的觀點,有時將狀態作為連續的處理將會有很大的好處。此外,狀態可以有多個分量(多維情形),因而用向量來代表;而且在每個階段的狀態維數可以不同。
當過程按所有可能不同的方式發展時,過程各段的狀態變數將在某一確定的范圍內取值。狀態變數取值的集合稱為狀態集合。
無後效性:我們要求狀態具有下面的性質:如果給定某一階段的狀態,則在這一階段以後過程的發展不受這階段以前各段狀態的影響,所有各階段都確定時,整個過程也就確定了。換句話說,過程的每一次實現可以用一個狀態序列表示,在前面的例子中每階段的狀態是該線路的始點,確定了這些點的序列,整個線路也就完全確定。從某一階段以後的線路開始,當這段的始點給定時,不受以前線路(所通過的點)的影響。狀態的這個性質意味著過程的歷史只能通過當前的狀態去影響它的未來的發展,這個性質稱為無後效性。
決策:一個階段的狀態給定以後,從該狀態演變到下一階段某個狀態的一種選擇(行動)稱為決策。在最優控制中,也稱為控制。在許多間題中,決策可以自然而然地表示為一個數或一組數。不同的決策對應著不同的數值。描述決策的變數稱決策變數,因狀態滿足無後效性,故在每個階段選擇決策時只需考慮當前的狀態而無須考慮過程的歷史。
決策變數的范圍稱為允許決策集合。
策略:由每個階段的決策組成的序列稱為策略。對於每一個實際的多階段決策過程,可供選取的策略有一定的范圍限制,這個范圍稱為允許策略集合。允許策略集合中達到最優效果的策略稱為最優策略。
給定k階段狀態變數x(k)的值後,如果這一階段的決策變數一經確定,第k+1階段的狀態變數x(k+1)也就完全確定,即x(k+1)的值隨x(k)和第k階段的決策u(k)的值變化而變化,那麼可以把這一關系看成(x(k),u(k))與x(k+1)確定的對應關系,用x(k+1)=Tk(x(k),u(k))表示。這是從k階段到k+1階段的狀態轉移規律,稱為狀態轉移方程。
最優性原理:作為整個過程的最優策略,它滿足:相對前面決策所形成的狀態而言,餘下的子策略必然構成「最優子策略」。
最優性原理實際上是要求問題的最優策略的子策略也是最優。讓我們通過對前面的例子再分析來具體說明這一點:從A到D,我們知道,最短路徑是AB1C2D,這些點的選擇構成了這個例子的最優策略,根據最優性原理,這個策略的每個子策略應是最優:AB1C2是A到C2的最短路徑,B1C2D也是B1到D的最短路徑……——事實正是如此,因此我們認為這個例子滿足最優性原理的要求。
[編輯本段]動態規劃練習題
USACO
2.2 Subset Sums
題目如下:
對於從1到N的連續整集合合,能劃分成兩個子集合,且保證每個集合的數字和是相等的。
舉個例子,如果N=3,對於{1,2,3}能劃分成兩個子集合,他們每個的所有數字和是相等的:
{3}and {1,2}
這是唯一一種分發(交換集合位置被認為是同一種劃分方案,因此不會增加劃分方案總數)
如果N=7,有四種方法能劃分集合{1,2,3,4,5,6,7},每一種分發的子集合各數字和是相等的:
{1,6,7} and {2,3,4,5} {注 1+6+7=2+3+4+5}
{2,5,7} and {1,3,4,6}
{3,4,7} and {1,2,5,6}
{1,2,4,7} and {3,5,6}
給出N,你的程序應該輸出劃分方案總數,如果不存在這樣的劃分方案,則輸出0。程序不能預存結果直接輸出。
PROGRAM NAME: subset
INPUT FORMAT
輸入文件只有一行,且只有一個整數N
SAMPLE INPUT (file subset.in)
7
OUTPUT FORMAT
輸出劃分方案總數,如果不存在則輸出0。
SAMPLE OUTPUT (file subset.out)
4
參考程序如下(c語言):
#include <fstream>
using namespace std;
const unsigned int MAX_SUM = 1024;
int n;
unsigned long long int dyn[MAX_SUM];
ifstream fin ("subset.in");
ofstream fout ("subset.out");
int main() {
fin >> n;
fin.close();
int s = n*(n+1);
if (s % 4) {
fout << 0 << endl;
fout.close ();
return ;
}
s /= 4;
int i, j;
dyn [0] = 1;
for (i = 1; i <= n; i++)
for (j = s; j >= i; j--)
dyn[j] += dyn[j-i];
fout << (dyn[s]/2) << endl;
fout.close();
return 0;
}
USACO 2.3
Longest Prefix
題目如下:
在生物學中,一些生物的結構是用包含其要素的大寫字母序列來表示的。生物學家對於把長的序列分解成較短的(稱之為元素的)序列很感興趣。
如果一個集合 P 中的元素可以通過串聯(允許重復;串聯,相當於 Pascal 中的 「+」 運算符)組成一個序列 S ,那麼我們認為序列 S 可以分解為 P 中的元素。並不是所有的元素都必須出現。舉個例子,序列 ABABACABAAB 可以分解為下面集合中的元素:
{A, AB, BA, CA, BBC}
序列 S 的前面 K 個字元稱作 S 中長度為 K 的前綴。設計一個程序,輸入一個元素集合以及一個大寫字母序列,計算這個序列最長的前綴的長度。
PROGRAM NAME: prefix
INPUT FORMAT
輸入數據的開頭包括 1..200 個元素(長度為 1..10 )組成的集合,用連續的以空格分開的字元串表示。字母全部是大寫,數據可能不止一行。元素集合結束的標志是一個只包含一個 「.」 的行。集合中的元素沒有重復。接著是大寫字母序列 S ,長度為 1..200,000 ,用一行或者多行的字元串來表示,每行不超過 76 個字元。換行符並不是序列 S 的一部分。
SAMPLE INPUT (file prefix.in)
A AB BA CA BBC
.
ABABACABAABC
OUTPUT FORMAT
只有一行,輸出一個整數,表示 S 能夠分解成 P 中元素的最長前綴的長度。
SAMPLE OUTPUT (file prefix.out)
11
示常式序如下:
#include <stdio.h>
/* maximum number of primitives */
#define MAXP 200
/* maximum length of a primitive */
#define MAXL 10
char prim[MAXP+1][MAXL+1]; /* primitives */
int nump; /* number of primitives */
int start[200001]; /* is this prefix of the sequence expressible? */
char data[200000]; /* the sequence */
int ndata; /* length of the sequence */
int main(int argc, char **argv)
{
FILE *fout, *fin;
int best;
int lv, lv2, lv3;
if ((fin = fopen("prim.in", "r")) == NULL)
{
perror ("fopen fin");
exit(1);
}
if ((fout = fopen("prim.out", "w")) == NULL)
{
perror ("fopen fout");
exit(1);
}
/* read in primitives */
while (1)
{
fscanf (fin, "%s", prim[nump]);
if (prim[nump][0] != '.') nump++;
else break;
}
/* read in string, one line at a time */
ndata = 0;
while (fscanf (fin, "%s", data+ndata) == 1)
ndata += strlen(data+ndata);
start[0] = 1;
best = 0;
for (lv = 0; lv < ndata; lv++)
if (start[lv])
{ /* for each expressible prefix */
best = lv; /* we found a longer expressible prefix! */
/* for each primitive, determine the the sequence starting at
this location matches it */
for (lv2 = 0; lv2 < nump; lv2++)
{
for (lv3 = 0; lv + lv3 < ndata && prim[lv2][lv3] &&
prim[lv2][lv3] == data[lv+lv3]; lv3++)
;
if (!prim[lv2][lv3]) /* it matched! */
start[lv + lv3] = 1; /* so the expanded prefix is also expressive */
}
}
/* see if the entire sequence is expressible */
if (start[ndata]) best = ndata;
fprintf (fout, "%i\n", best);
return 0;
}
USACO 3.1
Score Inflation
題目如下:
我們試著設計我們的競賽以便人們能盡可能的多得分,這需要你的幫助。
我們可以從幾個種類中選取競賽的題目,這里的一個"種類"是指一個競賽題目的集合,解決集合中的題目需要相同多的時間並且能得到相同的分數。
你的任務是寫一個程序來告訴USACO的職員,應該從每一個種類中選取多少題目,使得解決題目的總耗時在競賽規定的時間里並且總分最大。
輸入包括競賽的時間,M(1 <= M <= 10,000)和N,"種類"的數目1 <= N <= 10,000。
後面的每一行將包括兩個整數來描述一個"種類":
第一個整數說明解決這種題目能得的分數(1 <= points <= 10000),第二整數說明解決這種題目所需的時間(1 <= minutes <= 10000)。
你的程序應該確定我們應該從每個"種類"中選多少道題目使得能在競賽的時間中得到最大的分數。
來自任意的"種類"的題目數目可能任何非負數(0或更多)。
計算可能得到的最大分數。
PROGRAM NAME: inflate
INPUT FORMAT
第 1 行: M, N--競賽的時間和題目"種類"的數目。
第 2-N+1 行: 兩個整數:每個"種類"題目的分數和耗時。
SAMPLE INPUT (file inflate.in)
300 4
100 60
250 120
120 100
35 20
OUTPUT FORMAT
單獨的一行包括那個在給定的限制里可能得到的最大的分數。
SAMPLE OUTPUT (file inflate.out)
605
{從第2個"種類"中選兩題,第4個"種類"中選三題}
示常式序如下:
#include <fstream.h>
ifstream fin("inflate.in");
ofstream fout("inflate.out");
const short maxm = 10010;
long best[maxm], m, n;
void
main()
{
short i, j, len, pts;
fin >> m >> n;
for (j = 0; j <= m; j++)
best[j] = 0;
for (i = 0; i < n; i++) {
fin >> pts >> len;
for (j = len; j <= m; j++)
if (best[j-len] + pts > best[j])
best[j] = best[j-len] + pts;
}
fout << best[m] << endl; // 由於數組元素不減,末元素最大
}
USACO 3.3
A Game
題目如下:
有如下一個雙人游戲:N(2 <= N <= 100)個正整數的序列放在一個游戲平台上,兩人輪流從序列的兩端取數,取數後該數字被去掉並累加到本玩家的得分中,當數取盡時,游戲結束。以最終得分多者為勝。
編一個執行最優策略的程序,最優策略就是使自己能得到在當前情況下最大的可能的總分的策略。你的程序要始終為第二位玩家執行最優策略。
PROGRAM NAME: game1
INPUT FORMAT
第一行: 正整數N, 表示序列中正整數的個數。
第二行至末尾: 用空格分隔的N個正整數(大小為1-200)。
SAMPLE INPUT (file game1.in)
6
4 7 2 9
5 2
OUTPUT FORMAT
只有一行,用空格分隔的兩個整數: 依次為玩家一和玩家二最終的得分。
SAMPLE OUTPUT (file game1.out)
18 11
參考程序如下:
#include <stdio.h>
#define NMAX 101
int best[NMAX][2], t[NMAX];
int n;
void
readx () {
int i, aux;
freopen ("game1.in", "r", stdin);
scanf ("%d", &n);
for (i = 1; i <= n; i++) {
scanf ("%d", &aux);
t = t[i - 1] + aux;
}
fclose (stdin);
}
inline int
min (int x, int y) {
return x > y ? y : x;
}
void
solve () {
int i, l;
for (l = 1; l <= n; l++)
for (i = 1; i + l <= n + 1; i++)
best[l%2] = t[i + l - 1] - t[i - 1] - min (best[i + 1][(l - 1) % 2],
best[(l - 1) % 2]);
}
void writex () {
freopen ("game1.out", "w", stdout);
printf ("%d %d\n", best[1][n % 2], t[n] - best[1][n % 2]);
fclose (stdout);
}
int
main () {
readx ();
solve ();
writex ();
return 0;
}
USACO 3.4
Raucous Rockers
題目如下:
你剛剛得到了流行的「破鑼搖滾」樂隊錄制的尚未發表的N(1 <= N <= 20)首歌的版權。你打算從中精選一些歌曲,發行M(1 <= M <= 20)張CD。每一張CD最多可以容納T(1 <= T <= 20)分鍾的音樂,一首歌不能分裝在兩張CD中。
不巧你是一位古典音樂迷,不懂如何判定這些歌的藝術價值。於是你決定根據以下標准進行選擇:
歌曲必須按照創作的時間順序在CD盤上出現。
選中的歌曲數目盡可能地多。
PROGRAM NAME: rockers
INPUT FORMAT
第一行: 三個整數:N, T, M.
第二行: N個整數,分別表示每首歌的長度,按創作時間順序排列。
SAMPLE INPUT (file rockers.in)
4 5 2
4 3 4 2
OUTPUT FORMAT
一個整數,表示可以裝進M張CD盤的樂曲的最大數目。
SAMPLE OUTPUT (file rockers.out)
3
參考程序如下:
#include <stdio.h>
#define MAX 25
int dp[MAX][MAX][MAX], length[MAX];
int
main ()
{
FILE *in = fopen ("rockers.in", "r");
FILE *out = fopen ("rockers.out", "w");
int a, b, c, d, best, numsongs, cdlength, numcds;
fscanf (in, "%d%d%d", &numsongs, &cdlength, &numcds);
for (a = 1; a <= numsongs; a++)
fscanf (in, "%d", &length[a]);
best = 0;
for (a = 0; a < numcds; a++)/*當前cd */
for (b = 0; b <= cdlength; b++) /* 已過的時間*/
for (c = 0; c <= numsongs; c++) { /* 上一曲*/
for (d = c + 1; d <= numsongs; d++) { /* 下一曲*/
if (b + length[d] <= cdlength) {
if (dp[a][c] + 1 > dp[a][b + length[d]][d])
dp[a][b + length[d]][d] = dp[a][c] + 1;
}
else {
if (dp[a][c] + 1 > dp[a + 1][length[d]][d])
dp[a + 1][length[d]][d] = dp[a][c] + 1;
}
}
if (dp[a][c] > best)
best = dp[a][c];
}
fprintf (out, "%d\n", best);
return 0;
}
USACO
4.3 Buy Low, Buy Lower
「逢低吸納」是炒股的一條成功秘訣。如果你想成為一個成功的投資者,就要遵守這條秘訣:
"逢低吸納,越低越買"
這句話的意思是:每次你購買股票時的股價一定要比你上次購買時的股價低.按照這個規則購買股票的次數越多越好,看看你最多能按這個規則買幾次。
給定連續的N天中每天的股價。你可以在任何一天購買一次股票,但是購買時的股價一定要比你上次購買時的股價低。寫一個程序,求出最多能買幾次股票。
以下面這個表為例, 某幾天的股價是:
天數 1 2 3 4 5 6 7 8 9 10 11 12
股價 68 69 54 64 68 64 70 67 78 62 98 87
這個例子中, 聰明的投資者(按上面的定義),如果每次買股票時的股價都比上一次買時低,那麼他最多能買4次股票。一種買法如下(可能有其他的買法):
天數 2 5 6 10
股價 69 68 64 62
PROGRAM NAME: buylow
INPUT FORMAT
第1行: N (1 <= N <= 5000), 表示能買股票的天數。
第2行以下: N個正整數 (可能分多行) ,第i個正整數表示第i天的股價. 這些正整數大小不會超過longint(pascal)/long(c++).
SAMPLE INPUT (file buylow.in)
12
68 69 54 64 68 64 70 67
78 62 98 87
OUTPUT FORMAT
只有一行,輸出兩個整數:
能夠買進股票的天數
長度達到這個值的股票購買方案數量
在計算解的數量的時候,如果兩個解所組成的字元串相同,那麼這樣的兩個解被認為是相同的(只能算做一個解)。因此,兩個不同的購買方案可能產生同一個字元串,這樣只能計算一次。
SAMPLE OUTPUT (file buylow.out)
4 2
參考程序如下:
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
typedef struct BIGNUM *bignum_t;
struct BIGNUM
{
int val;
bignum_t next;
};
int num[5000];
int len[5000];
int nlen;
bignum_t cnt[5000];
bignum_t get_big(void)
{
static bignum_t block;
static int size = 0;
if (size == 0)
{
block = (bignum_t)malloc(sizeof(*block)*128);
size = 128;
}
size--;
return block++;
}
/*初始化高精度數*/
void init_big(bignum_t *num, int val)
{
*num = get_big();
/* initialize */
(*num)->val = val;
(*num)->next = NULL;
}
void add(bignum_t a, bignum_t b)
{
int c; /* carry */
c = 0;
while (b || c)
{
a->val += c;
if (b) a->val += b->val;
/* if a->val is too large, we need to carry */
c = (a->val / 1000000);
a->val = (a->val % 1000000);
if (b) b = b->next;
if (!a->next && (b || c))
{ /* allocate if we need to */
a->next = get_big();
a = a->next;
a->val = 0;
a->next = NULL;
} else a = a->next;
}
}
void out_num(FILE *f, bignum_t v)
{
if (v->next)
{
out_num(f, v->next);
fprintf (f, "%06i", v->val);
}
else
fprintf (f, "%i", v->val);
}
int main(int argc, char **argv)
{
FILE *fout, *fin;
int lv, lv2;
int c;
int max;
int l;
bignum_t ans;
if ((fin = fopen("buylow.in", "r")) == NULL)
{
perror ("fopen fin");
exit(1);
}
if ((fout = fopen("buylow.out", "w")) == NULL)
{
perror ("fopen fout");
exit(1);
}
fscanf (fin, "%d", &nlen);
for (lv = 0; lv < nlen; lv++)
fscanf (fin, "%d", &num[lv]);
/* 用DP計算最大長度*/
for (lv = 0; lv < nlen; lv++)
{
max = 1;
for (lv2 = lv-1; lv2 >= 0; lv2--)
if (num[lv2] > num[lv] && len[lv2]+1 > max) max = len[lv2]+1;
len[lv] = max;
}
for (lv = 0; lv < nlen; lv++)
{
if (len[lv] == 1) init_big(&cnt[lv], 1);
else
{
init_big(&cnt[lv], 0);
l = -1;
max = len[lv]-1;
for (lv2 = lv-1; lv2 >= 0; lv2--)
if (len[lv2] == max && num[lv2] > num[lv] && num[lv2] != l)
add(cnt[lv], cnt[lv2]);
l = num[lv2];
}
}
}
/* 找最長串*/
max = 0;
for (lv = 0; lv < nlen; lv++)
if (len[lv] > max) max = len[lv];
init_big(&ans, 0);
l = -1;
for (lv = nlen-1; lv >= 0; lv--)
if (len[lv] == max && num[lv] != l)
{
add(ans, cnt[lv]);
l = num[lv];
}
/* output answer */
fprintf (fout, "%i ", max);
out_num(fout, ans);
fprintf (fout, "\n");
return 0;
}
動態規劃作為一種重要的信息學競賽演算法,具有很強的靈活性。以上提供的是一些入門練習題,深入的學習還需要逐步積累經驗。

9. 103. leetcode筆記(1~60)

d1

https://leetcode-cn.com/problems/two-sum
給定 nums = [2, 7, 11, 15], target = 9
因為 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
【hashmap存儲】

給定兩個大小為 m 和 n 的有序數組 nums1 和 nums2。
請你找出這兩個有序數組的中位數,並且要求演算法的時間復雜度為 O(log(m + n))。

nums1 = [1, 2]
nums2 = [3, 4]
則中位數是 (2 + 3)/2 = 2.5
【奇偶判斷】

給定一個字元串 s,找到 s 中最長的迴文子串。你可以假設 s 的最大長度為 1000。
輸入: "babad"
輸出: "bab"
注意: "aba" 也是一個有效答案。
【雙循環貪心】

d2

判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
輸入: 121
輸出: true
【折半比較】

給定一個包含大寫字母和小寫字母的字元串,找到通過這些字母構造成的最長的迴文串。
在構造過程中,請注意區分大小寫。比如 "Aa" 不能當做一個迴文字元串。
注意:
假設字元串的長度不會超過 1010。
示例:
輸入:
"abccccdd"
輸出:
7
【集合更新與判空】(add remove, 放入可迴文的字元,無重復)

給你一個字元串 s 和一個字元規律 p ,請你來實現一個支持 '.' 和 '*' 的正則表達式匹配。
'.' 匹配任意單個字元
'*' 匹配零個或多個前面的那一個元素
所謂匹配,是要涵蓋 **整個 **字元串 s 的,而不是部分字元串。
說明:

【正則包與結果項】

d3

給定一個排序數組,你需要在原地刪除重復出現的元素,使得每個元素只出現一次,返回移除後數組的新長度。
不要使用額外的數組空間,你必須在原局耐地修改輸入數組並在使用 O(1) 額外空間的條件下完成。
示例:
給定數組 nums = [1,1,2],
函數應該返回新的長度 2, 並且原數組 nums 的前兩個元素被修改為 1, 2。
你不需要考慮數組中超出新長度後面的元素。
【新計數索引】

給定一個數組 nums 和一個值 val,你需要原地移除所有數值等於 val 的元素,返回移除後數組的新長度。
不要使用額外的數組空間,你必須在原地修改輸襲枝入數組並在使用 O(1) 額外空間的條件下完成。
元素的順序可以改變。你不需要考慮數組中超出新長度後面的元素。
示例:
給定 nums = [3,2,2,3], val = 3,
函數應該返回新的長度 2, 並且 nums 中的前兩個元素均為 2。
你不需要考慮數組中超出新長度後面的元素。
【while val存在】

實現 strStr() 函數:
給定一個 haystack 字元串和一個 needle 字元串,在 haystack 字拍臘敏符串中找出 needle 字元串出現的第一個位置 (從0開始)。如果不存在,則返回 -1。
示例:
輸入: haystack = "hello", needle = "ll"
輸出: 2

【str.index(p)】

d4

【分支遞歸乘數】

給定一個整數數組 nums,求出數組從索引 i 到 j (i ≤ j) 范圍內元素的總和,包含 i, j 兩點。
給定 nums = [-2, 0, 3, -5, 2, -1],求和函數為 sumRange()
sumRange(0, 2) -> 1
sumRange(2, 5) -> -1
sumRange(0, 5) -> -3
【緩存和】

給定一個二進制數組,你可以最多將 1 個 0 翻轉為 1,找出其中最大連續 1 的個數。
輸入:[1,0,1,1,0]
輸出:4
解釋:翻轉第一個 0 可以得到最長的連續 1。
當翻轉以後,最大連續 1 的個數為 4。
【最近0的出現位置】

d5

對於一個 正整數,如果它和除了它自身以外的所有正因子之和相等,我們稱它為「完美數」
輸出: True
解釋: 28 = 1 + 2 + 4 + 7 + 14
【折平根比較】

修改一個數,則變成非遞減數列,輸出True
【嵌套條件分支】

123456789101112...求出第N個數字對應的單字元數值
【while True中的數量級t和求解條件m】

d6

列表中存在最大長度為k的兩個相等的數,則返True
給定一個整數數組和一個整數 k,判斷數組中是否存在兩個不同的索引 i 和 j,使得 nums [i] = nums [j],並且 i 和 j 的差的絕對值最大為 k。如輸入: nums = [1,2,3,1], k = 3, 輸出: true

【集合表示滑動窗口】

【雙指針追蹤】

兩個數不是同一個數,存在某數2倍數的一個數則返回True
【判雙零】

d7

兩個數值型字元串,相加後返回結果字元串
【while中低位進位】

求節點與其祖先之間的最大差,如:

【左右遞歸dfs返回最大差】

一排人領糖果, 相鄰的人rating高的獲得較多糖,每人都有糖果。

老師想給孩子們分發糖果,有 N 個孩子站成了一條直線,老師會根據每個孩子的表現,預先給他們評分。
你需要按照以下要求,幫助老師給這些孩子分發糖果:
每個孩子至少分配到 1 個糖果。
相鄰的孩子中,評分高的孩子必須獲得更多的糖果。
那麼這樣下來,老師至少需要准備多少顆糖果呢?如輸入: [1,0,2], 輸出: 5
解釋: 你可以分別給這三個孩子分發 2、1、2 顆糖果。

【左右規則】

d8

返回鏈表中倒數第k個節點值
【雙指針追蹤】

是否平衡二叉樹,即任意一個節點其兩顆子樹的高度差不超過一。
【遞歸返回是否平衡和樹高】

【三重while中低位進位】

d9

刪除鏈表中的節點
【製造偽頭結點】

之字形層次遍歷二叉樹,如:

【遞歸含層數的層次遍歷與折返判斷】

如果一個數的左邊數組和與右邊數組和相等,則返回此中間數的索引。
【從左累加與總和比較】

d10

輸出二叉樹的鏡像, 如:

【製造臨時節點的自身遞歸】

自底向上遍歷二叉樹,如:

【遞歸層次遍歷】

【含hashmap[depth]的dfs遞歸】

d11

返回除法結果,不越界[-2**31, 2**31-1]
【正負/零劃分】

一個數的二進製表示中1的個數
【帶奇偶判斷的逐右移位】

移除所有值為val的節點,返回鏈表。如輸入: 1->2->6->3->4->5->6, val = 6
輸出: 1->2->3->4->5
【含有目標比較的自身遞歸】

d12

實現int sqrt(int x)函數
【牛頓迭代】

【兩次判空與全存在的各自相加】

求出根到葉子節點路徑總和為固定值的所有路徑集

【目標遞減下葉子和當前更新的路徑和與目標值的比較】

d13

數組中是否有獨一無二的出現次數
【hashmap計數與值數組判重】

給定一個無序的整數數組,找到其中最長上升子序列的長度。如輸入: [10,9,2,5,3,7,101,18]
輸出: 4 ,解釋: 最長的上升子序列是 [2,3,7,101],它的長度是 4。

【雙循環動態規劃】

【遞歸判斷】

d14

給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。
如果你最多隻允許完成一筆交易(即買入和賣出一支股票),設計一個演算法來計算你所能獲取的最大利潤。
注意你不能在買入股票前賣出股票。如輸入: [7,1,5,3,6,4]
輸出: 5
解釋: 在第 2 天(股票價格 = 1)的時候買入,在第 5 天(股票價格 = 6)的時候賣出,最大利潤 = 6-1 = 5 。
注意利潤不能是 7-1 = 6, 因為賣出價格需要大於買入價格。

【最低股價與最大利潤同時更新】

輸入一個整型數組,數組里有正數也有負數。數組中的一個或連續多個整數組成一個子數組。求所有子數組的和的最大值。
要求時間復雜度為O(n)。如輸入: nums = [-2,1,-3,4,-1,2,1,-5,4]
輸出: 6, 解釋: 連續子數組 [4,-1,2,1] 的和最大,為 6。

【max0 sum0初始索引0賦值,與sum0>0判斷】

給定正整數 n,找到若干個完全平方數(比如 1, 4, 9, 16, ...)使得它們的和等於 n。你需要讓組成和的完全平方數的個數最少。如輸入: n = 12
輸出: 3 ,解釋: 12 = 4 + 4 + 4
【動態規劃雙循環解背包問題】

d15

統計所有小於非負整數 n 的質數的數量。如輸入: 10
輸出: 4,解釋: 小於 10 的質數一共有 4 個, 它們是 2, 3, 5, 7 。
【篩去法】

找出第 n 個丑數。
丑數就是只包含質因數 2, 3, 5 的正整數。如輸入: n = 10
輸出: 12, 解釋: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 個丑數。
【三指針動態規劃】

給定一個整數數組 prices,其中第 i 個元素代表了第 i 天的股票價格 ;非負整數 fee 代表了交易股票的手續費用。
你可以無限次地完成交易,但是你每次交易都需要付手續費。如果你已經購買了一個股票,在賣出它之前你就不能再繼續購買股票了。

返回獲得利潤的最大值。如輸入: prices = [1, 3, 2, 8, 4, 9], fee = 2
輸出: 8,解釋: 能夠達到的最大利潤:
在此處買入 prices[0] = 1
在此處賣出 prices[3] = 8
在此處買入 prices[4] = 4
在此處賣出 prices[5] = 9
總利潤: ((8 - 1) - 2) + ((9 - 4) - 2) = 8.
【買入賣出的動態規劃】

d16

給定一個數組,它的第 i 個元素是一支給定股票第 i 天的價格。
設計一個演算法來計算你所能獲取的最大利潤。你可以盡可能地完成更多的交易(多次買賣一支股票)。
注意:你不能同時參與多筆交易(你必須在再次購買前出售掉之前的股票)。
如輸入: [7,1,5,3,6,4]
輸出: 7
解釋:
在第 2 天(股票價格 = 1)的時候買入,在第 3 天(股票價格 = 5)的時候賣出,
這筆交易所能獲得利潤 = 5-1 = 4 。
隨後,在第 4 天(股票價格 = 3)的時候買入,在第 5 天(股票價格 = 6)的時候賣出,
這筆交易所能獲得利潤 = 6-3 = 3 。

【同leet714 多次買賣的動態規劃】

是否是相同的樹
【同空、不同空判斷後的自身遞歸】

不特定根節點和葉子節點,返迴路徑總和為固定值的路徑數
【自身遞歸與dfs遞歸】

d17

找出右邊的值小於當前值的數的個數:
使用線段樹構建左右子樹,並從右到左計算前面的數小於當前值的數的個數,最終返回依次進入結果數組的list的倒置值。

【list復製法】
將遍歷到的前兩個和數都去掉,雙重遍歷T(n)= O(n)

規范的路徑表示寫法轉換為最簡路徑
【棧進棧出,判斷'' '.' '..'()】

d18

【復制字元庫,逐次後移匹配庫起始點】

按要求分一個數組為m份,求其中子數組的最大值中最小一個
【二分查找、設定子數組最大的和mid作劃分節點】

【二分思想,拆分數組遞歸】(不用判斷平衡)

d19(52%)

兩個字元串對應位置移動總次數在指定步數內(ascii值的差),求字元串的最大可變換長
【滑窗記錄更新最初位置、不斷更新當前滑窗內移動步數最小值】

10. 股票買賣交易規則

股票交易規則:
1、T+1交易方式,即當天買入的股票,需要下一個交易日賣出。
2、買入最小單位為1手,即100股,且必須每次買入的數量必須是100股的整數倍,賣出可以不整100股賣出,但是不足100股的部分,必須一次性賣出。
3、遵循「時間優先,價格優先」的原則,即較高買進申報優先滿足於較低買進申報,較低賣出申報優先滿足於較高賣出申報;同價位申報,先申報者優先滿足。
4、在A股市場上,投資者只能進行做多操作,不能進行做空操作;其委託交易時,其委託價格必須在個股的當天漲跌幅限制內,否則無效;委託單在當日的交易時間內有效,收盤之後,其委託單無效。
拓展資料:
股票具體交易時間規定:
每周一至周五,每天上午9:30至11:30,下午1:00至3:00,法定假期除外。
集合競價:上午9:15——9:25,其中9:15——9:20可以撤單,9:20——9:25不能撤單,9:25以成交量最大的價格為開盤價。
連續競價:上午9:30——11:30,下午1:00——3:00
漲跌幅限制
新股上市及重組成功上市股票首日無漲跌幅限制,一般情況下漲跌幅限制為前一交易日收市價上下10%,即一個交易日最大振幅為20%。
ST股票及*ST股票漲跌幅限制為前一交易日收市價上下5%,即一個交易日最大振幅為10%。股票漲(跌)幅價格=股票前一日收盤價格×10%(或5%)。
權證漲跌幅限制權證漲(跌)幅價格=標的證券前日漲(跌)幅價格×125%×行權比例。
科創板企業業務模式較新、業績波動可能性較大、不確定性較高,為防止市場過度投機炒作、保障流動性,科創板股票交易設置了差異化的制度安排,諸如適當放寬漲跌幅限制、調整單筆申報數量、上市首日開放融資融券業務、引入盤後固定價格交易等。此外,科創板還對連續競價階段的限價訂單設置了有效申報價格範圍的要求,對科創板的市價訂單申報要求填寫買入保護限價或者賣出保護限價。下面一起來具體看看科創板交易規則都有哪些吧!
一、交易賬戶
投資者參與科創板股票交易,應當使用滬市A股證券賬戶。符合科創板股票適當性條件的投資者僅需向其委託的證券公司申請,在已有滬市A股證券賬戶上開通科創板股票交易許可權即可,無需在中國結算開立新的證券賬戶。
根據《上海證券交易所科創板股票交易特別規定》,投資者可以通過競價交易、盤後固定價格交易和大宗交易參與科創板股票交易。
二、交易方式
與滬市主板不同,科創板引入了盤後固定價格交易方式。盤後固定價格交易是指,在收盤集合競價結束後,交易所交易系統按照時間優先順序對收盤定價申報進行撮合,並以當日收盤價成交的交易方式。
投資者需關注,競價交易、盤後固定價格交易及大宗交易這三種科創板股票交易方式在交易時間、申報要求、成交原則等方面存在差異。