题意:将1~2n个数按照顺时针排列好,用一条线将两个数字连接起来要求:线之间不能有交点,同一个点只允许被连一次。
最后问给出一个n,有多少种方式满足条件。
分析:
ans[n]表示n的中的种类数。 规定ans[0] = ans[1] = 1;
假设给出的数是n那么从1开始, 与1之间相连的数与1之间间隔的对数分别是0, 1, 。。n-1, 那么我们就可以将他们分割成两部分,对于每一部分我们...
分类:
其他好文 时间:
2014-10-03 18:44:55
阅读次数:
207
/*
将N张卡分成若干个集合,集合不为空,有多少种分法。
f[n][m]表示n张卡分成m组的种类数,那么f[n][m]=f[n-1][m-1]+f[n-1][m]*m,//第二类斯特灵数
而ans[n]=sum{f[n][l]}(1<=l<=m)。//ans为贝尔数,Bell数是将P个元素集合分到非空且不可区分例子的划分个数。
其中:f[n-1][m-1]代表第n个人自成一堆;
f[n-1][m]...
分类:
其他好文 时间:
2014-09-28 00:45:10
阅读次数:
186
题意:有m个人(拿50元)和n个人(拿100元)去买票,售票厅刚开始没有,问最后所有人都能够买到的方式的种类数。
这道题也是经典的卡特兰数类型题。
我们可以将他们看做是火车进出站,但是由于人是不同的,所以最后还要乘上m!*n!
最后的数学表达是就是(C(m+n,n)-C(m+n, m+1))*m!*n!=》 结果为 (m!*n!)*(m+1-n)/(m+1)
注:m
代码:
impor...
分类:
其他好文 时间:
2014-09-11 23:52:42
阅读次数:
317
分块,预处理出:①第i块到第j块之间的偶数值的种类数。②在前i块中,每个值出现的次数。(前缀和)(差分)每次询问时,对于不在整块中的元素,进行暴力转移。注意:减少memset的使用,千万不要写100000个memset,否则会TLE,宁愿每次询问之后O(sqrt(n))地一个个减掉那个记录每个值出现...
分类:
其他好文 时间:
2014-09-09 21:25:09
阅读次数:
386
http://acm.hdu.edu.cn/showproblem.php?pid=3886
给出一个字符,只含'/','-' ,'\' ,表示着一个数上的各位数字按相应字符上升,不变或下降,问【a,b】区间内这样的数有多少个?
数组很好设,dp[i][j][k]表示处理到第i位,它对应的字符是第j位,它前面的数字是k的种类数。
令我纠结好久的是,我起初设的dp[i][j][...
分类:
其他好文 时间:
2014-08-29 22:46:38
阅读次数:
382
题意:求最多购买的件数以及有几种方法。
一看到这题就想到了背包,因为求得是种类数,所以我们可以将件数看做价值,将价格看做重量,这就变成01背包了(dp),但是还要求有几种购买方案,那么再来一个背包(kind)。
分析:有三种情况:
1》dp[j] < dp[j-s[i]]+1
那么对于这一种情况 方案背包的状态转移方程是kind[j] = kind[j-s[i]]?kind[j-s[i]]:1;(考虑到kind[j-s[i]] ==0的时候,这时候kind[j] = 1);
证明:为什么是kind[j] ...
分类:
其他好文 时间:
2014-08-25 22:57:55
阅读次数:
255
第一次写这样的题目,反正出现了各种坑爹问题,调了老半天,除了延迟标记外,这题还要开一个cnt数组用来存储各个区间内颜色的种类数,
每次改变颜色时,更新一次。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#includ...
分类:
其他好文 时间:
2014-08-23 11:20:40
阅读次数:
179
Codeforces Round #261 (Div. 2)题意:给出数组A,定义f(l,r,x)为A[]的下标l到r之间,等于x的元素数。i和j符合f(1,i,a[i])>f(j,n,a[j]),求i和j的种类数。题解:使用树状数组统计小于某数的元素数量。我们可以先把f(1,i,a[i])和f(j...
分类:
其他好文 时间:
2014-08-16 17:04:40
阅读次数:
241
问题见SICP P26此问题的递归方法很简单,类似于背包的思想。 即金额为amount的现金换成n种硬币的种类数 满足循环不变式: count_change(amount,n)=count_change(amount,n-1)+count_change(amount-amount_of_f...
分类:
其他好文 时间:
2014-08-13 14:35:16
阅读次数:
369
题意:a~z的价值分别是1~26,给出你a~z的个数,问最多能组成价值不同的种类数。
策略:母函数。
典型的母函数题,但是这是属于给你有限个数目的题,要小心。
直接上代码:
#include
#include
int ans[55];
int c1[100], c2[100];
int main()
{
int a[27], t, i, j, k;
scanf("%d", &t);...
分类:
其他好文 时间:
2014-08-13 13:08:36
阅读次数:
193