題意:n個城市,m條雙向邊每條邊有個承受重量權值,問1到n最大承重量。
解法:初始化為0,選權值大的邊,更新:如果dis[j] < min(dis[pos] , ma[pos][j]) 這樣更新使得到達j的承重量盡可能的大。
//#include#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long ll ;
#define int ll
#define mod 100
#define gcd(m,n) __gcd(m, n)
#define rep(i , j , n) for(int i = j ; i <= n ; i++)
#define red(i , n , j) for(int i = n ; i >= j ; i--)
#define me(x , y) memset(x , y , sizeof(x))
//int lcm(int a , int b)
//ll quickpow(ll a , ll b)return ans;}
//int euler1(int x)if(x>1)ans-=ans/x;return ans;}
//const int n = 1e7+9; int vis[n],prime[n],phi[n];int euler2(int n)for(int j=1;j#define fi first
#define se second
#define lson l,mid,root<<1
#define rson mid+1,r,root<<1|1
#define pb push_back
#define mp make_pair
#define all(v) v.begin(),v.end()
#define size(v) (int)(v.size())
#define cin(x) scanf("%lld" , &x);
const int n = 1e5+9;
const int maxn = 1e3+9;
const double esp = 1e-6;
int ma[maxn][maxn] , vis[maxn] , dis[maxn];
int n , m , cnt;
void dijkstra(int u)
vis[u] = 1 ;
rep(i , 1 , n-1)
}vis[pos] = 1 ;
rep(j , 1 , n)}}
}void init()
void solve()
dijkstra(1);
cout << "scenario #" << ++cnt << ":" << endl << dis[n] << endl << endl;
}signed main()
}
題意:乙隻青蛙要跳到另乙隻青蛙的所在石頭,給出n個石頭,從1到n,使跳躍的所需最小距離範圍最小為多少?
解法:更新:如果dis[j] > max(dis[pos] , pos[j]) , 使得到達dis【j】的最長距離最小
//#include#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long ll ;
#define int ll
#define mod 1000000007
#define gcd(m,n) __gcd(m, n)
#define rep(i , j , n) for(int i = j ; i <= n ; i++)
#define red(i , n , j) for(int i = n ; i >= j ; i--)
#define me(x , y) memset(x , y , sizeof(x))
int lcm(int a , int b)
//ll quickpow(ll a , ll b)return ans;}
//int euler1(int x)if(x>1)ans-=ans/x;return ans;}
//const int n = 1e7+9; int vis[n],prime[n],phi[n];int euler2(int n)for(int j=1;j#define fi first
#define se second
#define lson l,mid,root<<1
#define rson mid+1,r,root<<1|1
#define pb push_back
#define mp make_pair
#define all(v) v.begin(),v.end()
#define size(v) (int)(v.size())
#define cin(x) scanf("%lld" , &x);
const int n = 1e7+9;
const int maxn = 2e2+9;
const double esp = 1e-6;
double ma[maxn][maxn];
double dis[maxn];
int vis[maxn], n , m, cnt;
pii a[maxn];
void dijia(int r)
vis[r] = 1 ;
rep(i , 1 , n-1)
}vis[pos] = 1 ;
rep(j , 1 , n)}}
}void init()
void solve()
rep(i , 1 , n)
}dijia(1);
cout << "scenario #" << ++cnt << endl;
printf("frog distance = %.3f\n\n" , dis[n]);
}signed main()
poj 3615 最短路 路徑最大值中的最小值
題意 從a點到b點的可達路徑上的最大值的最小值 解題報告 直接folyed 改變鬆弛條件,兩點的路徑最小值必然為子路徑上的最大值與其取min。define first f define second s define ll long long define mp make pair define p...
最大值 最小值
求最大最小的時候有點小技巧,就是我們兩個兩個的比較,把大個跟當前最大比較,小的跟當前最小的比較,這樣就會節約一點比較時間,有原來的2 n到3 n 2。include include 得到最大最小值 int getmaxmin int ndata,int nlen,int pnmax,int pnmi...
int float double 最大值,最小值
中沒有double的最大最小值。如果輸出的比如 100lf輸出2.23432432,沒有達到100位,則最後2後面不一定都是0。原文見view plaincopy to clipboardprint?coder acboy date 2010 3 1 include include using na...