2021 年百度之星·程序设计大赛 - 初赛三
數字游戲
存在至少一種方案,當且僅當 min≤ave≤maxmin \le ave \le maxmin≤ave≤max 并且 min?(n?1)+max≤ave?n≤min+max?(n?1)min * (n-1)+max \le ave * n \le min + max * (n - 1)min?(n?1)+max≤ave?n≤min+max?(n?1)。
https://paste.ubuntu.com/p/NMXwPBWqBF/
網格路徑
因為第一步只能從 (1,1)(1,1)(1,1) 走到 (1,2)(1, 2)(1,2) 或 (2,1)(2, 1)(2,1),所以不相交路徑最多只有兩條。我們可以用如下方法構造兩條路徑:
接下來判斷一下這兩條路徑是否存在以及是否相交就可以啦!
https://paste.ubuntu.com/p/b76XRkk593/
蟲族基地
分如下幾種情況考慮:
在這些代價中取最小值即可。
https://paste.ubuntu.com/p/HQrq6x6595/
環上游走
暴力 dfs就可以過啦(如果當前走到的格子之前沒走到過,就繼續走,否則就回溯)!
https://paste.ubuntu.com/p/KTPdKn6rCH/
懷舊游戲
用 f[i][j][k][l]f[i][j][k][l]f[i][j][k][l] 表示先手手上的數字是 i,ji, ji,j,后手手上的數字是 k,lk, lk,l 時,先手的勝負情況。初始先手必敗的情況比較好處理(kkk 或 lll 是 0,意味著先手已經輸了),接著反向 bfs,對于一個狀態,如果它存在一個先手必敗的后續狀態,則這個狀態先手必勝;如果它所有的后續狀態都是先手必勝的,則這個狀態先手必敗。
對于無法確定勝負的狀態,都是平局。
https://paste.ubuntu.com/p/M9KJzDCBZy/
消消樂
先處理完所有的終止狀態(填滿 8 個格子的不可以消除的狀態),這些狀態最后的期望得分都是 0。對于每個消完以后的狀態 xxx(從初始的 8 個格子開始消,在新方塊出現前的狀態),我們可以枚舉新方塊的顏色情況,同時也知道了每種情況下消完以后的狀態 yyy 是啥樣,以及得到了多少分,同時我們也知道從 xxx 變成 yyy 的概率,我們把期望方程列出來,高斯消元即可。
https://paste.ubuntu.com/p/XtKPn9mwVC/
二叉樹
用 f[i][j]f[i][j]f[i][j] 表示以 iii 為根的子樹,這棵子樹進出的點的數目為 jjj 時(jjj 可正可負,表示點是凈移入還是凈移出)在子樹 iii 中花費的最小代價。對于每個 iii,由于它只能有 2 個兒子,所以我們需要再做一次背包來計算 fff。
https://paste.ubuntu.com/p/6z8VTF78rF/
數據結構
將區間視為平面上的點,如果一種顏色在區間內出現至少一次,需要考慮取答案對應的區間為:
可以用掃描線加線段樹解決。
https://paste.ubuntu.com/p/M2bmSqysgW/
總結
以上是生活随笔為你收集整理的2021 年百度之星·程序设计大赛 - 初赛三的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(2411):name属性的作用
- 下一篇: 会计需要哪方面的计算机知识,学会计需要哪