
动归
哎呀呀呀呀呀呀
这个作者很懒,什么都没留下…
展开
-
hdu2955(好)背包转化
题目大意:有一个强盗要去几个银行偷盗,他既想多偷点钱,又想尽量不被抓到。已知各个银行的金钱数和被抓的概率,以及强盗能容忍的最大被抓概率。求他最多能偷到多少钱?思路:背包问题,原先想的是把概率当做背包,在这个范围内最多能抢多少钱。但是问题出在概率这里,一是因为概率是浮点数,用作背包必须扩大10^n倍来用,而浮点数精度不高输入0.04存储有可能变成0.39。二是最大被抓概率不是简单的累加。1-...原创 2018-08-09 12:23:54 · 277 阅读 · 0 评论 -
背包问题
详见博客https://blog.youkuaiyun.com/yoer77/article/details/70943462原创 2018-08-09 16:46:03 · 115 阅读 · 0 评论 -
最长上升子序列模板
采用lower_bound#include<stdio.h>#include<algorithm>#include<cstring>using namespace std;int main(){ int n,num[100100],lis[100100],len; while(scanf("%d",&n)!=EOF) ...原创 2018-08-09 20:41:41 · 215 阅读 · 0 评论 -
最长公共字串(模板)
#include<iostream>#include<string.h>using namespace std;int c[10000][10000];char str1[10000];char str2[10000];void func(int m,int n){ if((m<0)||(n<0)) return ; ...转载 2018-08-10 13:34:31 · 256 阅读 · 0 评论 -
混合背包(模板)只保留了函数部分(每个函数对应了每一种背包)侧面反应了多重背包可以换为01和完全背包而且更快
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n,m,num[110],v[110],ans;int val[100010];void package01(int weigh){ for(int i=m;i>=weigh;--i)...原创 2018-08-10 15:00:42 · 117 阅读 · 0 评论 -
有依赖的背包详解以hdu3449为例
二维数组(好理解,一组物品等于上一组的前提上最优解再取最优解,然后在更新最优解),这里dp[i][j]是指前i件物品在花j元时能得到的最大价值其中先把主件分离即价值 比主件还小的部分封闭起来。 for(j=0;j<bc;j++) dp[i][j]=-1;然后将可以装物品的部分赋予上一次的最优解(每一次都要做一次更新,继承上一次的最优解)...原创 2018-08-11 15:09:41 · 551 阅读 · 1 评论 -
递推与迭代的转换(动态规划)
递推(顺序推直到找到最底层的出口退出)将递推换成迭代(逆序推,这样每次上一步的值都已经计算好了,不用担心找不到值的情况,只要能保证上一步的值已经计算出来并保存好即可)...原创 2018-08-08 12:20:40 · 437 阅读 · 0 评论