随笔 - 531  文章 - 0  评论 - 3  阅读 - 10050 

有 n 道题目要抄,耗时a[i]  。用不超过 t分钟抄这个,每道题要么不写,要么抄完,。

下标连续的一些空题称为一个空题段,它的长度就是所包含的题目数。

现在,小 Y 想知道他在这 t 分钟内写哪些题,才能够尽量减轻马老师的怒火( 连续空题段的最大值 )

 

复制代码
#include <iostream>
#include <cstring>
using namespace std;
 const int N=2e5+3;
 
 #define int long long
 int a[N],f[N],n,m;
 
 int hh,tt,q[N];
 
 int chk(int md){
     int i;
     for(i=0;i<=n;i++) f[i]=1e9; f[0]=0;
     hh=tt=0;
     for(i=1;i<=n;i++){
         while(hh<=tt&&q[hh]<i-md) hh++;
         f[i]=a[i]+f[q[hh]];
         
         while(hh<=tt&&f[q[tt]]>f[i]) tt--;
         q[++tt]=i;
      }
     return f[n]<=m;
 }
 signed main(){
     int i,l,r,ans;
     cin>>n>>m;
     for(i=1;i<=n;i++) cin>>a[i];
     l=1,r=n;
     a[++n]=0; 
     while(l<=r){
         int md=(l+r)/2; 
         if(chk(md)==0) ans=md,l=md+1; else r=md-1;
     }
     cout<<ans;
 }
复制代码

 

posted on   towboat  阅读(74)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 易语言 —— 开山篇
点击右上角即可分享
微信分享提示