斯特灵数:把nn个数划分为恰好kk个非空集合的个数,记为S(n,k)S(n, k)。且有:S(n,1)=S(n,n)=1S(n, 1) = S(n, n) = 1。
有递推关系式:S(n+1,k)=S(n,k?1)+kS(n,k?1)S(n + 1, k) = S(n, k - 1) + kS(n, k - 1)
贝儿数:把nn个数划分为非空集合的所有划分数。有:Bn=∑i=0nS(n,i)Bn...
分类:
其他好文 时间:
2015-04-17 14:02:51
阅读次数:
92
这里一般的完全背包做法:转化为01背包(可以对01背包进行二进制优化),复杂度是O(n?V?logV/cost[i]2)O(n*V*log^{V/cost[i]}_2)。
这里巧妙的定义了一种方法让复杂度降到了O(n?V)O(n*V)
**转移方程思想:定义能装满dp[i][j]为容量为j时,第i种物品的剩余个数,则:
if (dp[i-1][j] >= 0),dp[i][j]=m...
分类:
其他好文 时间:
2015-04-11 16:25:23
阅读次数:
190
01背包式最简单的背包问题,书上是由深度优先搜索的记忆化搜索的递归实现到处递推的解决方法就是01背包,把所有i和j的情况都记下来,总共不过n*v种情况。
而01背包之2是简单01背包变换对象之后的做法。
题目描述如下:
有n个价值和花费分别为weight[i]和cost[i]的物品,把这些物品装进容量为V的背包中,求最大价值?
但是现在条件是:V<=109,weight[i]<100,n<1...
分类:
其他好文 时间:
2015-04-11 14:51:58
阅读次数:
129
题意:从n个数中选取任意个数的数,看是否等于k。
代码给出了十分清晰简洁的优雅递归写法。#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long int LL;
const in...
分类:
其他好文 时间:
2015-04-09 23:53:26
阅读次数:
224
背景:挑战程序设计竞赛上的题,好思维。来就想暴力枚举都还没有仔细思考有没有数学规律,n超过20就不适合用2的n次方的算法了。
思路:最短时间十分容易讨论,这里最大时间很巧妙,两只蚂蚁相撞然后各自反向走,可以想成两只蚂蚁绕过,各走各的,这样早最大时间就简单了,就是所有走到端点的时间中最大的。
代码:#include
#include
#include
#include
#include ...
分类:
其他好文 时间:
2015-04-09 19:56:14
阅读次数:
232
题意:
求h*w的矩形被1*2的小矩形覆盖的方案数。
分析:
状压dp入门,《挑战程序设计竞赛》上讲的很好,好几天才看懂。
代码:
#include
using namespace std;
__int64 ans[16][16];
int n,m;
__int64 dp[2][1<<16];
__int64 solve()
{
int i,j,used;
memset(dp,0...
分类:
其他好文 时间:
2015-02-16 19:42:21
阅读次数:
136
题目链接:http://poj.org/problem?id=2533经典问题 最长上升子序列《挑战程序设计竞赛》原题#include #include #include #include #include #include #include #include #include #include #...
分类:
其他好文 时间:
2015-02-15 19:22:22
阅读次数:
175
【题意】给出一张无向图,从1开始到n,求两条没有公共边的最短路,使得路程总和最小每条边的权值设为费用,最大流量设为1,然后就是从源点到汇点流量为2的最小费用流。因为是规定了流量,新建一个源点和一个汇点,源点到结点1连一条最大流量为2,费用为0的边,结点N到汇点连一条最大流量为2,费用为0的边,这样就...
分类:
其他好文 时间:
2014-11-29 13:13:48
阅读次数:
173
【题意】有n个程序,分别在两个内核中运行,程序i在内核A上运行代价为ai,在内核B上运行的代价为bi,现在有程序间数据交换,如果两个程序在同一核上运行,则不产生额外代价,在不同核上运行则产生Cij的额外代价,问如何划分使得代价最小。用最小的费用将对象划分为两个集合的问题,常常可以转换为最小割后顺利解...
分类:
其他好文 时间:
2014-11-29 11:51:04
阅读次数:
361
学习网络流中ing...作为初学者练习是不可少的~~~构图方法因为书上很详细了,所以就简单说一说把光束作为图的顶点,小行星当做连接顶点的边,建图,由于最小顶点覆盖等于二分图最大匹配,因此求二分图最大匹配即可。邻接矩阵,DFS寻找增广路,匈牙利算法邻接矩阵:复杂度O(n^3)如果使用邻接表:复杂度O(...
分类:
其他好文 时间:
2014-11-28 19:52:47
阅读次数:
254