2021 年百度之星·程序设计大赛 - 初赛三
數(shù)字游戲
存在至少一種方案,當(dāng)且僅當(dāng) 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/
網(wǎng)格路徑
因?yàn)榈谝徊街荒軓?(1,1)(1,1)(1,1) 走到 (1,2)(1, 2)(1,2) 或 (2,1)(2, 1)(2,1),所以不相交路徑最多只有兩條。我們可以用如下方法構(gòu)造兩條路徑:
接下來判斷一下這兩條路徑是否存在以及是否相交就可以啦!
https://paste.ubuntu.com/p/b76XRkk593/
蟲族基地
分如下幾種情況考慮:
在這些代價(jià)中取最小值即可。
https://paste.ubuntu.com/p/HQrq6x6595/
環(huán)上游走
暴力 dfs就可以過啦(如果當(dāng)前走到的格子之前沒走到過,就繼續(xù)走,否則就回溯)!
https://paste.ubuntu.com/p/KTPdKn6rCH/
懷舊游戲
用 f[i][j][k][l]f[i][j][k][l]f[i][j][k][l] 表示先手手上的數(shù)字是 i,ji, ji,j,后手手上的數(shù)字是 k,lk, lk,l 時(shí),先手的勝負(fù)情況。初始先手必?cái)〉那闆r比較好處理(kkk 或 lll 是 0,意味著先手已經(jīng)輸了),接著反向 bfs,對(duì)于一個(gè)狀態(tài),如果它存在一個(gè)先手必?cái)〉暮罄m(xù)狀態(tài),則這個(gè)狀態(tài)先手必勝;如果它所有的后續(xù)狀態(tài)都是先手必勝的,則這個(gè)狀態(tài)先手必?cái) ?br /> 對(duì)于無法確定勝負(fù)的狀態(tài),都是平局。
https://paste.ubuntu.com/p/M9KJzDCBZy/
消消樂
先處理完所有的終止?fàn)顟B(tài)(填滿 8 個(gè)格子的不可以消除的狀態(tài)),這些狀態(tài)最后的期望得分都是 0。對(duì)于每個(gè)消完以后的狀態(tài) xxx(從初始的 8 個(gè)格子開始消,在新方塊出現(xiàn)前的狀態(tài)),我們可以枚舉新方塊的顏色情況,同時(shí)也知道了每種情況下消完以后的狀態(tài) yyy 是啥樣,以及得到了多少分,同時(shí)我們也知道從 xxx 變成 yyy 的概率,我們把期望方程列出來,高斯消元即可。
https://paste.ubuntu.com/p/XtKPn9mwVC/
二叉樹
用 f[i][j]f[i][j]f[i][j] 表示以 iii 為根的子樹,這棵子樹進(jìn)出的點(diǎn)的數(shù)目為 jjj 時(shí)(jjj 可正可負(fù),表示點(diǎn)是凈移入還是凈移出)在子樹 iii 中花費(fèi)的最小代價(jià)。對(duì)于每個(gè) iii,由于它只能有 2 個(gè)兒子,所以我們需要再做一次背包來計(jì)算 fff。
https://paste.ubuntu.com/p/6z8VTF78rF/
數(shù)據(jù)結(jié)構(gòu)
將區(qū)間視為平面上的點(diǎn),如果一種顏色在區(qū)間內(nèi)出現(xiàn)至少一次,需要考慮取答案對(duì)應(yīng)的區(qū)間為:
可以用掃描線加線段樹解決。
https://paste.ubuntu.com/p/M2bmSqysgW/
總結(jié)
以上是生活随笔為你收集整理的2021 年百度之星·程序设计大赛 - 初赛三的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端学习(2411):name属性的作用
- 下一篇: 前端学习(2029)vue之电商管理系统