我不认为在我的代码中我尝试访问空指针,或初始化大型数组,有人请帮忙,我不知道运行时错误(SIGSEGV)的来源。可以在https://www.codechef.com找到问题的问题 / MARCH18B /问题/ MINEAT
编辑: 我想我发现,NathanOliver是对的,v1,因为我的代码,有时候是空的。实际上我的循环中找到了一些答案(在n之上)。非常感谢。我修好了,我终于得到了AC,但只有30分,我的代码又花了0.01秒才能运行。根据问题陈述,请任何人帮我优化它。
#include <bits/stdc++.h>
using namespace std;
int main()
{
int t; cin>>t; while(t--)
{
int n = 0, h = 0; cin>>n>>h;
vector<int> v; vector<int> v1;
for(int i = 0; i != n; i++){int a; cin>>a; v.push_back(a);}
for(int j = 1; j <= h; j++)
{
int hold = 0;
for(auto k : v)
{
if (j >= k){hold +=1;}
else if (j < k){if(k % j == 0){hold += (k/j);} else{hold += ((k/j)+1);}}
}
if (hold <= h){v1.push_back(j);}
}
cout<<*min_element(v1.begin(),v1.end())<<endl;
}
}
答案 0 :(得分:1)
你检查了min_element函数的返回值吗?根据用户输入,min_element函数返回一个迭代器到'last element',它基本上是一个nullptr。由于您直接取消引用它,您会收到错误。