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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

jzoj1371-假期【RMQ】

發布時間:2023/12/3 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 jzoj1371-假期【RMQ】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

上一篇RMQ博客:http://blog.csdn.net/mr_wuyongcong/article/details/79253383


正題

題目

要給奶牛放假,每天有一定的快樂值(有可能是負數),假期不能小于p天或大于q天,求最大快樂值


輸入

第一行:N,P,Q.
第二行:N個數字,中間用一個空格隔開。

輸出

一個整數,奶牛們能獲得的最大享受指數。

樣例輸入

5 2 4
-9 -4 -3 8 -6

樣例輸出

5


解題思路

從i天放假q天的最大值其實就包括了從p到q-1的最大值,所以我們只需要求地q-1的就好了,這里用RMQ加前綴和求。


代碼

#include<cstdio> #include<cmath> #include<iostream> using namespace std; int n,p,q; long long k,s; long long f[100001][21],maxs;//一定要long long long long re(long long x,long long y) {long long z=(long long)(log(y-x+1)/log(2));return max(f[x][z],f[y+1-(1<<z)][z]); }//求x到y的最大值 int main() {scanf("%d%d%d",&n,&p,&q);for (int i=1;i<=n;i++){scanf("%lld",&k);//輸入s+=k;//前綴和f[i][0]=s;//初始化}for (int j=1;(1<<j)<=n;j++)for (int i=1;i+(1<<j)-1<=n;i++){f[i][j]=max(f[i][j-1],f[i+(1<<j-1)][j-1]);}//RMQ不解釋,詳見我上篇博客(前言有地址)maxs=-1*1e11;//小for (int i=1;i<=n-p+1;i++){maxs=max(maxs,re(i+p-1,min(n,q+i-1))-f[i-1][0]);//求最大值}printf("%lld",maxs); }

總結

以上是生活随笔為你收集整理的jzoj1371-假期【RMQ】的全部內容,希望文章能夠幫你解決所遇到的問題。

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