題目鏈接:http://acm.timus.ru/PRoblem.aspx?space=1&num=2069 題意:給你n條豎線m條橫線,讓你求,從右上角到左下角的所有路線的每條路線中的最小值最大,輸出最大值 解析:根據給出的這個圖的特點,豎著的線值是一樣的,橫著的線是一樣的,路線總共有四種情況: 1、豎到底再橫著走。 2、橫到底再豎著走。 3、先橫著走,再豎著走豎著的線里面最大的,再橫著走。 4、先豎著走,再橫著走橫著的線里面最大的,再豎著走
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;const int maxn = 2*1e5+100;int clo[maxn];int row[maxn];int main(){ int n,m; scanf("%d %d",&n,&m); int maxc=0,maxr=0; for(int i=0;i<n;i++) { scanf("%d",&row[i]); maxr = max(maxr,row[i]); } for(int i=0;i<m;i++) { scanf("%d",&clo[i]); maxc = max(maxc,clo[i]); } int ans = min(row[0],clo[m-1]); ans = max(ans,min(clo[0],row[n-1])); ans = max(ans,min(maxr,min(clo[0],clo[m-1]))); ans = max(ans,min(maxc,min(row[n-1],row[0]))); printf("%d/n",ans); return 0;}新聞熱點
疑難解答