一些坑
程序员文章站
2022-07-15 15:48:49
...
Point 1
CodeForces - 543D Road Improvement
正确写法:
for(int i = suf[u].size() - 2; i >= 0; -- i)
错误写法:
for(int i = suf[u].size() - 2; ~i; -- i)
原因是 ~ 只能判断 的情况。
Point 2
转自 Arextre。
关于 的去重情况。
假设我们定义了一个 sets,对于结构体 node 我们重载其 < 运算。
那么,如果 set 中的两个元素 a,b,假如他们在我们重载或者定义的优先级比较之下,同时不满足 a<b 与 b<a,那么就会判定 a 和 b 是等价的,这个时候 set 就会去重。举个栗子:
struct node{int t,id;
bool operator <(const node rhs)const{
return t<rhs.t;
}
};
set<node>a;
那么,在 set 的去重中,只要满足某两个元素的 t 是一样的,set 就会认定他们是同一元素并去重,而不会在意 id 是否是相同的。
Point 3
Point 4
判断到达叶子节点直接 return
。(前向星)
曾经的写法:
if(nxt[head[u]] == 0) return;
其实就是判断是否只有一条边连接。然而,,,根节点也可能出现这种情况,然后就凉了。
正解:
bool flag = 0;
for(int i = head[u]; i; i = nxt[i]) if(to[i] != fa) DP(to[i], u), flag = 1;
if(! flag) return;
上一篇: 如何一键部署项目&&代码自动更新
下一篇: RestTemplate报错打印异常信息