省常中模拟 Test3 Day2
matrix
找規律
題意:給定一個 N*N 的只有 0 和 1 的矩陣,有 Q 個操作,分三種:1. 將某行上的所有數字取反;2. 將某列上的所有數字取反;3. 輸出 sum{ a[i][j]*a[j][i] } mod 2。N <=1000,Q<=5*10^5。
解法:初看題目會覺得很棘手。然后可以發現,對于不在對角線上的點,a[i][j]*a[j][i] 會被累加兩次(一次是在計算 (i, j) 時,另一次是在計算 (j, i) 時),由同余定理可知,無論 a[i][j] 或 a[j][i] 的值為多少,都不會影響到求余的結果。所以對角線上的 a(i, i) 才是影響結果的關鍵。當對角線上的 1 的個數為奇數時,答案就為 1;否則為 0。那么我們可以設一個變量 ans,ans 的初始值由掃描初始矩陣得到。每進行一次 1 或 2 操作,就將 ans 取反。遇到 3 操作直接輸出即可。
?
steins
貪心
題意:給出一些順序排列的長短不一的矩形,寬度都為 1,要用寬度為 1 的刷子進行橫向或豎向填充,問最小填充次數使得所有矩形被完全填充。
初步解法:一個只能騙很少部分分的算法:每次選擇高度最小的矩形,記其高度為 h,分別向左右進行橫向填充,則這一步的填充次數為 h。不斷重復此步驟。這種算法完全拋棄了豎向的填充方式,很明顯拿不了多少分數。
正解:不算嚴格意義上的貪心,有點像貪心和動規的結合。對于區間 [l, r],找到區間內的最小高度 h,此時有兩種決策:1. 用橫向方式填充最短矩形,然后遞歸兩個子區間;2. 用縱向方式填充區間內所有矩形。計算出兩種決策分別的花費,取其較小值。
?
archer
掃描線+線段樹
題意:求矩形并的面積。
初步解法:模擬。出題人很良心地給了 30 分。
正解:其實是很經典的題目,之前在書上也看到過類似的求矩形并的周長的方法(POJ 的 Picture 一題),但是從來沒寫過。
假設有一條掃描線,從左往右掃描,遇到矩形的入邊就將其投影到線段樹上,遇到矩形的出邊就將其從線段樹上刪去。每次累加掃描到的相鄰兩條線段的橫坐標之差與線段樹上的總線段長度的乘積。
上面這段話很籠統,更詳細地說:
轉載于:https://www.cnblogs.com/lsdsjy/p/3917040.html
總結
以上是生活随笔為你收集整理的省常中模拟 Test3 Day2的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中string拼接,String
- 下一篇: ELF格式解析库之提取信息