我尝试了一种方法
  • 板块P1007 独木桥
  • 楼主Michelle01
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/11/19 22:07
  • 上次更新2023/11/20 13:06:07
查看原帖
我尝试了一种方法
957640
Michelle01楼主2023/11/19 22:07

我尝试用dp来做这道题,但是写到相遇的代码时,就卡住了,不会写了。有没有哪位大佬愿意辅导一下我这只小菜鸡

#include<bits/stdc++.h>
#include<cmath>
using namespace std;
int a[1100];
int dp[2200], dp1[2200];
int main(){
	
	int l, n;
	cin >> l >> n;
	for(int i = 1; i <= n; i++){
		cin >> a[i];
	}
	for(int i = 1; i <= n; i++){
		dp[i] = a[i];
		dp1[i] = a[i];
	} 
	for(int i = 1; i <= n; i++){//有两种情况,分辨是向左或右走,寻找时间最少方向。 
		dp[i] = min(dp[i], min(a[i]--, l - (a[i]++)));
	}
	for(int i = 1; i <= n; i++){
		dp1[i] = max(dp1[i], max(a[i]--, l - (a[i]++)));//作死,走哪个方向耗得时间越长往哪走。 
	}
	cout << dp[n] << endl << dp1[n];
	return 0;
}
2023/11/19 22:07
加载中...