![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
紫书第十章数学方法
数学计算
carut
这个作者很懒,什么都没留下…
展开
-
H(n) UVA - 11526 数论
问题分析使用n/(i+1)-n/i之间的数的结果都是相同的进行优化,还有枚举方式的优化参考:https://blog.csdn.net/qq_38687678/article/details/83030621#include <cstdio>#include <iostream>#include <algorithm>#include <cs...原创 2020-02-26 15:11:35 · 137 阅读 · 0 评论 -
Burger UVA - 557
问题分析每次选择的概率都是p=0.5,二项分布,按照二项分布的公式进行计算先算最后两个孩子吃到不同的汉堡的概率,前2n-2个孩子吃了n-1个鸡肉,n-1个肉的,概率是$$在这里插入代码片...原创 2020-02-26 13:57:42 · 132 阅读 · 0 评论 -
Edge Case UVA - 1646
问题分析f[n]代表由n条边组成一条直线,其中的匹配(没有公共点的边集)个数,d[n]表示n条边组成一个圈,其中的匹配个数,所以d[n]=f[n−1]+f[n−3]d[n]=f[n-1]+f[n-3]d[n]=f[n−1]+f[n−3],不选最后一条边就是f[n−1]f[n-1]f[n−1],选了就是f[n−3]f[n-3]f[n−3],其中f[n]=f[n−1]+f[n−2]f[n]=f[n...原创 2020-02-25 22:51:39 · 145 阅读 · 0 评论 -
Count UVA - 1645 线性动态规划
问题分析每个深度中所有节点的子节点个数相同,就是说每个父节点的所有子树都是一样的首先一个点作为根节点,剩下n-1个点,根节点的子树中的节点有可以有k(1<=k<=n-1)个,只要保证(n-1)%k==0,然后转移方程就能够写出来了dp[n]=∑kdp[k],(n−1)%k=0dp[n]=\sum_kdp[k],(n-1)\%k=0dp[n]=∑kdp[k],(n−1)%k=0 ...原创 2020-02-25 19:04:39 · 140 阅读 · 0 评论 -
Divisors UVA - 294
问题分析这题主要是求解一个数n的正约数个数问题首先对n进行唯一因数分解,然后将因数的个数都加一,求他们的积,就是正约数个数#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <cmath>#include &...原创 2020-02-25 18:24:58 · 212 阅读 · 0 评论 -
Perfect P-th Powers UVA - 10622 唯一因数分解
问题分析将n唯一因数分解,然后求各个质因数的gcd,要注意复数的gcd中不能有2这个因子#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <cmath>#include <vector>usin...原创 2020-02-25 13:21:05 · 141 阅读 · 0 评论 -
Almost Prime Numbers UVA - 10539
问题分析比较笨的方法,对素数打表后,再对每一个素数的指数进行打表,然后二分查找#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <cmath>#include <vector>using nam...原创 2020-02-24 22:02:47 · 100 阅读 · 0 评论 -
Sum of Consecutive Prime Numbers UVA - 1210 前缀和 线性筛法
问题分析#include <cstdio>#include <iostream>#include <algorithm>#include <cstring>#include <cmath>#include <vector>using namespace std;const int maxn=10005,Inf...原创 2020-02-24 20:29:24 · 89 阅读 · 0 评论 -
线性筛法
埃氏筛有重复筛取的问题,所以时间复杂度是O(nlglgn),可以使用线性筛加快速度,每个合数只标记一次参考:https://blog.csdn.net/sodacoco/article/details/81519269https://blog.csdn.net/qq_41653433/article/details/88976544https://blog.csdn.net/qq_4051...原创 2020-02-16 15:26:00 · 135 阅读 · 0 评论 -
计数和概率基础 杨辉三角 阶乘 组合数的计算
加法原理有n种办法,每个办法有m_i种方案,那就一种一种地数出来,相加乘法原理分步骤,有n步,每个步骤有m_i种方法完成,就是乘法进行累计容斥原理简单例子就是 ∣A⋃B∣=∣A∣+∣B∣−∣A⋂B∣|A\bigcup B|=|A|+|B|-|A\bigcap B|∣A⋃B∣=∣A∣+∣B∣−∣A⋂B∣可以画韦恩图来直观表示有重复元素的全排列有k个元素,其中第i格元素有nin_ini...原创 2020-02-16 12:32:12 · 993 阅读 · 0 评论 -
Sum of Different Primes UVA - 1213
问题分析类似0-1背包 ,dp问题,打表,然后查询#include <cstdio>#include <iostream>#include <cmath>#include <cstring>#include <vector>using namespace std;const int maxn=1121,maxk=15;...原创 2020-02-15 21:13:35 · 70 阅读 · 0 评论 -
Prime Gap UVA - 1644
问题分析水题,不过因为数据原因,直接从n的位置往前,往后搜索,更加快#include <cstdio>#include <iostream>#include <cmath>using namespace std;const int maxn=1299709+10000;int n,vis[maxn],pre[maxn],post[maxn];...原创 2020-02-15 20:39:28 · 89 阅读 · 0 评论 -
Angle and Squares UVA - 1643几何
问题分析几何题目参考:https://blog.csdn.net/qq_40715044/article/details/83183175当放入的正方形对角线是一条直线,并且对角线和x轴成45度时,面积最大,所以应该将所有的正方形对角线相连,放入角中使用叉乘求三角形面积#include <cstdio>#include <iostream>#include ...原创 2020-02-15 20:14:07 · 166 阅读 · 0 评论 -
Bee Breeding UVA - 808 建坐标系
问题分析找规律,或者建坐标系这道题主要是建坐标系,给每个中心点定下坐标参考:https://blog.csdn.net/xiao_k666/article/details/82024321#include <cstdio>#include <cstring>#include <iostream>#include <cmath>#in...原创 2020-02-15 17:01:51 · 123 阅读 · 0 评论 -
Add bricks in the wall UVA - 11040
问题代码#include <cstdio>#include <cstring>#include <iostream>#include <cmath>#include <vector>#include <utility>#include <list>#include <algorithm>...原创 2020-02-15 15:32:45 · 138 阅读 · 0 评论 -
Magical GCD UVA - 1642
问题分析类似于单调序列,从1到n遍历结束点,然后寻找最大的起始点,随着起始点的增大,gcd增加,长度减小,当一段的gcd相等时,只保留序号最小的那个元素忘了要用ll,找了好久bug,太菜了#include <cstdio>#include <cstring>#include <iostream>#include <cmath>#inc...原创 2020-02-15 14:05:37 · 146 阅读 · 0 评论 -
Highways UVA - 1393 容斥原理
问题分析参考:https://blog.csdn.net/FSAHFGSADHSAKNDAS/article/details/82942861https://www.cnblogs.com/wafish/p/10465193.html只考虑‘/’形状的线条,然后乘2点[i,j]互素,那么和(0,0)之间的连线不经过任何点,所以用dp[i,j]表示在矩形[i,j]的互素点的个数,也就是(0...原创 2020-02-14 21:43:30 · 118 阅读 · 0 评论 -
Trees in a Wood. UVA - 10214
问题分析设第一象限内的能看到的树的坐标是(x,y),那么gcd(x,y)=1,所以只要统计所有互素的坐标就可以了#include <cstdio>#include <cstring>#include <iostream>#include <cmath>#include <vector>#include <utilit...原创 2020-02-14 18:42:20 · 85 阅读 · 0 评论 -
Help Tomisu UVA - 11440
问题分析首先要求在[2,N!][2,N!][2,N!]内和M!互素的数的个数由于最大公约数的性质,gcd(k,M!)=gcd(M!,k%M!)gcd(k,M!)=gcd(M!,k\%M!)gcd(k,M!)=gcd(M!,k%M!),对于k>M!,k和M!互素等价于(k%M!)和M!互素,由于N>=M,所以N!是M!的整数倍数,那么整个区间内和M!互素的数的个数就是[1,M!]内...原创 2020-02-14 17:42:01 · 89 阅读 · 0 评论 -
Joseph's Problem UVA - 1363
问题输入正整数n,k(1≤n,k≤109)(1\le n,k\le10^9)(1≤n,k≤109),求∑i=1n(k%i)\sum_{i=1}^n (k\%i)∑i=1n(k%i)分析k mod i=k−i∗pk\space mod\space i=k-i*pk mod i=k−i∗pk mod (i+1)=k−(i+1)∗(p...原创 2020-02-14 15:59:13 · 51 阅读 · 0 评论 -
ASCII Area UVA - 1641
问题分析主要是如何确定格子在图形内部还是外部#include <cstdio>#include <cstring>#include <iostream>#include <cmath>#include <vector>#include <utility>using namespace std;char s[...原创 2020-02-14 12:53:26 · 101 阅读 · 0 评论 -
How Many Pieces of Land ? UVA - 1021 大整数类型
问题分析这道题就是道数学题,使用平面图中的欧拉公式,V-E+F=2然后枚举一个点上的连出的所有的对角边,,对角边一边是i个点,另一边是n-2-i个点,这条边上有{i∗(n−2−i)}\{i*(n-2-i)\}{i∗(n−2−i)}个交点,被分为了${i*(n-2-i)+1}段,一共有n个点,得到了公式V=n+n/4∑i=1n−3{i∗(n−2−i)}V=n+n/4\sum_{i=1}^{n...原创 2020-02-13 22:38:38 · 122 阅读 · 0 评论 -
The Counting Problem UVA - 1640 数位dp
问题分析统计1-a,1-b的中的数字个数,然后相减数位dp//数位dp#include <cstdio>#include <cstring>#include <iostream>#include <cmath>#include <vector>#include <utility>using namespa...原创 2020-02-12 22:07:26 · 102 阅读 · 0 评论 -
Polygon UVA - 11971
问题分析参考:https://blog.csdn.net/xiao_k666/article/details/82019952这道题紫书上写的很明白了,主要是思维的问题首先将小木条首尾相接连成一个圆,相接的点成为一个点,然后在圆上随机选择k个点,一共k+1个点,分成k+1个小木条k+1个小木条能为成一个多边形的条件是最长的小木条小于总长的1/2所以对于任何一个点,剩余的k个点如果都和它...原创 2020-02-12 00:26:19 · 103 阅读 · 0 评论 -
So you want to be a 2n-aire? UVA - 10900 数学期望 全期望公式
问题分析参考:https://blog.csdn.net/bluecat56/article/details/14040575https://www.cnblogs.com/staginner/archive/2011/12/13/2286691.html结合紫书,说下我的理解设答对每一题的概率是p,p是[t,1]上的均匀分布,如果p是一个固定值,那么这题就很好办了,大于0.5就继续,小...原创 2020-02-11 21:53:24 · 213 阅读 · 0 评论 -
Probability UVA - 11346
问题分析实际上是计算面积#include <cstdio>#include <cstring>#include <iostream>#include <cmath>#include <vector>#include <utility>using namespace std;typedef long doub...原创 2020-02-11 20:02:35 · 60 阅读 · 0 评论 -
Coupons UVA - 10288
问题分析已有k个图案,p=k/n,q=1−pp=k/n,q=1-pp=k/n,q=1−p,现在要拿到一个新的,需要t次实验的概率是 pt−1∗qp^{t-1}*qpt−1∗q,符合几何分布,几何分布的期望是1/q=1/(1−p)=n/(n−k)1/q=1/(1-p)=n/(n-k)1/q=1/(1−p)=n/(n−k),也就是说,已有k个团,平均拿n/(n−k)n/(n-k)n/(n−k)次就...原创 2020-02-11 17:45:04 · 93 阅读 · 0 评论 -
Candy UVA - 1639
问题分析设被取完的是第一个盒子,最后打开的是第一个盒子,同时第二个盒子发现有i颗,所以一共拿了n+n-i颗糖,概率是(C(2n−i,n)pn(1−p)n−i)∗p(C(2n-i,n)p^{n}(1-p)^{n-i})*p(C(2n−i,n)pn(1−p)n−i)∗p,最后一个p代表最后一次打开的是第一个盒子,发现为空因为n最大时2∗1052*10^52∗105,那么(C(2n−i,n)(C(...原创 2020-02-11 16:15:35 · 76 阅读 · 0 评论 -
Crossing Rivers UVA - 12230
问题分析通过每条河的时间符合[L/v,3L/v]上的均匀分布,所以时间期望是2L/v#include <cstring>#include <cstdio>#include <vector>#include <iostream>#include <cmath>#include <vector>#include ...原创 2020-02-11 00:25:09 · 96 阅读 · 0 评论 -
Pole Arrangement UVA - 1638
问题分析如何安排杆子?从大到小安排,先安排n-2,最后再插入1f(i,j,k)表示从安排i根高度不同的杆子,左边看是j,右边看是k种的方案数,那么f(i-1,j,k)表示i-1根高度不同的杆子的方案数,可以看作i根杆子中先完安排i->2根,最后插入高度是1的杆子。高度是1的杆子插入点有i个,最左端,最右端,中间,可以得到:f(i,j,k)=f(i-1,j-1,k)+f(i-1,j,k...原创 2020-02-11 00:07:07 · 137 阅读 · 0 评论 -
Race UVA - 12034
问题分析设i个人排列的名次可能性有f(i)种,现在一共是n个人,第一位是i(1<=i<=n)人并列,所以剩下的n-i重新排列,可能数f(n)=∑i=1nC(n,i)f(n−i),f(0)=1f(n)=\sum_{i=1}^nC(n,i)f(n-i),f(0)=1f(n)=∑i=1nC(n,i)f(n−i),f(0)=1#include <cstring>#incl...原创 2020-02-10 21:55:18 · 133 阅读 · 0 评论 -
Critical Mass UVA - 580
问题分析//dp#include <cstring>#include <cstdio>#include <vector>#include <iostream>#include <cmath>#include <vector>#include <utility>using namespace st...原创 2020-02-10 21:05:00 · 124 阅读 · 0 评论 -
Double Patience UVA - 1637 dp+概率
问题分析带有记忆化搜索的状态转移,dp[n]是从现在state->空 累计成功的概率#include <cstring>#include <cstdio>#include <vector>#include <iostream>#include <cmath>#include <vector>#inclu...原创 2020-02-10 00:53:19 · 105 阅读 · 0 评论 -
Probability|Given UVA - 11181
问题分析#include #include #include #include #include #include using namespace std;typedef long long ll;const int maxn=20+5;int N,r,vis[maxn];double p[maxn],ans[maxn],tot;//d:深度 cnt:买的人数 pr...原创 2020-02-09 23:51:16 · 60 阅读 · 0 评论 -
Cows and Cars UVA - 10491
问题分析一开始选了牛的概率a/(b+a),然后打开了c扇门,改成车子的概率是b/(a+b-c-1),所以总的是a/(b+a)b/(a+b-c-1)同理,一开始选择了车,然后开了c扇门,换了后还是车,乘起来是b/(b+a)(b-1)/(a+b-c-1)#include #include #include #include #include #include using names...原创 2020-02-09 23:18:40 · 81 阅读 · 0 评论 -
Headshot UVA - 1636
问题两个人玩俄罗斯转盘,已知子弹的排列,第一枪是空的,想要第二枪也是空的,应该怎么做?两种选择,SHOOT(顺序的下一颗弹舱)或者ROTATE(随机的一个弹舱),都一样的话输出EQUAL分析#include <cstring>#include <cstdio>#include <vector>#include <iostream>#in...原创 2020-02-09 21:49:39 · 724 阅读 · 0 评论 -
Password UVA - 1262
问题分析使用乘法原理,先算出每一步有多少种可能,然后从后往前依次乘算出每一步往后剩余的数量, 使用递推的写法寻找第k个#include <cstring>#include <cstdio>#include <vector>#include <iostream>#include <cmath>#include <vec...原创 2020-02-09 21:03:51 · 156 阅读 · 0 评论 -
Send a Table UVA - 10820
问题分析题目的本质是:输入n,有多少个二元组(x,y)满足1≤x,y≤n1\le x,y \le n1≤x,y≤n,且x和y互素,不难发现除了(1,1)之外,其他二元组(x,y)中的x,y都不等,设满足x<y的二元组有f(n)个,那么总的有2f(n)+1个使用欧拉函数,可以得到f(n)=∑i=2nϕ(i)f(n)=\sum_{i=2}^n\phi(i)f(n)=∑i=2nϕ(i)#...原创 2020-02-09 17:24:44 · 100 阅读 · 0 评论 -
数论中的计数问题 欧拉phi函数
约数的个数给出正整数n的唯一分解式n=p1a1p2a2...pkakn=p_1^{a_1}p_2^{a_2}...p_k^{a_k}n=p1a1p2a2...pkak,求n的正约数的个数n的正约数中只能是素数因子的排列组合,那么根据乘法原理,一共有∏i=1k(ai+1)=(a1+1)(a2+1)(a3+1)..(ak+1)\prod_{i=1}^k(a_i+1)=(a_1+1)(...原创 2020-02-09 16:56:22 · 480 阅读 · 0 评论 -
https://vjudge.net/problem/UVA-1635 唯一分解定理 二项式递推公式
问题分析求出Cnk,0=<k<=nC_n^k,0=<k<=nCnk,0=<k<=n的所有,判断那些可以被m整除,然后输出使用Cnk=n−k+1kCnk−1C_n^k=\frac{n-k+1}{k}C_n^{k-1}Cnk=kn−k+1Cnk−1递推然后使用(a+b)%m=((a%m)+(b%m))%m(a+b)\%m=((a\%m)+(b\%m)...原创 2020-02-09 15:29:37 · 138 阅读 · 0 评论