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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

计蒜客 A2232.程序设计:蒜厂年会-单调队列(双端队列(STL deque)实现)滑窗维护最小前缀和...

發(fā)布時(shí)間:2023/12/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计蒜客 A2232.程序设计:蒜厂年会-单调队列(双端队列(STL deque)实现)滑窗维护最小前缀和... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
程序設(shè)計(jì):蒜廠年會(huì) 問答問題反饋 只看題面
  • ?16.79%
  • ?1000ms
  • ?262144K

在蒜廠年會(huì)上有一個(gè)抽獎(jiǎng),在一個(gè)環(huán)形的桌子上,有?nn?個(gè)紙團(tuán),每個(gè)紙團(tuán)上寫一個(gè)數(shù)字,表示你可以獲得多少蒜幣。但是這個(gè)游戲比較坑,里面竟然有負(fù)數(shù),表示你要支付多少蒜幣。因?yàn)檫@些數(shù)字都是可見的,所以大家都是不會(huì)出現(xiàn)的賠的情況。

游戲規(guī)則:每人只能抓一次,只能抓取一段連續(xù)的紙團(tuán),所有紙團(tuán)上的數(shù)字和就是你可以獲得的蒜幣。

蒜頭君作為蒜廠的一員在想,我怎么可以獲得最多的蒜幣呢?最多能獲取多少蒜幣呢?

因?yàn)槟陼?huì)是發(fā)獎(jiǎng),那么一定有大于?00?的紙團(tuán)。

輸入格式

第一行輸入一個(gè)整數(shù)?nn,表示有?nn?個(gè)紙團(tuán)。

第二行輸入輸入?nn?個(gè)整數(shù)?a_iai?,表示每個(gè)紙團(tuán)上面寫的數(shù)字(這些紙團(tuán)的輸入順序就是環(huán)形桌上紙團(tuán)的擺放順序)。

輸出格式

輸出一個(gè)整數(shù),表示蒜頭君最多能獲取多少蒜幣。

數(shù)據(jù)范圍

對(duì)于?30\%30%?的數(shù)據(jù):1 \le n \le 10^2,-10^3 \le a_i \le 10^31n102,?103ai?103。

對(duì)于?60\%60%?的數(shù)據(jù):1 \le n \le 5 \times 10^3,-10^6 \le a_i \le 10^61n5×103,?106ai?106。

對(duì)于?100\%100%?的數(shù)據(jù):1 \le n \le 10^5,-10^9 \le a_i \le 10^91n105,?109ai?109。

樣例輸入復(fù)制

3 1 -2 1

樣例輸出復(fù)制

2

題目來(lái)源

2019 藍(lán)橋杯省賽 B 組模擬賽(一)

?

因?yàn)槭黔h(huán)形的,所以前綴和算2倍長(zhǎng)的。、

因?yàn)槭沁B續(xù)的,所以直接遍歷的時(shí)候,當(dāng)前的前綴和-當(dāng)前區(qū)間的最小的前綴和,就是最大的前綴和,單調(diào)隊(duì)列滑窗實(shí)現(xiàn),因?yàn)榭傞L(zhǎng)是固定的,但是我寫了2倍長(zhǎng),所以要長(zhǎng)度<=n,就沒了。

思路隊(duì)友想的。我是水的,我代碼實(shí)現(xiàn)的時(shí)候,被懟的有點(diǎn)難過(guò),哈哈,太菜了。

?

代碼:

1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn=2*1e5+10; 5 const int inf=0x3f3f3f3f; 6 7 int a[maxn]; 8 ll pre[maxn],Min[maxn]; 9 deque<ll> deq; 10 11 int main() 12 { 13 int n; 14 scanf("%d",&n); 15 for(int i=1;i<=n;i++){ 16 scanf("%d",&a[i]); 17 pre[i]=pre[i-1]+a[i]; 18 } 19 for(int i=n+1;i<=2*n;i++){ 20 pre[i]=pre[i-1]+a[i-n]; 21 } 22 deq.push_back(1); 23 ll ans=0; 24 for(int i=2;i<=2*n;i++){ 25 while(i-deq.front()>n) deq.pop_front(); 26 ans=max(ans,pre[i]-pre[deq.front()]); 27 while(deq.size()&&pre[deq.back()]>=pre[i]) 28 deq.pop_back(); 29 deq.push_back(i); 30 } 31 cout<<ans<<endl; 32 }

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/ZERO-/p/10631464.html

總結(jié)

以上是生活随笔為你收集整理的计蒜客 A2232.程序设计:蒜厂年会-单调队列(双端队列(STL deque)实现)滑窗维护最小前缀和...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。