@[小粉兔](/space/show?uid=10703) 改了之后双倍调用开销吧qaq
标准操作不是 `friend operator<(const Node&,const Node&);` 么qaq
by rvalue @ 2019-02-17 21:15:03
顺便说不嫌麻烦的话写个普通比较函数套成 `std::function` 放在模板参数也行(逃
效果是一样的
by rvalue @ 2019-02-17 21:16:23
(淦 忘写返回值类型了)
by rvalue @ 2019-02-17 21:16:56
优先队列内部实现需要一个<运算符,如果不定义的话就会出错
by Zyque @ 2019-02-17 21:18:15
@[chino在我身下受](/space/show?uid=111762) 哦还有结构体的构造函数怎么写
by Andrew82 @ 2019-02-17 21:19:17
@[Andrew82](/space/show?uid=109378)
额。。你是说什么构造函数?
by _ctz @ 2019-02-17 21:21:36
@[chino在我身下受](/space/show?uid=111762)
好吧,我在网上找到了。。
by Andrew82 @ 2019-02-17 21:23:53
@[小粉兔](/space/show?uid=10703)
```
struct node
{
int dis;
int pos;
node(int a,int b):dis(a),pos(b){}
friend bool operator <(node a,node b)
{
return a.dis<b.dis;
}
};
```
大佬确定这样写没有问题?我就用这代码替换了一下原来P4779的迪杰斯特拉的重载然后只剩了15分??
by Andrew82 @ 2019-02-17 21:39:55
好吧,是大于小于符号打错了
但是话说这样:
```
struct node
{
int dis;
int pos;
node(int a,int b):dis(a),pos(b){}
friend bool operator <(node a,node b)
{
return a.dis<b.dis;
}
};
```
和这样:
```
struct node
{
int dis;
int pos;
node(int a,int b):dis(a),pos(b){}
friend bool operator <(node a,node b)
{
return a.dis>b.dis;
}
};
```
为什么上面是降序,下面是升序?
by Andrew82 @ 2019-02-17 22:03:14
@[Andrew82](/space/show?uid=109378) 你自己写挂了……
注意 pq 是大根堆,但是你需要的是小根堆
by 小粉兔 @ 2019-02-17 22:03:47