随笔分类 -  组合数学

摘要:/*Problem Description 2月29号是威威猫的生日,由于这个日子非常特殊,4年才一次,所以生日这天许多朋友都前往威威猫家祝贺他的生日。 大家给威威猫买了一个非常大非常大的蛋糕,蛋糕的形状是一个有n条边的凸多边形,可是威威猫的审美观有一点奇怪,他只喜欢有m条边的蛋糕,所以他要伙伴们把这个蛋糕切p次,然后给他一个只有m条边的新蛋糕。这下大家急了,这不是坑爹吗,审美观崎岖作怪。 假设蛋糕可看成一个平面含n条边的凸多边形,每一刀必须沿直线切下去,p刀之后能给威威猫切出一个m条边的蛋糕吗? Input多组测试数据,每组占一行,包含3个整数n, m, p(含义如上)。[Techni... 阅读全文
posted @ 2013-06-02 16:58 萧凡客 阅读(317) 评论(0) 推荐(0) 编辑
摘要:/*Problem Description 小明自从告别了ACM/ICPC之后,就开始潜心研究数学问题了,一则可以为接下来的考研做准备,再者可以借此机会帮助一些同学,尤其是漂亮的师妹。这不,班里唯一的女生又拿一道数学题来请教小明,小明当然很高兴的就接受了。不过等他仔细读题以后,发现自己也不会做,这下小明囧了:如果回复说自己不懂,岂不是很没面子? 所以,他现在私下求你帮忙解决这道题目,题目是这样的: 给你n个数字,分别是a1,a2,a3,a4,a5……an,这些数字每过一个单位时间就会改变,假设上一个单位时间的数字为a1’,a2’,a3’……an’,那么这个单位时间的数字a[i] = a[... 阅读全文
posted @ 2013-06-02 16:16 萧凡客 阅读(425) 评论(0) 推荐(0) 编辑
摘要:Problem Description"Well, it seems the first problem is too easy. I will let you know how foolish you are later." feng5166 says."The second problem is, given an positive integer N, we define an equation like this:N=a[1]+a[2]+a[3]+...+a[m];a[i]>0,1<=m<=N;My question is how man 阅读全文
posted @ 2013-05-26 22:01 萧凡客 阅读(193) 评论(0) 推荐(0) 编辑
摘要:矢量叉积矢量P = ( x1, y1 ),Q = ( x2,y2 ),则矢量叉积定义为由(0,0)、p1、p2和p1+p2所组成的平行四边形的带符号的面积,即:P× Q = x1*y2 - x2*y1积的一个非常重要性质是可以通过它的符号判断两矢量相互之间的顺逆时针关系: 若 P × Q > 0 , 则P在Q的顺时针方向。 若 P × Q < 0 , 则P在Q的逆时针方向。 若 P × Q = 0 , 则P与Q共线,但可能同向也可能反向。折线段的拐向判断: 折线段的拐向判断方法可以直接由矢量叉积的性质推出。对于有公共端点的线段p0p1和p1p 阅读全文
posted @ 2013-04-21 10:47 萧凡客 阅读(1886) 评论(0) 推荐(1) 编辑
摘要:【数学之美】抽屉原理桌上有十个苹果,要把这十个苹果放到九个抽屉里,无论怎样放,我们会发现至少会有一个抽屉里面放两个苹果。这一现象就是我们所说的“抽屉原理”。 抽屉原理的一般含义为:“如果每个抽屉代表一个集合,每一个苹果就可以代表一个元素,假如有n+1或多于n+1个元素放到n个集合中去,其中必定至少有一个集合里有两个元素。” 抽屉原理有时也被称为鸽巢原理(“如果有五个鸽子笼,养鸽人养了6只鸽子,那么当鸽子飞回笼中后,至少有一个笼子中装有2只鸽子”)。它是组合数学中一个重要的原理。例1:从1、2、3、4、…、19、20这20个自然数中,至少任选几个数,就可以保证其中一定包括两个数,它们的差是12。 阅读全文
posted @ 2013-04-11 22:47 萧凡客 阅读(283) 评论(0) 推荐(0) 编辑
摘要:1 double p(int m,int n) 2 { 3 double a,b; 4 if(n==1) return (double)m; 5 else b=p(m,n/2); 6 a=b*b; 7 if(n%2==1) 8 a=a*m; 9 return a;10 } 阅读全文
posted @ 2013-04-05 09:36 萧凡客 阅读(152) 评论(0) 推荐(0) 编辑
摘要:1 #include<stdio.h> 2 #include<string.h> 3 int a[10],m,n; 4 5 //取数算法 6 7 8 /*1、从m中选出n个全排列,从大到小,不允许重复 9 10 3 2 输入 11 12 32 13 31 14 21 15 16 */ 17 void fun1(int m,int n) 18 { 19 int i,j; 20 for(i=m;i>0;i--) 21 { 22 a[n]=i; 23 if(n>1) 24 fun1(i... 阅读全文
posted @ 2012-11-27 15:05 萧凡客 阅读(344) 评论(0) 推荐(0) 编辑
摘要:1664:放苹果时间限制:1000ms内存限制:65536kB描述把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。输入第一行是测试数据的数目t(0 <= t <= 20)。以下每行均包含二个整数M和N,以空格分开。1<=M,N<=10。输出对输入的每组数据M和N,用一行输出相应的K。样例输入17 3样例输出8分析:(1):当盘子数为1的时候,只有一种放法就是把所有苹果放到一个盘子里。(2):当苹果数为1的时候,也只有一种放法,注意题目中说明,盘子之间并无顺序,所以不管这个苹果放在哪个盘 阅读全文
posted @ 2012-10-05 11:02 萧凡客 阅读(221) 评论(0) 推荐(0) 编辑