社区讨论
举报chen_zhe抄题解!!!
站务版参与者 298已保存回复 456
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 456 条
- 当前快照
- 1 份
- 快照标识符
- @mi7dm63t
- 此快照首次捕获于
- 2025/11/20 19:57 4 个月前
- 此快照最后确认于
- 2025/11/20 23:48 4 个月前
疑似管理员chen_zhe在P5021赛道修建中发布了一篇题解,时间为2018-11-24 14:06,而我也发布了一篇题解,时间为2018-11-14 10:58
时间相差10天!
chen_zhe的解析:

我的解析:

思路极其相像。
更重要的是
核心代码都一模一样!!!他只是把我的树上dfs换成bfs,邻接表换成了vector!!!
chen_zhe的核心代码:
CPPinline long long dfs(int u,int fa,long long lim) {
s[u].clear();
long long val=0;
for (int i=0; i<G[u].size(); i++) {
int v=G[u][i];
if (v!=fa) {
val=dfs(v,u,lim)+W[u][i];
if (val>=lim)
ans++;
else
s[u].insert(val);
}
}
long long maxd=0;
while (!s[u].empty()) {
if (s[u].size()==1)
return max(maxd,*s[u].begin());
multiset <long long> :: iterator it=s[u].lower_bound(lim-*s[u].begin());
if (it==s[u].begin() && s[u].count(*it)==1)
it++;
if (it==s[u].end()) {
maxd=max(maxd,*s[u].begin());
s[u].erase(s[u].find(*s[u].begin()));
} else {
ans++;
s[u].erase(s[u].find(*it));
s[u].erase(s[u].find(*s[u].begin()));
}
}
return maxd;
}
我的核心代码:(去注释版)
CPPint dfs(int x,int fa,int k){
s[x].clear();
int val;
for(int i=head[x],y;i;i=e[i].next){
y=e[i].to;
if(y==fa) continue;
val=dfs(y,x,k)+e[i].val;
if(val>=k) ans++;
else {
s[x].insert(val);
}
}
int Max=0;
while(!s[x].empty()){
if(s[x].size()==1){
return max(Max,*s[x].begin());
}
it=s[x].lower_bound(k-*s[x].begin());
if(it==s[x].begin()&&s[x].count(*it)==1) it++;
if(it==s[x].end()){
Max=max(Max,*s[x].begin());
s[x].erase(s[x].find(*s[x].begin()));
}
else {
ans++;
s[x].erase(s[x].find(*it));
s[x].erase(s[x].find(*s[x].begin()));
}
}
return Max;
}
附上链接:
chen_zhe:https://www.luogu.org/blog/chen-zhe/solution-p5021
Owen_codeisking:https://www.luogu.org/blog/Owencodeisking/solution-p5021
希望洛谷管理员重视管理员抄题解的行为,我其他也不想,就想把他的题解撤下来!!!
这份代码是我考试的时候自己写的,绝对原创,如果我抄袭,把我棕名也可以!!!
kkksc03lin_toto
回复
共 456 条回复,欢迎继续交流。
正在加载回复...