link
雙倍經驗
三倍經驗
/*
陣列沒開夠,爆零兩行淚
longlong開成int,爆零兩行淚
多組忘清空,爆零兩行淚
dp 沒初值,爆零兩行淚
深搜沒邊界,爆零兩行淚
廣搜忘出隊,爆零兩行淚
輸入沒加 &,爆零兩行淚
模數沒看見,爆零兩行淚
-1 不輸出,爆零兩行淚
越界不特判,爆零兩行淚
線段樹開一倍,爆零兩行淚
無向變有向,爆零兩行淚
題意沒審清,爆零兩行淚
檔名起錯,爆零兩行淚
除錯忘刪除,爆零兩行淚
沒用freopen,爆零兩行淚
*/#include
using namespace std;
const
int n=
1e5+15;
typedef
long
long ll;
int n,m;
ll s[n]
;ll f[n]
;int q[n]
;ll g
(int i)
intmain()
int hh=
0,tt=0;
for(
int i=
1;i<=n;i++
) cout<
}/*f[i]表示從前i頭牛中選,且合法的方案的最大值
不選:f[i]=f[i-1];
選 i:f[i],列舉i之前,包含i的連續長度
長度: j∈[1,k]
f[i]=max(-s[i-j-1]+f[i-j-1])+s[i]
捯飭一下方程
也就是要找區間長度k,那一坨(g[i-j])的最大值
g[j]=f[j-1]-s[j]
g[0]=f[-1]-s[0]
↑0 (邊界噁心人
用單調佇列維護下標即可
s是字首和陣列
*/
AcWing1087 修剪草坪 單調佇列DP
題目傳送門 在一年前贏得了小鎮的最佳草坪比賽後,fj 變得很懶,再也沒有修剪過草坪。現在,新一輪的最佳草坪比賽又開始了,fj 希望能夠再次奪冠。然而,fj 的草坪非常髒亂,因此,fj 只能夠讓他的奶牛來完成這項工作。fj 有 n 只排成一排的奶牛,編號為 1 到 n。每只奶牛的效率是不同的,奶牛 i...
2202 修剪草坪
在一年前贏得了小鎮的最佳草坪比賽後,約翰變得懶惰了,再也沒有修剪過草坪。現在,新一輪的比賽又開始了,約翰希望能夠再次奪冠。然而,約翰家的草坪非常髒亂,因此,約翰需要讓他的奶牛來完成這項工作。約翰家有n頭奶牛,排成一直線,編號為1到n。每只奶牛的能力是不同的,第i頭奶牛的能力為ei。靠在一起的奶牛很熟...
小學期 修剪草坪
有乙個n m的草坪 1 n,m 100 草坪中的草原來的高度都是100。現在使用割草機修剪草坪,來得到各種各樣的圖案。割草機只 能橫著或者豎著割草。每次割草都會先設定乙個高度,割完之後會把比設定高度高的草都割成設定的高度。比如草原來是5 2 8,設定高度為4,那麼割完之後就變成了4 2 4。現在給出...