随笔分类 -  算法入门经典第二版第十章 数学概念和方法

摘要:类似一个背包问题的计数问题。(虽然我也不记得这叫什么背包了一开始我想的状态定义是:f[n = 和为n][k 个素数]。递推式呼之欲出: f[n][k] = sigma f[n-pi][k-1]。但是题目还有一个要求是不同素数之和,为了保证素数不同,那就先枚举素数吧,f[i][n][k] =sigma... 阅读全文
posted @ 2015-11-14 16:45 陈瑞宇 阅读(331) 评论(0) 推荐(0) 编辑
摘要:砖块上的数字最终都可以看作是最后一行的线性组合,独立变元最多9个。这类题的一般做法,线性组合都可以列出方程然后高斯消元。对于这道题,只要确定最后一行剩下的4个变量就好了,对于最后一行的j位置,它对上面位置某个数字的和贡献次数等于它到那个位置路径的方案数,可以发现就是杨辉三角。倒数第二行的数已经足够确... 阅读全文
posted @ 2015-11-14 16:18 陈瑞宇 阅读(285) 评论(0) 推荐(0) 编辑
摘要:递推,f[i = i个名次][j = 共有j个人] = 方案数。对于新加入的第j个人,如果并列之前的某个名次,那么i不变,有i个可供并列的名次选择,这部分是f[i][j-1]*i,如果增加了一个名次,那么之前有i-1个名次,i-1个名次之间有i个空,这部分是f[i-1][j-1]*i。/******... 阅读全文
posted @ 2015-11-14 16:01 陈瑞宇 阅读(225) 评论(0) 推荐(0) 编辑
摘要:分析:对于区间[i,j],枚举j。固定j以后,剩下的要比较M_gcd(k,j) = gcd(ak,...,aj)*(j-k+1)的大小, i≤k≤j。此时M_gcd(k,j)可以看成一个二元组(g, k)。根据gcd的性质gcd(a1,a2,...,an) = gcd(a1,gcd(a2,..,an... 阅读全文
posted @ 2015-11-14 15:50 陈瑞宇 阅读(570) 评论(0) 推荐(0) 编辑
摘要:X表示剩下的糖数量,如果最后打开的是p对应的盒子。划分:Xi表示剩下i个糖,最后一次选的概率为p,前面的服从二项分布。根据全概率公式和期望的线性性,求和就好了。精度处理要小心,n很大,组合数会很大,p的部分很小,要取对数,而且中间计算精度也要用long double才够。组合数的对数预处理一下或者递... 阅读全文
posted @ 2015-11-13 22:02 陈瑞宇 阅读(410) 评论(0) 推荐(0) 编辑
摘要:题意:给出n和k,1≤n,k≤1e9,计算切入点是k/i 和 k/(i+1)差距不大。令pi = k/i, ri = k%i。如果pi+1 == pi,那么ri+1 == k - pi(i+1) == ri - pi,对于pi+z == pi,ri+z == ri - z*pi,这是等差数列可以O(... 阅读全文
posted @ 2015-11-13 22:02 陈瑞宇 阅读(323) 评论(0) 推荐(0) 编辑
摘要:用扩展欧几里德Extended_Euclid解线性模方程,思路在注释里面了。注意数据范围不要爆int了。/********************************************************** --------------Tyrannosaurus------... 阅读全文
posted @ 2015-11-13 20:53 陈瑞宇 阅读(249) 评论(0) 推荐(0) 编辑
摘要:紫上给得比较奇怪,其实没有必要用唯一分解定理。我觉得这道题用唯一分解只是为了表示大数。但是分解得到的幂,累乘的时候如果顺序很奇怪也可能溢出。其实直接边乘边除就好了。因为答案保证不会溢出,设定一个精度范围,如果中间结果超过了精度范围就保存起来,最后sort一遍从两端同时乘就不会溢出了。/*******... 阅读全文
posted @ 2015-11-11 23:56 陈瑞宇 阅读(242) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示