摘要:
题意:一个强盗要去抢劫银行,对于每个银行来说,都有一个不被抓的概率p,和能抢劫到的钱数money,每个银行最多只可以被抢劫一次。问在不被抓的总概率P下,怎样得到最大价值的钱数。根据题目的已知条件, 该问题可以使用基本01背包模型银行数量:N每家银行所拥有的金钱数量: money[i]盗取各家银行的风... 阅读全文
摘要:
给定由n个整数(可能有负数组成的序列 a1,a2 a3,....an),要在这n个数中选取相邻的一段ai,a(i+1)....aj 使其和最大,当所有整数均为负数时,定义最大字段和为0. b[j]=max{b[j-1]+a[j],a[j]}#include using namespace std... 阅读全文
摘要:
HDU 动态规划(46道题目)倾情奉献~ 【只提供思路与状态转移方程】 收藏Robberieshttp://acm.hdu.edu.cn/showproblem.php?pid=2955 背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱 最脑残的是把总的概率... 阅读全文
摘要:
设辅助数组b,定义b[i]表示以a[i]为结尾的最长递增子数列的长度。则:转移方程:b[1]=1;b[i]=max{b[k]+1}; 1=#include#define MAX 100using namespace std;int main(){ int a[MAX],b[MAX],visit[M... 阅读全文
摘要:
有n种物品,第i种物品的体积为V[i],重量为W[i],选一些物品放到容量为c的背包里,使得背包内的物品在总体积不超过C的前提下重量尽量大。用d(i,j)表示当前处于第i层,背包的剩余重量为j,通俗点说就是把 i i+1 i+2 .....n 个物品装到容量为j的背包中的最大总重量。所以我们得到的状... 阅读全文
摘要:
假设求Xi和Yi的最长公共子序列,设c[i][j]表示它俩最长公共子序列的长度。 0 i=0或j=0c[i][j]= c[i-1][j-1]+1 i,j>0且Xi=Yi max{c[i][j-1],... 阅读全文
摘要:
输入文件的第一行为一个整数N,表示输入文件中接下来有N组数据,没组数据最多包含100行,每行有一个非常长的十进制整数组成,这个整数的长度不会超过100个字符,而且只包含数字,每组数据的最后一行为0,表示这组数据结束。对输入文件的每组数据,输出他们的和。此题不同于两大数相加,是多个大数相加的问题,在求... 阅读全文
摘要:
首先要确定这个数的阶乘需要开多大的数组,可以用Stirling公式。输入不超过10000的正整数,计算n!的具体值。#include#includeusing namespace std;const int maxn=50000;int main(){ int n,s,k,c; int ... 阅读全文
摘要:
n!与 的值十分接近,利用Stirling公式将阶乘转化成幂函数,使得阶乘的结果得以更好的估计。而且n越大,估计得就越准确用该公式计算n!结果的位数时,可以两边取对数,得:#include#includeusing namespace std;const double e=2.71828182845... 阅读全文
摘要:
鸽巢原理又称抽屉原理基本原理: n+1只鸽子飞回n个鸽笼,至少有一个鸽笼含有2只他的数学描述语言为:m个元素分成n组,那么总有一组至少含有元素个数为 [m/n]设a1,a2,a3,....am是正整数的序列,试证明至少存在整数k,l, (1=#includeusing namespace std;... 阅读全文