求回答WA90
查看原帖
求回答WA90
1113126
Statax楼主2024/4/13 14:42

这题数据感觉非常弱,这个代码最多最多也只能拿50分吧,结果竟然拿了90分,估计就只有那一个点是需要按照“阿龙也可以选择如下一条线路:1→4→5→4→5,并在第 1 次到达 5 号城市时以 1 的价格买入水晶球,在第 2 次到达 4 号城市时以 6 的价格卖出水晶球,赚取的旅费数为 5。”这种类型的方法来得到最佳答案的吧。(毕竟样例也没过)

蒟蒻不会@,求帮忙

#include<bits/stdc++.h>
using namespace std;
const int N=100005;

int n,m;
int ans;
int x,y,z;
int f[N];
int v[N];
vector<int>G[N];

void dfs(int x,int mx,int mn){
	if(x==n){
		ans=max(ans,mx-mn);
		return ;
	}
	
	if(v[x])return ;
	v[x]=1;
	for(auto y:G[x]){
		if(v[y])continue;
		if(mx<f[y]){
			dfs(y,f[y],mn);
		}else if(mn>f[y]){
			dfs(y,f[y],f[y]);
		}
		dfs(y,mx,mn);
	}
}

int main(){
	cin>>n>>m;
	
	for(int i=1;i<=n;i++)
		cin>>f[i];	

	for(int i=1;i<=m;i++){
		cin>>x>>y>>z;
		G[x].push_back(y);
		if(z==2)
			G[y].push_back(x);
	} 

	dfs(1,f[1],f[1]);
	cout<<ans<<endl;	
	
	
	return 0;
}
2024/4/13 14:42
加载中...