日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BZOJ 2442: [Usaco2011 Open]修剪草坪 单调队列

發布時間:2024/4/17 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ 2442: [Usaco2011 Open]修剪草坪 单调队列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Description


在一年前贏得了小鎮的最佳草坪比賽后,FJ變得很懶,再也沒有修剪過草坪。現在,
新一輪的最佳草坪比賽又開始了,FJ希望能夠再次奪冠。

然而,FJ的草坪非常臟亂,因此,FJ只能夠讓他的奶牛來完成這項工作。FJ有N
(1 <= N <= 100,000)只排成一排的奶牛,編號為1...N。每只奶牛的效率是不同的,
奶牛i的效率為E_i(0 <= E_i <= 1,000,000,000)。

靠近的奶牛們很熟悉,因此,如果FJ安排超過K只連續的奶牛,那么,這些奶牛就會罷工
去開派對:)。因此,現在FJ需要你的幫助,計算FJ可以得到的最大效率,并且該方案中
沒有連續的超過K只奶牛。

Input


* 第一行:空格隔開的兩個整數N和K

* 第二到N+1行:第i+1行有一個整數E_i


Output


* 第一行:一個值,表示FJ可以得到的最大的效率值。?

題解: ?

定義 $f_{i}$ 表示不選 $i$ 的最優價值.
則有 $f_{i}=max(f_{j}-sum_{j})+sum_{i-1}$
用單調隊列維護一下 $max(f_{j}-sum_{j})$ 即可.
注意一下 $j$ 的合法范圍,適當時候彈掉. ? #include<iostream> #include<cstdio> #include<cstring> #include<algorithm>#define setIO(s) freopen(s".in","r",stdin) #define N 100010 #define ll long longusing namespace std;ll n, k, maxn, ans, head = 1, tail = 1; ll c[N], sum[N], dp[N], q[N], a[N];ll max(ll a,ll b ) {return a > b ? a : b; }int main() {// setIO("input"); scanf( "%lld%lld", &n, &k );for(ll i = 1; i <= n; i++ ) {scanf( "%lld", &c[i] );sum[i] = sum[i - 1] + c[i];}ll ans=0; for(ll i = 1; i <= n + 1; i++ ) {while( head <= tail && q[head] < i - k - 1 ) head++; dp[i] = dp[q[head]] - sum[q[head]] + sum[i - 1];ans=max(ans,dp[i]); while( head <= tail && dp[q[tail]] - sum[q[tail]] <= dp[i] - sum[i] ) tail--;q[++tail] = i;}printf( "%lld\n", ans);return 0; }

  

轉載于:https://www.cnblogs.com/guangheli/p/11062520.html

總結

以上是生活随笔為你收集整理的BZOJ 2442: [Usaco2011 Open]修剪草坪 单调队列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。