能不能帮帮我
2026-04-25 17:01:37
发布于:浙江
25阅读
0回复
0点赞
路过的DALAO帮帮我
谁能帮我优化一下
#include <bits/stdc++.h>
using namespace std;
int n,s;
const int N = 1e5+7;
int a[N],u[N];
int main()
{
int t,ans = 0;
cin >> t;
while(t--)
{
long long sum = 0;
cin >> n >> s;
for(int i = 1;i <= n;i++)
{
cin >> a[i];
sum += a[i];
}
int l = 1,r = 1e5+4;
while(l <= r)
{
long long mid = (l+r)/2;
if(mid*s < sum)
{
l = mid + 1;
continue;
}
for(int j = 1;j <= mid;j++)
{
u[j] = s;
}
bool flag = 1;
for(int k = 1;k <= n;k++)
{
int maxn = -1,maxpos = 0;
for(int j = 1;j <= mid;j++)
{
if(maxn < u[j])
{
maxn = u[j];
maxpos = j;
}
}
if(u[maxpos] > a[k])
{
u[maxpos] -= a[k];
}
else
{
flag = 0;
break;
}
}
if(flag)
{
ans = mid;
r = mid - 1;
}
else
{
l = mid + 1;
}
}
cout << ans << "\n";
}
}
时间复杂度有亿点点大
全部评论 13
1周前 来自 山东
1我尝尝
1周前 来自 广东
0你的输出都是错的,先去优化 WA 把
1周前 来自 浙江
0谢谢大佬,定义忘初始化了,已经AC了
1周前 来自 浙江
0下次有题可以at你吗,不会太水
1周前 来自 浙江
0黄题以上艾特,其他算了。
1周前 来自 浙江
0
1
1周前 来自 山东
01
1周前 来自 山东
01
1周前 来自 山东
01
1周前 来自 山东
01
1周前 来自 山东
0ddd
1周前 来自 浙江
0ddd
1周前 来自 浙江
0ddd
1周前 来自 浙江
0ddd
1周前 来自 浙江
0ddd
1周前 来自 浙江
0















有帮助,赞一个