NC50534. 绿色通道
描述
输入描述
第一行为两个整数n,t。
第二行为n个整数,依次为。
输出描述
输出一个整数,表示最长的空题段至少有多长。
示例1
输入:
17 11 6 4 5 2 5 3 4 5 2 3 4 5 2 3 6 3 5
输出:
3
说明:
C++ 解法, 执行用时: 850ms, 内存消耗: 780K, 提交时间: 2021-10-17 15:17:24
#include <bits/stdc++.h> using namespace std; int f[50005],n,t,a[50005],mid; bool dp(int x) { memset(f,0x3f,sizeof(f)); int ans=1e9; for(int i=1;i<=x;i++) f[i]=a[i]; for(int i=x+1;i<=n;i++) for(int j=1;j<=x;j++) f[i]=min(f[i-j]+a[i],f[i]); for(int i=0;i<x;i++) ans=min(f[n-i],ans); return ans<=t; } int main() { scanf("%d%d",&n,&t); for(int i=1;i<=n;i++) scanf("%d",&a[i]); int l=1,r=n; while(l<=r) { mid=l+r>>1; if(dp(mid)) r=mid-1; else l=mid+1; } printf("%d",r); }