【CH Round #48 - Streaming #3(NOIP模擬賽Day1)】 題解

benben_lin發表於2020-04-04

飛機票:http://www.contesthunter.org/contest/CH%20Round%20%2348%20-%20Streaming%20%233%20(NOIP%E6%A8%A1%E6%8B%9F%E8%B5%9BDay1)


數三角形

題目大意:給出n(n≤100)個點(座標都為非負整數),計算以這些點為頂點,一共能構成三角形的個數。

做法:n很小很明顯可以直接暴力n^3列舉點,每次判斷三邊斜率是否有兩條相同,而且必須滿足三角形(兩邊之和大於第三邊)這樣就可以碾過去了。


4和7

題目大意:有n(n≤100,000)堆糖放在0到m(m≤1,000,000,000)的座標軸上,從0開始每次可以向正方向跳4步或7步,求最大收集糖的數量。

做法:首先對所有的點按照座標排序。可以設DP方程F[i]表示前i個點能取到的最大的糖果數量,顯然F[i] = F[j] + a[i]。由於>17的數都能分成若干個47的和(這個怎麼的來可以自己從4、7開始疊加推出),於是列舉j,當ij的座標差<=17時暴力判斷是否能由47組成,座標差>17F[0..j]的值取最大值計算就好,此時可以維護一個g[i]表示F[0..i]中的最大值。


反射鏡.

題目大意:在座標軸中放著n(n≤100,000)面鏡子,鏡子均與座標軸成45°角。所以共有兩種型別的鏡子:“\”型和“/”型。其座標值的絕對值均不超過m(m≤1,000,000,000),鏡子的兩個面都能夠反射光線,而中間不透光,例如,對於一個“/”型鏡子,從下面射入的光線會被反射到右方向,而從左面射入的光線會被反射到上方向,現有一條光線從原點所在格子沿x軸正方向射出,求它走過T格路程後所在的位置。

做法:首先處理出每個位置的鏡子在四個方向上最近是那個鏡子,然後模擬光線反射就行了。但是有個問題,這些鏡子反射光線可能會使光線形成環,這樣就會超時,所以用記憶化記錄一下就可以了。




總結:第一題就不說了。看到第二題,我就頭疼了,這是我比較弱的一種題目,於是便先跳過去做第三題,我打了一個部分分的暴力,發現效率很低,於是開始想優化,最終得了40分....像第二題這種型別的題目以後要克服啊。