【題意】有乙個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 面試官 知道什麼叫類麼?應聘者 我這人實在,工作努力,不知道什麼叫累。面試官 知道什麼是包?應聘者 我這人實在,平常不帶包,也不用公司準備了。面試官 知道什麼是介面嗎?應聘者 我這個人工作認真,從來不找藉口偷懶。面試官 知道什麼是繼承麼?應聘者 我是孤兒沒什麼可以繼...