假期

【题目描述】

John决定让奶牛们放假,假期可以为1~N天内的任意连续的一段,每一天都有一个享受指数W。

奶牛们要求假期不能短于P天,也不能长于Q天。

现询问奶牛们能够获得的最大享受指数是多少。

【输入描述】

第一行输入三个整数N、P、Q;

第二行输入N个数字,分别表示每一天的享受指数W。

【输出描述】

输出一个整数,表示最大享受指数。

【样例输入】

5 2 4

-9 -4 -3 8 -6

【样例输出】

5

【数据范围及提示】

样例中,选择第3~4天,享受指数为-3+8=5。

对于50%的数据,1 <= N <= 10000;

对于100%的数据,1 <= N <= 100000,1 <= p <= q <= N。

源代码:

#include<cstdio>
#include<algorithm>
using namespace std;
long long Ans=-0x7fffffff,Sum[100001]; //数据范围!7f才是真理!
int N,Left,Right,Q[100001]; int main() { scanf("%d%d%d",&N,&Left,&Right); Sum[0]=0; for (int a=1;a<=N;a++) //前缀和。 { int t; scanf("%d",&t); Sum[a]=Sum[a-1]+t; } int Head=1,Tail=0; for (int a=Left;a<=N;a++) //单调队列优化,上来赋值Left是为了防止越界。 { while (Head<=Tail&&Sum[Q[Tail]]>=Sum[a-Left]) Tail--; Q[++Tail]=a-Left; if (Q[Head]<a-Right) Head++; Ans=max(Ans,Sum[a]-Sum[Q[Head]]); } printf("%lld",Ans); return 0; } /* 先用前缀和处理一下。 然后单调队列找出最小的前缀和,然后作差取最大即可。 */

转载于:https://www.cnblogs.com/Ackermann/p/5965213.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要判断今天是否是假期,可以使用Python的内置模块datetime来进行处理。首先,可以使用datetime.date.today()函数获取当前日期。然后,根据你的假期规则来判断是否是假期。根据引用所提到的方法,你可以使用一个名为"TradingDateChecker"的函数来扫描可预测的假期,比如1月1日,7月4日,12月25日等。你可以使用datetime.strptime()函数将日期转换为datetime对象,然后使用.date()方法将其转换为日期对象。最后,你可以将得到的日期对象与当前日期进行比较,判断是否是假期。举个例子,你可以使用datetime.strptime('2012-02-03','%Y-%m-%d').date()将日期字符串转换为日期对象。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [python如何判斷今天是不是假期](https://blog.csdn.net/weixin_35752233/article/details/128867169)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [关于Datetime Python:Datetime Python-下一个工作日](https://blog.csdn.net/weixin_39636718/article/details/111914547)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值