- 不太甜的糖果
两种方法的题解
- 2023-7-13 11:10:54 @
#include<iostream>
#include<cstdio>
using namespace std;
const int N = 2.3E5 + 5;
int n, m, a[N], s[N];
bool check(int len)
{
for(int i = len - 1; i <= n; i++)
{
if(s[i] - s[i - len] >= m)
{
return 1;
}
}
return 0;
}
void binAns()
{
int ans = 0;
int left = 1, right = n;
while(left <= right)
{
int mid = (left + right) / 2;
if(check(mid))
{
ans = mid;
right = mid - 1;
}
else
left = mid + 1;
}
printf("%d\n", ans);
}
void handle()
{
int ans = n;
for(int len = 1; len <= n; len++)
{
for(int i = len - 1; i <= n; i++)
{
if(s[i] - s[i - len] >= m)
{
ans = len;
break;
}
}
if(ans != n)
break;
}
printf("%d\n", ans);
}
void initInput(void)
{
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i++)
{
scanf("%d", &a[i]);
s[i] = s[i - 1] + a[i];
}
}
int main(void)
{
initInput();
// handle();
binAns();
return 0;
}
0 条评论
目前还没有评论...
信息
- ID
- 320
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 105
- 已通过
- 30
- 上传者