飢餓的牛(dp一維最大覆蓋)

2021-09-19 08:17:24 字數 1291 閱讀 8081

時間限制: 1 sec  記憶體限制: 128 mb

提交: 12  解決: 12

[提交][

狀態][

討論版][命題人:外部匯入][

edit] [testdata] [

同步資料]

牛在飼料槽前排好了隊。飼料槽依次用1到n(1<=n<=2000)編號。每天晚上,一頭幸運的牛根據約翰的規則,吃其中一些槽裡的飼料。

約翰提供b個區間的清單。乙個區間是一對整數start-end,1<=start<=end<=n,表示一些連續的飼料槽,比如1-3,7-8,3-4等等。牛可以任意選擇區間,但是牛選擇的區間不能有重疊。

當然,牛希望自己能夠吃得越多越好。給出一些區間,幫助這只牛找一些區間,使它能吃到最多的東西。

在上面的例子中,1-3和3-4是重疊的;聰明的牛選擇,這樣可以吃到5個槽裡的東西。

第一行,整數b(1<=b<=1000)

第2到b+1行,每行兩個整數,表示乙個區間,較小的端點在前面。

僅乙個整數,表示最多能吃到多少個槽裡的食物。

3

1 37 8

3 4

5
設f[i]表示以第i個槽作為當前所選的所有區間的最後乙個的最右邊那個槽;或者之前有一段空白的最大能吃到的東西數量;

區間l[i],r[i]貢獻的東西量為r[i]-l[i]+1;

f[i] = max(f[l[j]-1]+r[j]-l[j]+1,f[i]);其中r[j] = i;

#include #include 

#include

#include

#include

using

namespace

std;

const

int maxn = 1100

;int

n;int l[maxn],r[maxn],f[2001

];//

設f[i]表示以第i個槽作為當前所選的所有區間的最後乙個的最右邊那個槽

intmain()

}cout

<2000

];

return0;

}

[ 提交][

狀態][

edit] [testdata]

posted on

2019-04-19 09:29

蔡軍帥_acm 閱讀(

...)

編輯收藏

飢餓的牛(dp一維最大覆蓋)

時間限制 1 sec 記憶體限制 128 mb 提交 12 解決 12 提交 狀態 討論版 命題人 外部匯入 edit testdata 同步資料 牛在飼料槽前排好了隊。飼料槽依次用1到n 1 n 2000 編號。每天晚上,一頭幸運的牛根據約翰的規則,吃其中一些槽裡的飼料。約翰提供b個區間的清單。乙...

牛客 獲取n維陣列的最大深度 棧

題目描述 輸入引數為字串型的n維陣列,陣列的每一項值為陣列 或 int型數字。請實現乙個函式,可以獲取列表巢狀列表的最大深度為多少。輸入描述 輸入引數為字串型的 n維陣列,列表的每一項值為陣列 或 int型數字。陣列內的陣列,每一項值,也可以是陣列 或 int型數字。輸出描述 int型數字,表示陣列...

一維陣列的最大子段和

public static int maxsubarray int a,int n return max 解釋說明 假設下標 m,n 這一段是最大值段,即b sum,sum b 如果往後加,加的是負數,則b一直小於sum,則表示 m,n 這一段一直為最大值段,最大值sum不變 如果加到後面某一值 下...