874 最大的假期天數

2022-06-12 06:18:07 字數 1652 閱讀 2744

lintcode想讓它最好的員工之一選擇在n個城市間旅行來收集演算法問題。但是只工作不玩耍,聰明的孩子也會變傻,你可以在某些特定的城市並且乙個星期裡去度假。你的工作是安排旅行,盡可能多的假期,但是有一些規則和限制你需要遵守。

規則和限制:

您只能在1個城市中旅行,由0到n-1的索引表示。一開始,你周一在城市0。

這些城市都是通過航班連線起來的。這些航班被表示為nn矩陣(非必要對稱),稱為代表航空公司從城市i到j城市狀態的flights矩陣。如果沒有從城市i到城市j的航班,flights[i][j] = 0;否則,flights[i][j]= 1。還有,flights[i][i] = 0。

你總共有k周(每週有7天)旅行。你只能每天最多乘坐一次航班,而且只能在每週一早上乘坐航班。由於飛行時間太短,我們不考慮飛行時間的影響。

對於每個城市,你只能在不同的星期裡限制休假日,給定乙個命名為days的nk矩陣表示這種關係。對於days[i][j]的值,它表示你可以在j周的城市i裡休假的最長天數,你得到的是flights矩陣和days矩陣,你需要輸出你在k周期間可以獲得的最長假期。

n和k是正整數,它們在[1, 100]的範圍內。

在flights矩陣中,所有的值都是在[0, 1]範圍內的整數。

在days矩陣中,所有的值都是範圍內的整數[0, 7]。

你可以呆在乙個超過假期天數的城市,但是你應該多工作幾天,這不會算作休假日。

如果你從a市飛到b市,並在那天休假,那麼假期的扣除將計入b城市的假期天數。

我們不考慮飛行時間對計算假期的影響。

給定 flights = [[0,1,1],[1,0,1],[1,1,0]], days = [[1,3,1],[6,0,3],[3,3,3]], 返回 12.

解釋:ans = 6 + 3 + 3 = 12.

最好的策略之一是:

第一周:周一從城市0飛往城市1,休假6天,工作1天。

(雖然你從城市0開始,但從周一開始,我們也可以飛到其他城市去。)

第二週:周一從城市1飛到城市2,休假3天,工作4天。

第三週:呆在城市2,休假3天,工作4天。

給定 flights = [[0,0,0],[0,0,0],[0,0,0]], days = [[1,1,1],[7,7,7],[7,7,7]], 返回 3.

解釋:ans = 1 + 1 + 1 = 3.

因為沒有航班可以讓你飛到另乙個城市,所以你必須在城市裡呆3個星期。

每個星期,你只有一天休假的時間和六天的工作。

所以假期的最大天數是3

給定 flights = [[0,1,1],[1,0,1],[1,1,0]], days = [[7,0,0],[0,7,0],[0,0,7]], 返回 21.

解釋:ans = 7 + 7 + 7 = 21.

最好的策略之一是:

第一周:呆在城市0,玩7天。

第二週:周一從城市0飛到城市1,然後休假7天。

第三週:周一從城市1飛到城市2,然後休假7天。

class solution 

}for (int k = 1; k < k; ++k) }}

}}

int ret = *max_element(dp[k - 1].begin(), dp[k - 1].end());

return ret;

}};

谷歌面試題 最大假期天數 經典解法

lintcode想讓它最好的員工之一選擇在n個城市間旅行來收集演算法問題。但是只工作不玩耍,聰明的孩子也會變傻,你可以在某些特定的城市並且乙個星期裡去度假。你的工作是安排旅行,盡可能多的假期,但是有一些規則和限制你需要遵守。規則和限制 您只能在1個城市中旅行,由0到n 1的索引表示。一開始,你周一在...

ZJOI 2009 假期的宿舍 最大匹配

主要是main 中的處理,接下來就是二分匹配的模板題了 include include define maxn 110 using namespace std inta maxn maxn link maxn intb maxn c maxn bool vis maxn intn,m,cnt,ans...

最大流求最大匹配 ZJOI2009 假期的宿舍

有一些人,他們可能認識可能不認識,認識的人可以把自己的床給別人睡,有些人不需要床,有些人有床,請問能否讓所有需要睡覺的人都有一張床,如果可以輸出乙個奇怪的字元,如果不可以輸出另乙個奇怪的字元 毫無疑問,這是乙個二分圖最大匹配的裸題,照理說本來是應該用匈牙利的,但是因為要求聯絡最大流,所以就打了這個 ...