摘要: Robberieshttp://acm.hdu.edu.cn/showproblem.php?pid=2955背包;第一次做的时候把概率当做背包(放大100000倍化为整数):在此范围内最多能抢多少钱最脑残的是把总的概率以为是抢N家银行的概率之和…把状态转移方程写成了f[j]=max{f[j],f[j-q[i].v]+q[i].money}(f[j]表示在概率j之下能抢的大洋);正确的方程是:f[j]=max(f[j],f[j-q[i].money]*q[i].v)其中,f[j]表示抢j块大洋的最大的逃脱概率,条件是f[j-q[i].money]可达,也就是之前抢劫过;始化为:f[0]=1,其 阅读全文
posted @ 2011-08-04 22:12 AC_Von 阅读(344) 评论(0) 推荐(1) 编辑
摘要: 活说这道题,“如果最大连续子序列不唯一,则输出序号i和j最小的那个(如输入样例的第2、3组)。”这句话!有病!! 如果测试数据是 3 0 1 2 结果应该是 3 0 2,可是OJ的数据是 3 1 2,如果不是看到Discuss里有人提醒,我一个月也找不出错误来!! 不说了,气愤!!看代码:#include <stdio.h>#define N 10010#define inf 0x7fffffffint main(){ int a[N]; int n, i, sum, f, max; //freopen("data.in", "r", std 阅读全文
posted @ 2011-08-04 10:26 AC_Von 阅读(262) 评论(1) 推荐(0) 编辑
摘要: 动态规划题,F[n] 可由2, 3, 5, 7与F[n-1]的乘积得到,取这四个数的的最小值,就是当前F[n]的值,即F[n] = min{F[n-1]*2, F[n-1]*3, F[n-1]*5, F[n-1]*7}。 前6个数的递归过程: n1 = 1; n2 = min{1*2, 1*3,1*5,1*7} = 2; n3 = min{2*2, 1*3, 1*5, 1*7} = 3; n4 = min{2*2, 2*3, 1*5, 1*7} = 4; n5 = min{3*2, 2*3, 1*5, 1*7} = 5; n6 = min{3*2, 2*3, 2*5, 1*7} = 6; 代. 阅读全文
posted @ 2011-08-04 08:14 AC_Von 阅读(1046) 评论(0) 推荐(2) 编辑