01揹包dp變形 Robberies

2021-08-28 10:46:00 字數 984 閱讀 4820

題意:乙個強盜要搶劫銀行又不想被抓到,所以要進行概率分析求他在不被抓的情況下能搶最多的錢。他給定t(樣例個數),n(要搶的銀行的個數),p(被抓的概率要小於p)mj(強盜能搶第j個銀行mj元錢),pj(強盜搶第j個銀行被抓的概率為pj)。

思路:被抓的概率不好直接求出來,但可以直接求出不被抓的概率,則有狀態轉移方程dp[j] = max(dp[j], dp[j-b[i].money]*b[i].p)表示搶到j元錢被抓的最大的概率是多少。然後逆序遍歷第乙個小於p的dp的下標就是答案。

ps:陣列的下標表示的是可以搶到的錢數,所以不能按100來開陣列。。。。。。。。(t到**)

**:

#include #include #include #include #include #include #include #include #include #define inf 0x3f3f3f3f

#define fre() freopen("in.txt","r",stdin)

using namespace std;

typedef long long ll;

const int maxn = 10000;

double dp[maxn];

struct bank

bb[maxn];

int main()

memset(dp,0,sizeof(dp));

dp[0] = 1;

for(int i = 0; i=bb[i].money; j--)

}int ans = 0;

for(int i = sum; i>=0; i--)

}cout<

}return 0;

}

揹包dp之01揹包變形

一種雙核cpu的兩個核能夠同時的處理任務,現在有n個已知資料量的任務需要交給cpu處理,假設已知cpu的每個核1秒可以處理1kb,每個核同時只能處理一項任務。n個任務可以按照任意順序放入cpu進行處理,現在需要設計乙個方案讓cpu處理完這批任務所需的時間最少,求這個最小的時間。輸入描述 輸入包括兩行...

01揹包變形

傳送門 現有n個物品,序號分別為1,2,n。對於每個i 1 i n 物品i有乙個體積wi和乙個價值vi。小明想在這n個物品中選取一些放到揹包裡帶回家。已知揹包的容積為w,這意味著所帶物品的總體積不能超過w。求出小明可以帶回家的物品總價值可能的最大值。constraints input 標準輸入格式如...

01揹包問題變形

一 問題 二 解題思路 三 c 下面是我自己理解寫的,沒有根據標準答案的,那答案在講啥?一直沒法ac,不過還是可以解決問題的。n件物品按單位重量價值降序排序,然後回溯法裝,右結點必要時剪枝,剛好湊成重量為m的若干件物品才能得到乙個解。include define max 50 using names...