随笔分类 - 数学
UVa 1363 Joseph's Problem (数论)
摘要:题意:给定 n,k,求 while(i <=n) k % i的和。 析:很明显是一个数论题,写几个样例你会发现规律,假设 p = k / i.那么k mod i = k - p*i,如果 k / (i+1) 也是p,那么就能得到 : k mod (i+1) = k - p*(i+1) = k mod
阅读全文
HDU 4349 Xiao Ming's Hope (Lucas)
摘要:题意:给定一个 n,问你在 C(n, 0) - C(n , n) 中有多少个奇数。 析:Lucas定理,C(b[i], a[i]),只要不为0,那么就是奇数,然后b[i],是固定的,也就是说a[i] 只有 b[i]+1种情况。最后乘起来就好。 代码如下:
阅读全文
HDU 3944 DP? (Lucas定理)
摘要:题意:在杨辉三角中让你从最上面到 第 n 行,第 m 列所经过的元素之和最小,只能斜向下或者直向下走。 析:很容易知道,如果 m 在n的左半部分,那么就先从 (n, m)向左上,再直着向上,如果是在右半部分,那么就是先直着向上,再斜着左上。这样对应到, 左半部分:C(n, m) + C(n-1, m
阅读全文
Gym 100548F Color (数论容斥原理+组合数)
摘要:题意:给定 m 种颜色,把 n 盆花排成一直线的花涂色。要求相邻花的颜色不相同,且使用的颜色恰好是k种。问一共有几种涂色方法。 析:首先是先从 m 种颜色中选出 k 种颜色,然后下面用的容斥原理,当时没想出来,如果是只用一种颜色,那么肯定不行,如果用两种颜色,可以有这么方法, 2 * (2-1) ^
阅读全文
Gym 100548K Last Defence (数论)
摘要:题意:给定两个数,然后从第三个开始,每个数都是前两个数的差的绝对值,问这个序列中有多少个不同的元素。 析:这个和辗转相除法差不多,假设a > b那么a-b之间就有a/b个数,然后再计算a%b-b之间的,直到最后算到0. 代码如下:
阅读全文
NEFU 628 Garden visiting (数论)
摘要:Garden visiting Garden visiting Problem:628 Time Limit:1000ms Memory Limit:65536K Problem:628 Time Limit:1000ms Memory Limit:65536K Problem:628 Time L
阅读全文
HDU 3304 Interesting Yang Yui Triangle (Lucas定理)
摘要:题意:求杨辉三角中第 n+1行不能整除 p的数目。 析:运用Lucas定理,只要统计C(ni, mi)中全都不是0的数目即可,因为是第 n+1行,所以ni每次都不变,也就是mi <= ni,那么C(ni, mi),就不是0. 所以就有ni+1种答案,最后乘起来即可。 代码如下:
阅读全文
HDU 3037 Saving Beans (数论,Lucas定理)
摘要:题意:问用不超过 m 颗种子放到 n 棵树中,有多少种方法。 析:题意可以转化为 x1 + x2 + .. + xn = m,有多少种解,然后运用组合的知识就能得到答案就是 C(n+m, m)。 然后就求这个值,直接求肯定不好求,所以我们可以运用Lucas定理,来分解这个组合数,也就是Lucas(n
阅读全文
5950 Recursive sequence (矩阵快速幂)
摘要:题意:递推公式 Fn = Fn-1 + 2 * Fn-2 + n*n,让求 Fn; 析:很明显的矩阵快速幂,因为这个很像Fibonacci数列,所以我们考虑是矩阵,然后我们进行推公式,因为这样我们是无法进行运算的。好像有的思路,最后也没想出来,还是参考的大牛的博客 http://blog.csdn.
阅读全文
HDU 5514 Frogs (数论容斥)
摘要:题意:有n只青蛙,m个石头(围成圆圈)。第i只青蛙每次只能条ai个石头,问最后所有青蛙跳过的石头的下标总和是多少? 析:首先可以知道的是第 i 只青蛙可以跳到 k * gcd(ai, m),然后我就计算所有的等差数列,但是好像如果全算,那么就可能会有重复,所以我们考虑用容斥原理。 先把 m 的所有因
阅读全文
HDU 5512 Pagodas (数论)
摘要:题意:给了初始的集合{a, b},然后取集合里的两个元素进行加或者减的操作,生成新的元素。问最后最多能生成多少个元素。问答案的奇偶性。 析:多先写几个你就会发现,答案就是 n / gcd(a, b)。 代码如下:
阅读全文
UVa 11401 Triangle Counting (计数DP)
摘要:题意:给定一个数 n,从1-n这些数中任意挑出3个数,能组成三角形的数目。 析:dp[i] 表示从1-i 个中任意挑出3个数,能组成三角形的数目。 代码如下:
阅读全文
UVa 11538 Chess Queen (排列组合计数)
摘要:题意:给定一个n*m的棋盘,那么问你放两个皇后相互攻击的方式有多少种。 析:皇后攻击,肯定是行,列和对角线,那么我们可以分别来求,行和列其实都差不多,n*A(m, 2) + m*A(n, 2), 这是行和列的,然后再算对角线,对角线是从2-min(m, n)的, 然后就能算出来。 代码如下:
阅读全文
POJ 3071 Football (概率DP)
摘要:题意:给定 2的n次方 个团队对每个队的战胜的概率,一块要打 n 场,每场都是 1 对 2, 2 对 3,每次都取赢的一方,问你最后谁是冠军的概率最大。 析:dp[i][j] 表示 第 i 场 j 胜的概率,每次只要算 i 相邻的且不是已经打过的 2 i-1次方个队,最后再选出概率最大的就好。 代码
阅读全文
CodeForces 124C Prime Permutation (数论+贪心)
摘要:题意:给定一个字符串,问你能不能通过重排,使得任意一个素数p <= 字符串长度n,并且 任意的 i <= 长度n/素数p,满足s[p] == s[p*i]。 析:很容易能够看出来,只要是某个素数的小于等于该素数的倍数都是一样的,然后如果他和其他素数也有倍数,那么这些位置也是一样的, 所以我们只要找到
阅读全文
CodeForces 55D Beautiful numbers (数位DP)
摘要:题意:给求给定区间中该数能整除每一位的数的数量。 析:dp[i][j][k] 表示前 i 位,取模2520为 j,最小倍数是 k,但是这样,数组开不下啊,那怎么办呢,其实,0-9的最小公倍数的不同各类并没有那么多, 其实就48种,所以我们可以给这48个一个编号,然后就能开出来了。 代码如下:
阅读全文
HDU 4055 Number String (计数DP)
摘要:题意:由数字1到n组成的所有排列中,问满足题目所给的n-1个字符的排列有多少个,如果第i字符是‘I’表示排列中的第i-1个数是小于第i个数的。 如果是‘D’,则反之。 析:dp[i][j] 表示前 i 个数以 j 结尾有多少个,然后如果是 I ,那么就好,就是 i-1 中的前j-1项和,如果是 D,
阅读全文
HDU 3853 LOOPS (期望DP)
摘要:题意:给定一个 n * m的矩阵,然后你从 (1,1)到 (n,m),每次你有三种可能,不动,向右,向下,每次要消耗2个魔法,并且给定每个概率, 问你走出去的期望。 析:dp[i][j] 表示从 (i,j)到终点的概率。然后一路逆推回去就好。 代码如下:
阅读全文
HDU 2914 Triangle (Fibnacci 数)
摘要:题意:给你一个长度为 n 的木棒,求至少拿掉几根使得剩余的木棒构成不了三角形。 析:为了保证不形成三角形,所以保证两边之和等于最大边是最优,这不就是Fibnacci 数么,由于 n 很小,if-else 就好。 代码如下:
阅读全文
浙公网安备 33010602011771号