遵化手机网站设计,平阴县网站建设,乐陵seo营销,重庆企业网站建设哪家好前言
上一篇RMQ博客#xff1a;http://blog.csdn.net/mr_wuyongcong/article/details/79253383 正题
题目
要给奶牛放假#xff0c;每天有一定的快乐值#xff08;有可能是负数#xff09;#xff0c;假期不能小于p天或大于q天#xff0c;求最大快乐值 输入
第一行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加前缀和求。 代码
#includecstdio
#includecmath
#includeiostream
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-x1)/log(2));return max(f[x][z],f[y1-(1z)][z]);
}//求x到y的最大值
int main()
{scanf(%d%d%d,n,p,q);for (int i1;in;i){scanf(%lld,k);//输入sk;//前缀和f[i][0]s;//初始化}for (int j1;(1j)n;j)for (int i1;i(1j)-1n;i){f[i][j]max(f[i][j-1],f[i(1j-1)][j-1]);}//RMQ不解释详见我上篇博客前言有地址maxs-1*1e11;//小for (int i1;in-p1;i){maxsmax(maxs,re(ip-1,min(n,qi-1))-f[i-1][0]);//求最大值}printf(%lld,maxs);
}