0x03練習**
這三個題都是字首和/差分,跟遞迴半毛錢關係都沒有。
p2280 [hnoi2003]雷射炸彈
二維字首和裸題。
const int maxn = 5e3 + 9;
int s[maxn][maxn];
signed main()
for (int i = 1; i < maxn; ++i)
for (int j = 1; j < maxn; ++j)
s[i][j] += s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1];
int ans = 0;
for (int i = m; i < maxn; ++i)
for (int j = m; j < maxn; ++j)
ans = max(ans, s[i][j] - s[i - m][j] - s[i][j - m] + s[i - m][j - m]);
cout << ans << endl;
return 0;
}
p4552 [poetize6] incdec sequence
區間加相當於在差分陣列上左邊加右邊減,目標是差分陣列第二項開始全為 \(0\)。那麼第一問就做完了。
第二問是這樣的:對於差分陣列中配完對剩下的的正數或負數,選擇區間加或減都是自由的,各自會給答案增加一種情況。
**:
int a[maxn], d[maxn];
signed main()
ll cnt1 = 0, cnt2 = 0;
for (int i = 2; i <= n; ++i)
cout << max(cnt1, cnt2) << endl;
cout << abs(cnt1 - cnt2) + 1 << endl;
return 0;
}
p2879 [usaco07jan]tallest cow s
這題去年做過,就不寫**了。自己構造差分陣列,對於每個給出的區間 \([l,r]\),d[l+1]--, d[r]++
,最後求一遍字首和即可。區間注意判重。
0x04練習**
只有乙個題 #10012. 「一本通 1.2 例 2」best cow fences
二分平均值即可。
const double eps = 1e-8;
const int maxn = 1e5 + 9;
int n, l;
double a[maxn], s[maxn];
bool check(double **g)
return false;
}signed main()
cout << (int)(r * 1000) << endl;
return 0;
}
演算法競賽高階指南 0x00
快速冪模板,寫一下快速冪的原理。我們知道,乙個數 n 在二進位制 也可以是其他進製 下可以被表示為 a 1 a 2 2 1 a 3 2 2 a m 2 那麼我們可以考慮將其分拆成二進位制狀態下的每一位,然後做冪運算。這樣做的時間複雜度為 o log 2 n 實現的過程類似於倒過來的分治 當然也可以直...
《演算法競賽高階指南》0x32約數
求解 1,n 之間的最大的反素數,有性質 這個反素數是質因數個數最多的數中最小的乙個。證明 假設有乙個數質因數個數比它多,如果在他前面,不滿足反素數的定義,如果在他後面,一定可以找到第乙個質因數比它大的數,這個數作為結果更好,反證可知,這個數質因數一定是最多的 反證 假設有質因數與他的個數一樣但是比...
0X04儲存資料
coding utf 8 usr bin python 儲存資料 模組json 讓你能夠將簡單的python資料結構轉儲到檔案中,並在程式再次執行時載入該檔案中的資料。你還可以使用json 在python程式之間分享資料。更重要的是,json資料格式並非python專用的,這讓你能夠將以json格式...