ZCMU2165黃金礦工

2021-08-21 23:44:28 字數 717 閱讀 1669

【初步分析】:這題是一道加了約束條件的01揹包問題,約束條件是同一條直線上的**必須要按順序挖。

【twice分析】: 約束條件就是假如有c1、c2、c3三個同一直線上的**,假設c1先給出**,下面再對**給出解釋。

#include#define mem(a,b) memset(a,b,sizeof a)

using namespace std;

typedef long long ll;

struct bone

;bone res[300];

int n,m,x,y;

int memo[300][40000+100];

int cmp(bone n1,bone n2)

}else

for(int j=m;j>=0;j--)

}printf("%d\n",memo[n][m]);

}return 0;

}

用乙個mk[i]記錄分組序號,假設1、2、3、4、5、6、7、8、9,假設5、6、7是同一直線,那麼我們就記成1、2、3、4、5、5、5、6、7.

下面的狀態轉移方程我們[mk[i]-1]就和[i-1]相等,等於就是把5、5和6、5和6和7綁在一起,這幾個物品一起做乙個取捨。這樣就變成了01揹包了。

leetcode 黃金礦工

你要開發一座金礦,地質勘測學家已經探明了這座金礦中的資源分布,並用大小為 m n 的網格 grid 進行了標註。每個單元格中的整數就表示這一單元格中的 數量 如果該單元格是空的,那麼就是 0。為了使收益最大化,礦工需要按以下規則來開採 每當礦工進入乙個單元,就會收集該單元格中的所有 礦工每次可以從當...

zcmu 黃金礦工 (分組揹包)

30 的資料,0 t 4000 100 的資料,n 200,0 t 40000 對於同一條直線上的金子,必須把前面的拿走才能拿後面的。舉個例子,有 1,2,3,三塊金子,有拿1,拿 1 2,拿1 2 3三種拿法,同時他們之間是互斥的,三種拿法中只能取一種拿法。這樣就變成了分組揹包問題。變成分組揹包問...

黃金礦工 回溯演算法

你要開發一座金礦,地質勘測學家已經探明了這座金礦中的資源分布,並用大小為 m n 的網格 grid 進行了標註。每個單元格中的整數就表示這一單元格中的 數量 如果該單元格是空的,那麼就是 0。為了使收益最大化,礦工需要按以下規則來開採 示例 2 輸入 grid 1,0,7 2,0,6 3,4,5 0...