【发布时间】:2018-12-16 04:42:12
【问题描述】:
如何将常量k 添加到向量中的一系列元素[a,b],非常快!
我编写的代码适用于q 查询数量相对较短的输入:
long int a,b,k,n;
vector<long int> v(n+1,0);
for( long int i=0; i<q ;i++)
{
cin>>a>>b>>k;
for(int j=a-1; j<=b-1; j++)
{
v[j]+=k;
}
}
但这显然是一个非常缓慢的解决方案!对于较大的 k 和 range 值,代码需要更长的时间
例如 [a,b]=6581237, 9872072 和 k=87106 将花费相对较长的计算时间。
那么有没有更快的方法可以在更短的时间内完成工作?
编辑:我的方法为大量查询(10^7)和范围达到 10^7 的数量级时提供超时。
【问题讨论】:
-
通过
[]向vector添加325 万个元素不会花费几十年的时间。几秒钟,也许。不知道你遇到了什么问题。 -
n在您使用之前似乎没有被初始化。我建议使用minimal reproducible example 更新问题。 -
除了@user4581301 的评论,请说明您正在计时的代码部分以及如何您正在执行该计时。
-
Adding a value to a vector for millions of elements does not take decades。该示例是在没有优化的情况下编译的。大约一秒钟后输出“完成”消息。我认为您是过早优化的受害者。
-
在我看来是个 XY 问题。你原来的问题是什么?
标签: c++ performance vector stl