难以理解且why it works?
查看原帖
难以理解且why it works?
566903
福明o7楼主2023/10/3 23:43

用floyd算法做的,我能问一句为什么最大值赋值成2147483647就不行,改成题解中的0x3f3f3f3f3f3f3f3fll就过了? 原代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=505;
const int oo=2147483647;
...
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(i==j){
				f[i][j]=0;
			}
			else if(a[j].x>=a[i].x&&a[j].y>=a[i].y){
				f[i][j]=abs(a[i].x-a[j].x)+abs(a[i].y-a[j].y);
			}
			else{
				f[i][j]=oo;
			}
		}
	}

AC代码:

#include<bits/stdc++.h>
#define int long long
using namespace std;
typedef long long ll;
const int N=505;
const int oo=0x3f3f3f3f3f3f3f3fll;;
...
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(i==j){
				f[i][j]=0;
			}
			else if(x[j]>=x[i]&&y[j]>=y[i]){
				f[i][j]=abs(x[j]-x[i])+abs(y[i]-y[j])-1;
			}
			else{
				f[i][j]=oo;
			}
		}
	}

为啥不行?范围没到ll啊

2023/10/3 23:43
加载中...