洛谷
不知道大家做沒做過傳球遊戲,這一題和傳球遊戲的轉移方程幾乎一樣。
令\(a\)為\(1\)點,\(e\)為\(5\)點,那麼\(f[i][j]\)代表第i步走到j的方案數。
\[f[i][j]=f[i−1][j+1]+f[i−1][j−1]
\]因為題中給的是乙個環,所以有幾種情況。
\[if(j==8)~f[i][j]=f[i−1][1]+f[i−1][7]
\]\[if(j==1)~f[i][j]=f[i−1][8]+f[i−1][2]
\]還有,因為題中說,到了\(e\)點,就不會再動了。
\[if(j==4)~f[i][j]=f[i−1][3]
\]\[if(j==6)~f[i][j]=f[i−1][7]
\]邊界很顯然\(f[0][1]=1\)。但是我們注意這一題\(n≤10^7\),所以我們要滾動陣列。
實際上我分析了一波,應該要用矩陣快速冪優化掉\(n\)那一維的,但是我交了乙份遞推**上去也\(a\)了。
那麼就不用管了,上**:
#include using namespace std;
int main()
,n,t=0;
cin>>n;
f[t][1]=1;
for (int i=1;i<=n;++i)
}cout
}
洛谷 2233 HNOI2002 公交車路線
題目戳這裡 一句話題意 乙個大小為8的環,求從1到5正好n步的方案數 途中不能經過5 solution 鉅說這個題目很水 應該是比較容易的dp,直接從把左邊和右邊的方案數加起來即可,但是有幾個需要注意的地方 1.因為n有1e7所以需要滾動陣列。2.因為不能經過5,所以4只能從3轉移,6只能從7轉移。...
洛谷P1315 觀光公交
題目 模擬 貪心 一開始看到10 5的資料,以為要klogn就敲了個線段樹上去 結果沒考慮後效性,只過了3個點 正解 一開始先處理出每一站的到站時間是對的,而隨著修改到站時間的改變不一定滿足字首關係 假設在某一站有人很晚才出發,那不管先前改變了多少後面的到站時間都是不變的 綜上 還需要維護修改一段距...
洛谷P1315 觀光公交
題目 如果沒有氮氣加速器,則該題為乙個模擬題。但是本題存在氮氣加速器,所以我們需要考慮貪心策略。題目要求我們使所有人等待的時間最短,因此我們需要算出每段路徑 路徑即為車站之間的 d 對時間的貢獻多少,取其中最多的減去就好了。首先我們需要求出每個車站最遠向右影響到什麼地方,然後算出這段地方的影響總人數...