Lintcode-背包问题IX

题目

You have a total of 10 * n thousand yuan, hoping to apply for a university abroad. The application is required to pay a certain fee. Give the cost of each university application and the probability of getting the University's offer, and the number of university is m. If the economy allows, you can apply for multiple universities. Find the highest probability of receiving at least one offer.
你总共有10 * n 元,希望申请国外大学。 该申请需要支付一定的费用。 给出每个大学申请的费用和获得大学录取通知书的可能性,大学数量为m。 如果经济允许,你可以申请多所大学。 找到接收至少一个offer的最高概率。

样例
n = 10
prices = [4,4,5]
probability = [0.1,0.2,0.3]
Return:0.440
分析

这道题的关键在于题干中给出的至少两个字。在概率论中经常会碰到这样的题,就是求一个事物至少发生一次的概率。我们经常的做法是求这个事件的对立事件:求一次都没有发生过的概率P,那么原事件就变为了:1-P。
对于我们这个问题,就变为了求没有收到一所大学的offer概率。这道题目转化为背包问题就是:有n个大学,每一个大学的费用和不给offer的概率已知,求没有收到一个大学的offer的最小概率。(没有收到offer概率最小就是说至少收到一所大学offer概率最大)
这时候,我们的问题就变为了0-1背包问题,每一个dp[i]表示的是前i个学校,都没有收到offer的最小概率。
状态转移方程是:
dp[j] = min(dp[j],dp[j-prices[i]]*probability[I]);
根据这个方程,代码如下:

class Solution {
public:
    /**
     * @param n: Your money
     * @param prices: Cost of each university application
     * @param probability: Probability of getting the University's offer
     * @return: the  highest probability
     */
    double backpackIX(int n, vector<int> &prices, vector<double> &probability) {
        // write your code here
        int len = prices.size();
        for(int i =0;i<len;++i)
        {
            probability[i]=1- probability[i];//没有收到offer的概率
        }
        vector<double> dp(n+1,1);
        for (int i = 0; i < len; ++i)
        {//0-1背包问题
            for(int j = prices[i];j>=prices[i];j--)
            {
                dp[j]=min(dp[j],dp[j-prices[i]] *probability[i]);
            }
        }
        return 1-dp[n];
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,449评论 0 10
  • Javascript中定义module的方式有两种:CommonJS规范、AMD规范。现将这两个词更全面的定义列一...
    NoteCode阅读 629评论 1 1
  • 转一个罗胖讲的故事: 前两天,我去参观浙江乌镇木心美术馆一个叫大英图书馆的特展,晚上吃饭的时候遇到一个人,这个人叫...
    妮子的世界阅读 438评论 0 0
  • 不知从何时起,芥蒂城有了人尽皆知的黏糊先生,没有人知道他的来自何方,什么时候来到芥蒂城,活了多么久,毕竟这是人家的...
    赖床的萤火虫阅读 403评论 0 0
  • 下着小雨的天气,是我最爱的。喜欢在雨中漫步的感觉,喜欢在雨中回忆落寞的感觉。 ...
    氢天阅读 454评论 0 0