第十章 数学概念与方法(例题)
aozil_yang
这个作者很懒,什么都没留下…
展开
-
例题10-4 UVA 10791 Minimum Sum LCM (最小公倍数的最小和)
很简单的一道题目:用到了唯一分解定理:只要把他们的质因数展开式加起来即可!需要注意的是:1.只有一个质因子要把1算上。2.最好结果要保存long long 不然会越界!3.单独处理1即可。代码如下:#include#include#includeusing namespace std;int main(){ int n,cnt2=0原创 2016-02-03 20:55:00 · 420 阅读 · 0 评论 -
UVA 1642 Magical GCD (思路+哈希map)
大体题意:给你n 个整数(n 思路:按照刘汝佳分析做的,加入一个数后,给它的所有后缀的gcd 打一个表,gcd 相同的 保留长度大的,其余的全部删除。那么这个表中元素数量最大是log2 j 个,很小的一个数。因此随便做了,但是不能用有序的stl 如set 还是会超时。用两个Hash map 来会导就可以了。#include #include #include #原创 2017-03-02 12:38:56 · 375 阅读 · 0 评论 -
UVA 10820 Send a Table (欧拉函数打表)
题意不说了。思路:写几个样例就发现规律了:比如n =3 的时候:(1,1)(1,2)(1,3)(2,3)(2,1)(3,1)(3,2)会发现x和y 相等的只有(1,1)x y 的相等。数量是 phi[2] + phi[3] + ... + phi[n]那么答案就是 ( phi[2] + phi[3] + ... + phi[n])* 2 + 1;#in原创 2017-03-01 17:16:28 · 296 阅读 · 0 评论 -
UVA 1262 Password (水题)
大体题意:给你两个6行5列的数字矩阵,要求从每一列中选出一个字符来,使得两个矩阵中对应的列都存在,输出第k 小的密码。思路:数据量太小了。直接预处理出来每一列的合法字符,然后根据乘法原理,一步一步接近k 即可。有个坑:就是每一列可能有重复字符,要去重,这根据输出就可以晓得它的实际性。#include #include #include #include #def原创 2017-02-28 22:56:35 · 587 阅读 · 0 评论 -
UVA 12169 Disgruntled Judge (扩展欧几里得)
大体题意:给你n 个数 x1,x3,,,x2n-1让你确定出x2,x4,,,x2n来!x数列每一项满足 xi = ((x(i-1) * a ) + b ) % 10001;思路:我们枚举a,因为对10001取模,所以a肯定在0~10000以内有解!那么我们就枚举a,对于每一项a,我们根据x3和x1求出b来,然后开始枚举每一项看看这个a和b 是否合适!合适就输出终止枚举!原创 2016-10-26 23:54:41 · 464 阅读 · 0 评论 -
例题10-13 UVA - 580 Critical Mass 危险的组合(递推)
题意不说了,题意很简单!思路:看了书上的分析,感觉有增进了不少= = !注:文中出现的POW(n)都是2的n次方的意思!排列是按照最先出现连续的U的最左边位置枚举的!假定最先出现的连续的U 是从位置i 开始的,那么i,i+1,i+2一定是U ,后面连续不连续不一定了,可能连续也可能不连续!那么前i-1个位置必然不会出现连续的3个U,假定f(n)表示有n 个箱子时的答原创 2016-07-05 16:36:37 · 672 阅读 · 0 评论 -
例题10-10 UVA - 10491 Cows and Cars 奶牛与轿车 (全概率)
题意不说了.思路:完全按照书上分析来做的!记录一下吧。假设有a头牛,b个轿车,给你展示c个门。那么情况一:一开始选择了牛,概率为a/(a+b),还有a+b-c-1个门可以换,轿车还有b个, 则P1 = a/(a+b) * b/(a+b-c-1);情况二:一开始选择了车,概率为b/(a+b),还有a+b-c-1个门可以换,轿车还有b-1个,则P2 = b/(a+b) *原创 2016-07-05 15:17:57 · 547 阅读 · 0 评论 -
UVA 12034 Race 赛马名次
给你n个马,问赛马名次的可能性!这个题了解了下动态规划!思路递推:dp[i][j]表示i匹马时候,名次为j的结果!dp[ i] [j]可能来自两种情况!首先肯定是来自i - 1 上匹马, 两种情况:1.名次并列,则j名次可以放置j个位置! 是dp[i-1][j-1] * j2.名次增加了1,则j-1名共有j个位置可以放置,依旧是 dp[i-1][j] * j.原创 2016-03-09 22:55:14 · 571 阅读 · 0 评论 -
例题10-9 UVA 1636 Headshot 决斗
很简单一道题目:1.找出0的个数a,找出00个数b,b/a就是射击没有子弹的情况。2.在用a/ len 得到转子弹的情况,比较两个概率即可!代码如下:#include#includeusing namespace std;const int maxn = 100 + 10;int main(){ char a[maxn]; while(scanf(原创 2016-02-04 03:52:11 · 420 阅读 · 0 评论 -
例题10-24 UVA 1641 ASCII Area(ASCII面积)
很简单的一道题目,大体题意让你求由斜线围成的面积。思路:从头开始扫描,从左向右,自上到下,发现一个斜杠,sum+=0.5,并且计数flag++,发现一个点,如果flag是奇数,那么点就在多边形内,否则不在,注意,换列时,flag要清零。代码如下:#include#include#includeusing namespace std;const int m原创 2016-02-03 01:58:20 · 543 阅读 · 0 评论 -
例题10-19 UVA 11346 Probability
很简单的一道题目。先把研究总空间缩小到第一象限,这样表达式就可以写成xy > s ,会发现是以反函数,求出两个端点,用定积分求面积即可,需要主要的是a,b,s都是实数,当s >= a*b-eps就是0%当s 代码如下:#include#include#includeusing namespace std;const double eps = 1e-8;int原创 2016-02-02 12:17:36 · 355 阅读 · 0 评论 -
例题10-1 UVA 11582 Colossal Fibonacci Numbers!巨大的斐波那契数列
题意不说了,紫书说的很清楚!分析:F(i) = f(i) mod n,发现是有规律的,就是有周期!因此思路就很明确了:1.先找到Fi的周期,因为一个n就对应一个不同的周期,但n不大 不超过1000,因此可以先打表!2.在找到a^b是周期的第几个key ,这里可以快速幂,mod = T周期!3.最后求F[key],因为最大是100W,所以提前打表就好了,但是想练练矩阵快速幂!原创 2016-01-29 21:54:16 · 528 阅读 · 0 评论 -
UVA 1640 The Counting Problem(统计题,找规律 + dfs)
大体题意:告诉你两个数a和b 问你a到b 区间内的数中,0,1,2,3,4,5,6,7,8,9每个数字出现了几次?思路:我们先写一个暴力的程序会找到一个规律:除了0以外的9个数字:9以内有1个 = num[1]99以内有20个 = num[2]999以内的有300个 = num[3]9999以内的有4000个 = num[4]。。依次类推:我们可以根原创 2017-03-10 20:16:30 · 492 阅读 · 0 评论