題目大意:
兩個硬幣,給定初始位置a和b,q次操作,每次操作可將其中的任意乙個移到位置x,代價為距離。所有位置在1-n之間。求最小代價。
n,q<=2e5
題目解法:
最樸素的狀態f[i][j][k]表示i次操作後兩個硬幣分別在j,k的最小代價。觀察發現j,k中必有乙個是這次操作中規定的移動到的位置,因此直接消掉一維,f[i][j]表示i次操作後乙個硬幣在j另個乙個在x[i]的最小代價。向後更新顯然是f[i+1][q[i]]=f[i][j]+|q[i+1]-j|,f[i+1][j]=f[i][j]+|q[i+1]-q[i]|。複雜度o(n^2)。50pts到手。
考慮繼續優化轉移。首先還是把狀態轉移方程改成從i-1轉移過來的形式。我們可以得到以下兩種等式:
//這裡的q[i]就是上述的x[i],手殘寫岔了
//②式也打錯了,是從f[i-1][j]轉移
邊界是f[0][a]=0,q[0]=b(直接把初始位置當做一次操作)
記得開long long
oracle exp匯出時報EXP 00091錯
在linux系統上用exp命令匯出oracle資料時,報exp 00091錯誤,但最終也成功匯出了。在網上查後,有人認為這樣是由於exp的環境變數與資料庫不一至造成的,但匯出後資料是沒問題的。為了避免報此類錯,可以採取以下措施 登入資料庫,用 select from nls database par...
Python每日一練0009
怎樣找出乙個序列 現次數最多的元素?使用collections庫中的counter物件可以方便的求出現次數最多的前n個元素 直接使用most common成員函式就好了,例如 from collections import counter words look into my eyes look i...
移動支付落後 疫情讓美國陷入硬幣慌
據美國 報道稱,美國鑄shadhf幣局周四發出呼籲,要求公眾幫助緩解美國的硬幣短缺問題 美國需要你的零錢。美國正處於新冠疫情引起的硬幣短缺中,在疫情期間,大多數人要麼削減開支,要麼在網上購物,要麼使用信用卡支付,從而大大減少了流通中的硬幣數量,造成了全國範圍的短缺。這使得銀行 零售商和任何經常用現金...