hiho 1270 建造基地 dp 完全揹包 模擬

2021-07-10 08:13:23 字數 1268 閱讀 5594

簡要題意:建造基地,有代價和貢獻,基地公升級貢獻要除

t 求建造的最小代價。

題目很長,變數非常多,搞得人很不舒服,但是想了想就能發現就是個揹包變形。

首先可以去判斷是否可以建造出來,就是看能否對

n級基地產生貢獻,乙個小剪枝。

然後就是去做

n 輪完全揹包,記錄答案,每輪更新貢獻值。

做完全揹包的時候需要有些小變化,上界要變動,把超出的轉移到k。

**也不短,如果題意沒這麼複雜就更好了。

#include 

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define fi first

#define se second

using

namespace

std;

typedef

long

long ll;

typedef pair pii;

// head

const

int m = 105;

const

int mx = 1e4+5;

const ll inf = 0x3f3f3f3f3f3f3f3f;

ll a[m];

ll b[m];

// 判斷是否能夠建造完

// 對於n級建築有乙個材料可以產生貢獻就能建造完

bool ck(int n, int m, int k, int t)

if (temp) return

true;

}return

false;

}ll dp[mx];

// 做完全揹包,注意上界應該進行變化

// 超過k的轉移到k

void completepack(int m, int k)

}}ll solve(int n, int m, int k, int t)

}return ans;

}int main()

for (int i = 0; i < m; i++)

if (!ck(n, m, k, t)) else

}return

0;}

12 7 比賽題解

這個題的意思就是對於給定的數x,找到兩個數a,b滿足以下條件 可以看出a,b是不唯一的,所以這道題是spj,那我們只要找到最好找的就好了。a b 最大的時候,就是a b x對吧,正好這時候也滿足題目中的其它要求。如果x x 都不滿足大於 x 這個條件的話,肯定就無解了,所以我們只需要判斷這個條件就好...

127 單詞接龍

思路和126差不多,區別在於只用bfs,每次訪問一層,用乙個map來儲存訪問過的結點以及與起點的距離,避免重複訪問。最後輸出map中的終點項即可 import queue class solution def ladderlength self,beginword,endword,wordlist ...

127 單詞接龍

給定兩個單詞 beginword 和 endword 和乙個字典,找到從 beginword 到 endword 的最短轉換序列的長度。轉換需遵循如下規則 每次轉換只能改變乙個字母。轉換過程中的中間單詞必須是字典中的單詞。說明 示例 1 輸入 beginword hit endword cog wo...