摘要: http://poj.org/problem?id=2663dp[i][j]表示前i-1行全部都填满的时候j对应的状态(如下)/*0 -- 0001 -- 0012 -- 0103 -- 0114 -- 1005 -- 1016 -- 1107 -- 111*/然后因为情况数很少,所以就一一枚举出来了状态转移方程: dp[i][1] = dp[i-1][6]; dp[i][2] = dp[i-1][5]; dp[i][4] = dp[i-1][3]; dp[i][3] = dp[i-1][7] + dp[i-1][4]; dp[i][5]... 阅读全文
posted @ 2013-04-08 11:58 aiiYuu 阅读(298) 评论(0) 推荐(0) 编辑
摘要: http://codeforces.com/contest/294/problem/C先考虑连续子集内的情况,如果有两边的情况,ans *=1 ;不然,设子集大小为n,ans*=2^(n-1)。在自己间的组合问题,设每个子集大小为Ni(1<=i<=m),ans = ans * C(N1+...+Nm,N1) * C(N2+...+Nm,N2) * ... * C(N(m-1)+Nm,N(m-1)) * C(Nm,Nm)。注意n == m的时候ans=1,因为空集也是一种情况。#include <cstdio>#include <cstring>#includ 阅读全文
posted @ 2013-04-08 02:06 aiiYuu 阅读(318) 评论(0) 推荐(0) 编辑
摘要: http://codeforces.com/contest/294/problem/B0-1背包(数组开小贡献了4个wa)原理解释:这是一个0-1背包模型如果想对背包问题有更深入的理解可以看这里:http://cuitianyi.com/Pack/或上百度查“背包问题九讲”。现在按我的方法来解释一下(最基本的开二维数组的)0-1背包:0-1背包问题原型:现在我有一个容量为V的空背包,而现在我在某个地下城堡里发现了n颗珍贵的宝石,每颗宝石i都有他的体积cost[i]和价值value[i]。于是我要找到最好的一种方式在背包容量有限的情况下装进一些宝石使得他们的总价值最高。设数组dp[i][j]表示 阅读全文
posted @ 2013-04-08 01:50 aiiYuu 阅读(362) 评论(2) 推荐(0) 编辑