ssoj2455有趣的有趣的家庭菜園(線段樹)

2021-07-06 04:40:47 字數 1035 閱讀 5584

【題意】有乙個n塊的線性菜園,每塊菜園只有照到陽光(左右兩邊沒有遮擋)才能收穫果實賣出去價值為p,也可以除去費用為c,問最大利益是多少

【思路】列舉n塊田地i為最高處,ans即為其左邊最大利潤加右邊最大利潤。dp o(n^2)會超時。用線段樹維護左邊(右邊)最大值,點更新,與區間值的更改。

【**】

#include #include #include #include #include #include #define ll long long

using namespace std;

const int maxn=100005;

const ll inf=10000000000009;

struct datatree[maxn*4];

ll n,h[maxn],h[maxn];

ll f[maxn],g[maxn],ans=0,p[maxn],c[maxn];

inline ll get()

inline void down(int node)

inline void mt(int node)

inline void build(int node,int l,int r)

else

}inline ll query(int node,int l,int r,int x,int y)

}inline void add(int node,int l,int r,int p,ll x)

}inline void update(int node,int l,int r,int x,int y,ll v)

}int main()

memset(tree,0,sizeof(tree));build(1,0,n);//如果不memset貌似會出事

for(int i=n;i>=1;--i)

for(int i=1;i<=n;++i)ans=max(ans,f[i]+g[i]-p[i]);

printf("%lld\n",ans);

return 0;

}

JOI 有趣的有趣的家庭菜園Fgarden

職業經營家庭菜園的joi君每年在自家的田地中種植一種叫做ioi草的植物。ioi草的種子在冬天被播下,春天會發芽並生長至乙個固定的高度。到了秋天,一些ioi草會結出美麗的果實,並被收穫,其他的ioi草則會在冬天枯萎。joi君的田地沿東西方向被劃分為n個區域,從西側開始的第i個區域中種植著ioi草i。在...

有趣的哲學

原則1 你無法斷定程式會在什麼地方耗費執行時間。瓶頸經常出現在想不到的地方,所以別急於胡亂找個地方改 除非你已經證實那兒就是瓶頸所在。原則2 估量。在你沒對 進行估量,特別是沒找到最耗時的那部分之前,別去優化速度。原則3 花哨的演算法在n很小時通常很慢,而n通常很小。花哨演算法的常數複雜度很大。除非...

有趣的面試

面試官 熟悉哪種語言?應聘者 c 面試官 知道什麼叫類麼?應聘者 我這人實在,工作努力,不知道什麼叫累。面試官 知道什麼是包?應聘者 我這人實在,平常不帶包,也不用公司準備了。面試官 知道什麼是介面嗎?應聘者 我這個人工作認真,從來不找藉口偷懶。面試官 知道什麼是繼承麼?應聘者 我是孤兒沒什麼可以繼...