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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫

發(fā)布時(shí)間:2025/3/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Description

信息組最近貓成災(zāi)了!隔壁物理組也拿貓沒辦法.信息組組長(zhǎng)只好去請(qǐng)神刀手來幫他們消滅貓.信息組現(xiàn)在共有n 只貓(n 為正整數(shù)),編號(hào)為1 到n,站成了一個(gè)環(huán),第i 只貓的左邊是第i-1 只貓,右邊是第i+1 只貓.特別的,第1 只貓的左邊是第n 只貓,第n 只貓的右邊是第1 只貓.每只貓擁有價(jià)值,表示消滅它能給信息組組長(zhǎng)帶來的聲譽(yù).注意,有的貓價(jià)值為負(fù)數(shù),這意味著消滅它會(huì)損害組長(zhǎng)的聲譽(yù).神刀手可以選擇一些貓消滅掉.但是,我們的組長(zhǎng)實(shí)際上非常喜歡貓,他希望神刀手不要消滅兩只相鄰的貓.
神刀手的能力組長(zhǎng)現(xiàn)在還不知道.所以,組長(zhǎng)希望知道對(duì)于所有的1<=m<=n/2,如果神刀手剛好消滅m 只貓,他最多能獲得的聲譽(yù).信息組組長(zhǎng)當(dāng)然知道怎么做啦!但是他想考考你……

Input

從cat.in 中讀入數(shù)據(jù)第一行包括一個(gè)正整數(shù)n第二行為n 個(gè)整數(shù),依次代表第1,2,…,n 只貓的價(jià)值.

Output

輸出到文件cat.out輸出共n/2 行,第i 行表示假如神刀手剛好消滅i 只貓,信息組組長(zhǎng)最多能獲得的收益.

Sample Input

輸入1:

811 8 1 1 9 1 1

輸入2:

115 6 7 8 9 10 9 8 7 6 5

Sample Output

輸出1:

9171812

輸出2:

1018263238

Data Constraint

對(duì)于30%的數(shù)據(jù),滿足n<=20
對(duì)于60%的數(shù)據(jù),滿足n<=2000
對(duì)于另外20%的數(shù)據(jù),滿足n 為偶數(shù)
對(duì)于100%的數(shù)據(jù),滿足1<=n<=200000,|每只貓的價(jià)值|<=1e9

Solution

  • 事實(shí)上 JZOJ 4726 種花 與這道題有異曲同工之妙,詳見我的博客:

  • JZOJ 4726. 【NOIP2016提高A組模擬8.22】種花

  • 都是使用堆,貪心地選取較大的那個(gè),之后將其兩邊的刪去、并加入堆中,

  • 這樣的相當(dāng)于撤銷操作的做法就可以保證正確性。

  • 于是我們每選取一次,就統(tǒng)計(jì)并輸出答案即可,時(shí)間復(fù)雜度 O(N?log?N)

Code

#include<cstdio> #include<queue> using namespace std; const int N=2e5+1; struct data {long long x;int y;bool operator <(const data &z)const{return x<z.x;} }t; long long ans; long long a[N]; int l[N],r[N]; bool bz[N]; priority_queue<data>q; inline int read() {int X=0,w=1; char ch=0;while(ch<'0' || ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0' && ch<='9') X=(X<<3)+(X<<1)+ch-'0',ch=getchar();return X*w; } inline void work(int x) {bz[x]=true;l[r[x]]=l[x];r[l[x]]=r[x]; } int main() {int n=read();for(int i=1;i<=n;i++){t.x=a[t.y=i]=read();q.push(t);l[i]=i>1?i-1:n;r[i]=i<n?i+1:1;}n>>=1;while(n--){for(t=q.top();bz[t.y];t=q.top()) q.pop();q.pop();ans+=t.x;t.x=a[t.y]=a[l[t.y]]+a[r[t.y]]-t.x;q.push(t);work(l[t.y]);work(r[t.y]);printf("%lld\n",ans);}return 0; }

總結(jié)

以上是生活随笔為你收集整理的JZOJ 5372. 【NOIP2017提高A组模拟9.17】猫的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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