随笔分类 - 数学
HDU 6125 Free from square (状压DP+背包)
摘要:题意:问你从 1 - n 至多选 m 个数使得他们的乘积不能整除完全平方数。 析:首先不能整除完全平方数,那么选的数肯定不能是完全平方数,然后选择的数也不能相同的质因子。 对于1-500有的质因子至多出现一次,有的可能出现多次,比如23,对于一个数最多出现一次,因为出现两次就超出500了。 而对于比
阅读全文
UVa 10766 Organising the Organisation (生成树计数)
摘要:题意:给定一个公司的人数,然后还有一个boss,然后再给定一些人,他们不能成为直属上下级关系,问你有多少种安排方式(树)。 析:就是一个生成树计数,由于有些人不能成为上下级关系,也就是说他们之间没有边,没说的就是有边,用Matrix-Tree定理,很容易就能得到答案,注意题目给定的可能有重复的。 对
阅读全文
HDU 6069 Counting Divisors (素数+筛法)
摘要:题意:给定 l,r,k,让你求,其中 l <= r <= 1e12, r-l <= 1e6, k <= 1e7。 析:首先这个题肯定不能暴力,但是给定的区间较小,可以考虑筛选,n = p1^c1*p2^c2*....*pn^cn,那么 d(n) = (c1+1) * (c2+1) * ...*(cn
阅读全文
HDU 6127 Hard challenge (极角扫描)
摘要:题意:给定 n 个点,和权值,他们两两相连,每条边的权值就是他们两个点权值的乘积,任意两点之间的直线不经过原点,让你从原点划一条直线,使得经过的直线的权值和最大。 析:直接进行极角扫描,从水平,然后旋转180度,就可以计算出一个最大值,因为题目说了任意直线不是经过原点的,所以就简单了很多,每次碰到的
阅读全文
LightOJ 1268 Unlucky Strings (KMP+矩阵快速幂)
摘要:题意:给出一个字符集和一个字符串和正整数n,问由给定字符集组成的所有长度为n的串中不以给定字符串为连续子串的有多少个? 析:n 实在是太大了,如果小的话,就可以用动态规划做了,所以只能用矩阵快速幂来做了,dp[i][j] 表示匹配完 i 到匹配 j 个有多少种方案,利用矩阵的性质,就可以快速求出长度
阅读全文
HDU 6097 Mindis (计算几何)
摘要:题意:给一个圆C和圆心O,P、Q是圆上或圆内到圆心距离相等的两个点,在圆上取一点D,求|PD| + |QD|的最小值 析:首先这个题是可以用三分过的,不过也太,。。。。 官方题解: 很不幸不总是中垂线上的点取到最小值,考虑点在圆上的极端情况。 做P点关于圆的反演点P',OPD与ODP'相似,相似比是
阅读全文
LightOJ 1284 Lights inside 3D Grid (数学期望)
摘要:题意:在一个三维的空间,每个点都有一盏灯,开始全是关的.现在每次随机选两个点,把两个点之间的全部点,开关都按一遍,问k次过后开着的灯的期望数量; 析:很容易知道,如果一盏灯被按了奇数次,那么它肯定是开的,否则就是关的,所以我们只要计算每盏灯开着的概率就好了。对于每盏灯,假设开一次的概率是p, 这个很
阅读全文
LightOJ 1248 Dice (III) (水题,期望DP)
摘要:题意:给出一个n面的色子,问看到每个面的投掷次数期望是多少。 析:这个题很水啊,就是他解释样例解释的太。。。我鄙视他,,,,, dp[i] 表示 已经看到 i 面的期望是多少,然后两种选择一种是看到新的一面,另一种是看到旧的一面,然后就很出答案了。 代码如下:
阅读全文
LightOJ 1079 Just another Robbery (01背包)
摘要:题意:给定一个人抢劫每个银行的被抓的概率和该银行的钱数,问你在他在不被抓的情况下,能抢劫的最多数量。 析:01背包,用钱数作背包容量,dp[j] = max(dp[j], dp[j-a[i] * (1.0 - pp[i])),dp[i] 表示不被抓的最大概率,在能抢劫到 i 个钱。 代码如下:
阅读全文
LightOJ 1038 Race to 1 Again (概率DP,记忆化搜索)
摘要:题意:给定一个数 n,然后每次除以他的一个因数,如果除到1则结束,问期望是多少。 析:概率DP,可以用记忆公搜索来做,dp[i] = 1/m*sum(dp[j] + 1) + 1/m * (dp[i] + 1) ==> dp[i] = (sum(dp[j]) + m) / (m-1)。其中m是因数个
阅读全文
LightOJ 1027 A Dangerous Maze (数学期望)
摘要:题意:你面前有 n 个门,每次你可以选择任意一个进去,如果xi是正数,你将在xi后出去,如果xi是负数,那么xi后你将回来并且丢失所有记忆,问你出去的期望。 析:两种情况,第一种是直接出去,期望就是 1/n * xi 第二种是回来了,再出去 1/n*(-xi+E), 然后就可以得到 E = sum
阅读全文
HDU 2829 Lawrence (斜率优化DP或四边形不等式优化DP)
摘要:题意:给定 n 个数,要你将其分成m + 1组,要求每组数必须是连续的而且要求得到的价值最小。一组数的价值定义为该组内任意两个数乘积之和,如果某组中仅有一个数,那么该组数的价值为0。 析:DP状态方程很容易想出来,dp[i][j] 表示前 j 个数分成 i 组。但是复杂度是三次方的,肯定会超时,就要
阅读全文
UVa 1451 Average (斜率优化)
摘要:题意:给定一个01序列,让你找出一个长度大于等于F的连续子序列使得平均值最大。 析:直接枚举肯定是O(n^3),超时,然后用前缀和来优化,O(n^2),还是太大,这个要求的平均值是 i > j (sum[i] - sum[j-1]) / (i-(j-1)),这正好就是一个斜率的表示形式,可以考虑用优
阅读全文
HDU 3723 Delta Wave (高精度+calelan数)
摘要:题意:给定一个图,问你只能向上向下,或者平着走,有多少种方法可以走到最后一个格。 析:首先先考虑,如果没有平的情况就是calelan数了,现在有平的情况,那么就枚举呗,因为数很大,所以要用高精度。 答案应该是sum(C(n, 2*i)*C(n, i)/(i+1)) = a1 + a2 + a3 +
阅读全文
HDU 4111 Alice and Bob (博弈+记忆化搜索)
摘要:题意:给定 n 堆石头,然后有两种操作,一种是把从任意一堆拿走一个,另一种是把一个石子放到另一堆上。 析:整体看,这个题真是不好做,dp[a][b] 表示有 a 堆1个石子,b个操作,操作是指把其他的不是1的堆全部合并起来并全部拿完所以要的操作, 要注意的是 ,一共有这几种情况。 1.a 为0,说明
阅读全文
UVa 11149 Power of Matrix (矩阵快速幂,倍增法或构造矩阵)
摘要:题意:求A + A^2 + A^3 + ... + A^m。 析:主要是两种方式,第一种是倍增法,把A + A^2 + A^3 + ... + A^m,拆成两部分,一部分是(E + A^(m/2))(A + A^2 + A^3 + ... + A^(m/2)),然后依次计算下去,就可以分解,logn
阅读全文
LightOJ 1282 Leading and Trailing (数学)
摘要:题意:求 n^k 的前三位和后三位。 析:后三位,很简单就是快速幂,然后取模1000,注意要补0不全的话,对于前三位,先取10的对数,然后整数部分就是10000....,不用要,只要小数部分就好,然后取前三位。 代码如下:
阅读全文
HDU 5373 The shortest problem (数学)
摘要:题意:给定两个数的n和m,有一种操作,把 n 的各位数字加起来放到 n后面形成一个新数n,问重复 m 次所得的数能否整除 11。 析:这个题首先要知道一个规律奇数位的和减去偶数位的和能被11整除的数字一定能被11整除。当然不知道这个题也可以过,直接模拟。 还有几个其他的规律; 被3整除:每位的和能被
阅读全文
HDU 1796 How many integers can you find (容斥)
摘要:题意:给定一个数 n,和一个集合 m,问你小于的 n的所有正数能整除 m的任意一个的数目。 析:简单容斥,就是 1 个数的倍数 - 2个数的最小公倍数 + 3个数的最小公倍数 + ...(-1)^(n+1) * n个数的最小公倍数。 代码如下:
阅读全文
HDU 5015 233 Matrix (矩阵快速幂)
摘要:题意: 有一种矩阵,它的第一行是这样一些数:a 0,0 = 0, a 0,1 = 233,a 0,2 = 2333,a 0,3 = 23333...) 除此之外,在这个矩阵里, 我们有 a i,j = a i-1,j +a i,j-1( i,j ≠ 0).现在给你 a 1,0,a 2,0,...,a
阅读全文