小i有些無聊,所以他發明了乙個在紙上玩的遊戲。
他寫下了n個整數a1,a2,a3,a4…an,每個都是0或1中的乙個。他被允許做如下的一次操作:他選擇乙個起點i,乙個終點j,保證1<=i<=j<=n,然後將區間中的每乙個數翻轉。翻轉指將ax的值設定為1-ax。
問:翻轉一次後,最多有幾個1.
題解:字首和優化
#include
using
namespace std;
const
int maxn =
1e5+5;
int a[maxn]
, sum[maxn]
;int
main()
int ans =
0, mx =
-1e8
;for
(int i = n; i >=
1; i--
) cout << ans << endl;
return0;
}
HDU 5550 dp 字首和優化
有個大樓有n層,每層都有兩種人,一種喜歡的打球,一種喜歡游泳,現在要你在每一層要麼開設球館,要麼開設游泳館,分配完畢以後,打球的要到球館,游泳的要到游泳館,問最優分配下,所有人要移動的最短距離和是多少?dp i 0 1 表示第i層布置為0或1,且i 1層為1或0 與第i層相反 的最小代價。dp i ...
cf474e Pillars 線段樹優化dp
有n個柱子,每個柱子有乙個高度hi h i,每個柱子可以跳到它後面高度與它相差大於d的柱子 即 h i hj d hi hj d 求最多可以跳多少個柱子an si m ax a nsj 1 hi h j d且 ja ns i ma x an sj 1 h i hj d且 j 因此建立一棵線段樹,節點...
cf 833B 線段樹優化dp
寫出轉移方程即可。貢獻值計算有通用方法 記錄每乙個顏色上乙個位置,這個顏色只在上個位置到當前位置有貢獻,為1,這個可以通過線段樹做到。同樣,dp值也可以用線段樹查詢,所以我們把他們同時丟到一顆線段樹裡面就行了。include include include include include inclu...