0%

第五届上海理工大学程序设计全国挑战赛A. Another Walk Alone Problem

思路讲解

看了题解以后,我们发现有些时候我们不一定要全部依赖树状dp得出答案。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
auto dfs=[&](auto &&self,ll u,ll cur,ll gain,ll de)->void{    // 在外面调用的时候dfs(dfs,u)
vis[u]=true;dp[u]=cur;
for(int i=0;i<g[u].size();++i){
ll v=g[u][i][0],w=g[u][i][1];
if(vis[v]) continue;
if(cur+gain+A[u]-de>=w){
self(self,v,cur,gain+A[u],de+w);
}else{
self(self,v,w-gain-A[u]+de,gain+A[u],de+w);
}
}
for(int i=0;i<g[u].size();++i){
ll w=g[u][i][1],v=g[u][i][0];
if(w*2<A[u]+A[v] && A[u]>=w){
inf.push_back(dp[u]); // 无限循环所需要的值
break;
}
}
};

AC代码

https://ac.nowcoder.com/acm/contest/view-submission?submissionId=78031630

心路历程(WA,TLE,MLE……)