使用矢量STL的SIGSEGV
sigsegv using vector stl
#include<iostream>
#include<vector>
#include<algorithm>
#include<string.h>
using namespace std;
int main()
{
vector<int> a, b,c,d;
vector<long> Left, Right;
freopen("input", "r",stdin);
int n;
scanf("%d",&n);
for(int i=0;i<n;i++) {
long a1, b1, c1, d1;
scanf("%ld %ld %ld %ld",&a1,&b1,&c1,&d1);
a.push_back(a1);
b.push_back(b1);
c.push_back(c1);
d.push_back(d1);
}
int len=0;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
{
long x,y;
x=(a[i]+b[j]);
y=(c[i]+d[j]);
Left.push_back(x);
Right.push_back(-y);
len++;
}
sort(Left.begin(), Left.end());
int count=0;
for(int i=0;i<len;i++)
{
long val=Right[i];
if(binary_search(Left.begin(), Left.end(), val))
count++;
}
printf("%dn",count);
return 0;
}
我再次为该程序获得sigsegv。每当我使用矢量时,我在 spoj 上都会收到类似的错误,但它在我的 gcc 上工作正常。
您应该删除 freopen,否则您将永远不会读取他们的输入。当我删除它时,我的代码收到了错误的答案,这是有原因的。请阅读以下提示:
- 你的算法复杂度是 4000 * 4000 * log(4000^2(,太慢了。尝试想一个更好(更快的解决方案(。事实上,您正在朝着正确的方向思考,只是尽量避免对数。
- long和int在大多数当代裁判机器上都是相同的。我从不在竞争性编程中使用长时间。当你需要更大的类型时,int使用"long long"> 可能的情况是
- ,可以分别使用 A 和 B 中的一对值来实现给定的值 A + B 的总和。
相关文章:
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么这个运算符<重载函数对 STL 算法不可见?
- 在C应用程序中运行C++(带有STL)函数
- 使用2个键的cpp-stl::优先级队列排序不正确
- 创建LinkedList退出,返回代码为-11(SIGSEGV)
- 在STL容器中使用模板类
- 用C++中的CPerson(类)类型的对象初始化STL矢量
- 将stl字符串缩小到小于15个字符的容量
- 在为LINUX创建共享库时,如何避免STL的私有/弱副本
- 检查函数返回类型是否与STL容器类型值相同
- STL算法函数在多个一维容器上的使用
- 在STL - C++中按成绩对学生列表进行排序?
- 为什么 STL 容器适配器堆栈中的 top 返回常量引用?
- SIGSEGV 使用shared_ptr引用时
- λ可以适应STL吗?
- 为什么使用 NDK 不能存在不同的 stl 实现?
- 如果我真的真的想从 STL 容器继承,并且我继承构造函数并删除新运算符,会发生什么?
- 使用 char 分隔符解析C++中的字符串,但将可重复的字符保留为每个解析的子字符串 (C++ STL) 中的分隔符
- 在C++中迭代 STL 集时出现奇怪的问题<CStudent>
- 使用矢量STL的SIGSEGV