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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

洛谷 P2048 [NOI2010]超级钢琴(优先队列,RMQ)

發布時間:2025/3/19 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 洛谷 P2048 [NOI2010]超级钢琴(优先队列,RMQ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

傳送門

?

我們定義$(p,l,r)=max\{sum[t]-sum[p-1],p+l-1\leq t\leq p+r-1 \}$

那么因為對每一個$p$來說$sum[p-1]$是一個定值,所以我們只要在$[p+l-1,p+r-1]$的區間里找出最大的$sum[t]$就行了,這就是一個RMQ問題,開個ST表就行了

一開始我們用優先隊列存儲所有的$(p,l,r)$,然后每一次取出隊首更新答案

注意如果$t$被選了,答案還有可能在$t$兩邊的區間里,所以記得把$(p,l,t-1)$和$(p,t+1,r)$給扔進優先隊列里

1 //minamoto 2 #include<iostream> 3 #include<cstdio> 4 #include<cstring> 5 #include<algorithm> 6 #include<queue> 7 #include<cmath> 8 #define ll long long 9 using namespace std; 10 #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++) 11 char buf[1<<21],*p1=buf,*p2=buf; 12 inline int read(){ 13 #define num ch-'0' 14 char ch;bool flag=0;int res; 15 while(!isdigit(ch=getc())) 16 (ch=='-')&&(flag=true); 17 for(res=num;isdigit(ch=getc());res=res*10+num); 18 (flag)&&(res=-res); 19 #undef num 20 return res; 21 } 22 const int N=500005,LOG=20; 23 ll sum[N],st[N][LOG]; 24 int n,k,l,r; 25 void init(){ 26 for(int i=1;i<=n;++i) st[i][0]=i; 27 for(int j=1;(1<<j)<=n;++j) 28 for(int i=1;i+(1<<j)-1<=n;++i){ 29 int x=st[i][j-1],y=st[i+(1<<j-1)][j-1]; 30 st[i][j]=sum[x]>sum[y]?x:y; 31 } 32 } 33 inline int query(int l,int r){ 34 int k=log2(r-l+1); 35 int x=st[l][k],y=st[r-(1<<k)+1][k]; 36 return sum[x]>sum[y]?x:y; 37 } 38 struct node{ 39 int p,l,r,t; 40 node(){} 41 node(int p,int l,int r):p(p),l(l),r(r),t(query(l,r)){} 42 inline bool operator <(const node &b)const 43 {return sum[t]-sum[p-1]<sum[b.t]-sum[b.p-1];} 44 }; 45 priority_queue<node> q; 46 int main(){ 47 // freopen("testdata.in","r",stdin); 48 n=read(),k=read(),l=read(),r=read(); 49 for(int i=1;i<=n;++i) 50 sum[i]=read(),sum[i]+=sum[i-1]; 51 init(); 52 for(int i=1;i<=n;++i) 53 if(i+l-1<=n) 54 q.push(node(i,i+l-1,min(i+r-1,n))); 55 ll ans=0; 56 while(k--){ 57 int p=q.top().p,l=q.top().l,r=q.top().r,t=q.top().t; 58 q.pop(); 59 ans+=sum[t]-sum[p-1]; 60 if(l!=t) q.push(node(p,l,t-1)); 61 if(t!=r) q.push(node(p,t+1,r)); 62 } 63 printf("%lld\n",ans); 64 return 0; 65 }

?

轉載于:https://www.cnblogs.com/bztMinamoto/p/9676536.html

總結

以上是生活随笔為你收集整理的洛谷 P2048 [NOI2010]超级钢琴(优先队列,RMQ)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 福利视频在线看 | 亚洲欧美另类视频 | 亚洲欧美一区二区三区情侣bbw | 中文字幕日韩电影 | 草av | 成人看的视频 | 国产一区黄 | 美女扒开下面让男人捅 | av成人免费 | 亚洲在线免费观看视频 | 国产又黄又爽视频 | 超鹏在线视频 | 午夜tv | 91香焦视频| av手机免费在线观看 | 日韩一级视频 | 日韩经典av | 国产精品久久久久久久久久免费 | 7mav视频 | 国产精品高潮呻吟久久久久久 | 午夜视频在线观看免费视频 | 亚洲少妇15p| 老色批网站 | 毛片网止 | 大地资源高清播放在线观看 | 国产精品s色 | 日本一本在线视频 | 欧美1区2区 | 国产视频一区在线观看 | 极品久久久久 | 国产欧美日韩久久 | 伊人激情在线 | 日本老妇高潮乱hd | 日本a级片网站 | 成人在线不卡视频 | 久久久久久久久久久久电影 | 亚洲国产精品suv | 日本高清免费aaaaa大片视频 | 欧美视频一区二区三区 | 懂色av粉嫩av蜜乳av | 人人草在线观看 | 国产免费不卡视频 | 在线亚洲+欧美+日本专区 | 禁漫天堂免费网站 | 中文区中文字幕免费看 | 91在线超碰 | 噜噜噜噜私人影院 | 日韩成人综合网 | 亚洲精品动漫在线观看 | 一级黄色片视频 | 嫩草伊人| 激情网婷婷| 99只有精品| 欧美巨乳在线 | 精品国产亚洲av麻豆 | www免费网站在线观看 | 国产免费脚交足视频在线观看 | 中国女人特级毛片 | 婷婷久 | 国产精品日韩一区二区 | 捆绑japanhdxxxxvideos| 免费av地址 | 黄频在线播放 | 亚洲天堂欧美 | 国产日韩欧美一区 | 婷婷亚洲一区 | 中文字幕久久一区 | 欧美日韩系列 | 超碰免费在线播放 | 蜜臀一区二区三区 | 一级片黄色 | 亚洲精品久久久蜜桃网尤妮丝 | 玩弄丰满少妇xxxxx性多毛 | 正在播放经典国语对白 | 撸啊撸av | 伊人成综合 | 日韩久久精品视频 | 亚洲成肉网 | 美女网站在线看 | 久久第一页| 性喷潮久久久久久久久 | 海量av资源 | 日韩有码专区 | 国产日韩一区二区在线观看 | 日韩大片在线 | 日韩精品在线看 | 欧美视频精品在线 | 午夜大片 | 欧美日韩一区二区电影 | 越南av| 欧美成人国产精品高潮 | 亚洲天堂一 | 欧美黄色a级片 | 久操欧美| 一级在线观看 | 男女插插插网站 | 欧美日韩不卡一区二区 | 日韩一级色 | 成人午夜视频网站 |