【題目描述】
某旅遊景區的街道成網格狀。其中東西向德街道都是旅遊街,南北向的街道都是林蔭道。由於遊客眾多,旅遊街規定為單行道,遊客在旅遊街上只能從西向東走,在林蔭道上則既可從南向北,又可從北向南走。 阿龍想到這個旅遊街區遊玩。他的好友阿福給了他一些建議,用分值表示所有旅遊街相鄰兩個路口之間的街道值得遊覽程度,分值是從-100到100的整數,所有林蔭道不打分。所有分值不能全是負分。
如下圖,是被打過分的某旅遊的街道圖:
阿龍可以從任何乙個路口開始遊覽,在任何乙個路口結束遊覽。請你寫乙個程式,幫助阿龍找一條最佳的旅遊路線,使得這條路線的所有分值總和最大。
【輸入格式】
第一行是兩個整數m和n,之間用乙個空格分開,m表示有多少條旅遊街,n表示有多少條林蔭道。接下來的m行一次給出了由北向南每條旅遊街的分值。每行有n-1個整數,一次表示自西向東旅遊街每一小段的分值。同一行相鄰兩個數之間用乙個空格隔開。
【輸出格式】
一行乙個整數,表示最佳旅遊路線的最大總分值。
【輸入樣例】
3 6
-50 -47 36 -30 -23
17 -19 -34 -13 -8
-42 -3 -43 34 -45
【輸出樣例】
【樣例解釋】
沿著如下圖的路線走是最優路線:
【資料範圍】
1<=m<=100 1<=n<=20001
因為林蔭道(上下走)不計分,所以要取得最大值就應該每次走m行中分最大的乙個。又因為可以從任意路口開始結束,所以此題就可以看成是一道求最大連續子串行的題,序列即為每列的最大值。
#include
#include
#include
#include
#define maxn 20005
#define oo 2000000000
using
namespace
std;
int n,m,***x,ans=-oo;
int c[maxn],s[maxn];
int read()
return ok==1?-x:x;
}void out(int x)
void in()
}void task()
}int main()
遊武大 登臨珞珈 探武大旅遊最佳路線
是筆直穿越武大還是爬珞珈主山?武大有一條主路,可以從校門牌坊直達櫻花大道,經老圖書館,再遠眺行政樓和珞珈風景,至武大後門抵達東湖。這是條經典路線,它的好處就是跨越了著名景點,絕大部分人很熟悉,不容易出問題,非常保險。不好的地方很明顯,路線太短,達不到鍛鍊的目的,另外武大後門東湖邊沒有經濟實惠的餐廳,...
最佳旅遊線路
題目描述 某旅遊區的街道成網格狀。其中東西向的街道都是旅遊街,南北向的街道都是林 由於遊客眾多,旅遊街被規定為單行道,遊客在旅遊街上只能從西向東走,在林 上則既可從南向北走,也可以從北向南走。阿龍想到這個旅遊街遊玩,他的好友阿福給了他一些建議,用分值表示所有旅遊街相鄰兩個路口之見的街道值得遊覽的程度...
CODEVS 3300 旅遊路線
有n個旅客來到了乙個旅遊景點,你作為乙個導遊要給這n個旅客安排旅遊路線。如果你安排了第i個旅客去旅遊,那麼你會得到xi的錢 若xi為負數,則你需要給他 xi的錢 對於第i個顧客,他有ki個要求。每個要求是乙個二元組 aij,bij 表示如果你安排了顧客i去,但是沒有安排顧客aij去,那麼xi就要減去...