摘要:
Ps:很久以前学的,一直以来都是套模板,感觉忘得差不多了,所以复习一下- -欧几里得算法作用:计算两个数的最大公约数。算法:欧几里德算法又称辗转相除法,用于计算两个整数a,b的最大公约数。用gcd(a, b)表示a和b的最大公约数。gcd函数的基本性质:gcd(a,b)=gcd(b,a)=gcd(-a,b)=gcd(|a|,|b|)=gcd(a,b-a)C实现:1 typedef long long int64;2 3 int64 gcd(int64 a, int64 b)4 {5 return b == 0 ? a : gcd(b, a% b);6 }View Code 扩展欧几里得... 阅读全文
摘要:
问题1、圆周上有n个点,最多能将圆分为多少个部分?选自World Finals 2008, LA 4119的题面。解答1、解法由清华大学数院WY大神提供。设所求为f(n)。称圆周上的点为周点,圆内的点为交点。考察第k个点。添加第k个点后,新增k-1条弦,设新增a[k]个交点。观察这k-1条弦中的任意一条,设它与原先已有的弦产生b个交点(即便它通过某两弦的交点,计数无碍,因为过该交点的边中不可能有两条都过第k个点;它与相邻的弦产生0个交点,计数无碍)。这b个交点将该弦分为b+1段,每一段都使圆内部分数+1。所以该弦造成新增b+1部分,这k-1条弦(即第k个点)造成新增Σ(b+1) =a[k] + 阅读全文
摘要:
SRM 149DIV2 1000pt题意: 对于n个人,第i人有pi的钱。将他们分成不超过四个组,每组统一交费x,对每个人,若他拥有的钱超过x则交费,否则不交费。问最多能使这些人交多少钱。 1 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #includ... 阅读全文
摘要:
1、UVa 11806题意:在m*n的网格中放k个石子,每格最多放一个,且第一行,最后一行,第一列,最后一列均有石子,求放的方法总数。解法:首先发现,如果题目要求第一行,最后一行,第一列,最后一列没有石子,那题目非常简单。 那么,用容斥原理。S表示全集,A,B分别表示第一行和最后一行没有石子,C,D分别表示第一列和最后一列没有石子,则所求为“在S中但不在A,B,C,D中”的集合的元素个数。 自己写的代码挺搓的- -,看了刘汝佳用2进制数写的代码后,也模仿了一下。tag:math, 计数, 容斥原理 1 /* 2 * Author: plum rain 3 * Created Ti... 阅读全文
摘要:
今天看刘汝佳的白书《算法竞赛入门经典 训练指南》中写到,所以在网上学习了一下。简介 卡特兰数(Catalan),又称卡塔兰数,事组合数学中常出现在各种计数问题中的一个数列。以比利时数学家欧仁 查理 卡塔兰命名。其前几项为1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190....性质递推公式1:an = a0 * an-1 + a1 * an-2 + …....... + a(n-1. 阅读全文
摘要:
SRM 144DIV 1 500pttag:组合题意:彩票中奖。给定n, m,从1-n中选择m个数组成数列a1, a2, a3...am。对于数列{am}分别满足以下条件的概率: (1)数列所有元素不相同且非严格递增; (2)数列元素可以相同,可以递减; (3)数列元素不相同,可以递减; (4)数列元素可以相同,且非严格递增。解法:所有四种情况均可以用排列组合公式直接解决,要用大数。最难的是最后一种情况,我也是最后一种情况公式写错了。 并且,最后一种情况公式的推导过程也可以看一看官方题解,是一种以前从来没用过的思考方法。 1 #include 2 #include ... 阅读全文