小编cie*_*woj的帖子

我可以在std :: function模板签名类型参数中使用命名参数吗?

我可以合法地在std::function(或其他类似的构造)中使用模板参数的名称吗?例如给出代码

std::function<int(int, int)> some_func;
Run Code Online (Sandbox Code Playgroud)

我可以按照以下方式重写吗?

std::function<int(int begin, int end)> some_func;
Run Code Online (Sandbox Code Playgroud)

如果它符合标准,那将是非常好的,因为单独的类型几乎没有关于参数目的的信息.

到目前为止,我已经在Visual Studio 2013中对它进行了测试,但它确实有效.编辑:它也适用于gcc 4.8.1.

c++ c++11 std-function

15
推荐指数
2
解决办法
1093
查看次数

快速乘法模2 ^ 16 + 1

IDEA密码使用乘法模数2^16 + 1.是否有算法在没有通用模运算符的情况下执行此操作(仅模数2^16(截断))?在IDEA的上下文中,零被解释为2^16(它表示零不是我们乘法的参数,它不能是结果,因此我们可以保存一位并将值存储2^16为位模式0000000000000000).我想知道如何在不使用标准模运算符的情况下有效地实现它(或者是否有可能).

c cryptography algebra modulus

6
推荐指数
1
解决办法
1034
查看次数

将点集分组到最近的对

我需要一个算法来解决以下问题:

我在平面上给出了一组2D点P = {(x_1,y_1),(x_2,y_2),...,(x_n,y_n)}.我需要以下列方式将它们成对分组:

  1. 在P中找到两个最近点(x_a,y_a)和(x_b,y_b).
  2. 将<(x_a,y_a),(x_b,y_b)>对添加到结果集R.
  3. 从P.删除<(x_a,y_a),(x_b,y_b)>
  4. 如果初始设置P不为空,请转到第一步.
  5. 返回组对R.

该朴素算法为O(n ^ 3),使用更快的算法搜索最近邻居,可以将其改进为O(n ^ 2 logn).可以做得更好吗?

如果这些点不在欧几里德空间怎么办?

一个例子(结果组由红色圆圈圈出):

在此输入图像描述

algorithm nearest-neighbor computational-geometry

6
推荐指数
1
解决办法
896
查看次数

在无根树中找到多个LCA

我正在尝试为无根树实施LCA.我已经给出了一个树(一个没有循环的连通无向图)和一些关于某些根和两个顶点的LCA的查询.每个特定的查询都可以有不同的根,所以我不能使用在开始时对任意根进行预处理的算法.

到目前为止,我已经尝试使用DFS找到从顶点到根的路径,然后检查它在哪里发散,但是它有点慢(O(nq),其中q是查询数).

有任何建议如何预处理树,以便具有查询的次线性复杂性?

algorithm tree least-common-ancestor lowest-common-ancestor

4
推荐指数
1
解决办法
1435
查看次数