摘要: #include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>#include<queue>#include<string>using namespace std;#define LL long longbool vis[1005][1005];int go[3][2]= {{1,1},{-1,1},{0,1}};int n,L[1005],R[1005];struct point{ int x,y,st 阅读全文
posted @ 2013-04-28 22:28 小仪在努力~ 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的顺序,因此是可逆的。以下称第x个全排列是都是指由小到大的顺序。康托展开求的是比该全排列小的数有多少个。例如,3 5 7 4 1 2 9 6 8 展开为 98884。因为X=2*8!+3*7!+4*6!+2*5!+0*4!+0*3!+2*2!+0*1!+0*0!=98884.解释:排列的第一位是3,比3小的数有两个,以这样的数开始的排列有8!个,因此第一项为2*8!排列的第二位是5,比5小的数有1、2、3、4,由于3已经出现,因此共有3个比5小的数,这样的排列有7!个,因此 阅读全文
posted @ 2013-04-28 18:33 小仪在努力~ 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 在小媛师姐的“继续”施压之下~我终于花了几十分钟把公式推导出来了,这感觉不是一般爽有一堆桃子不知数目,猴子第一天吃掉一半,又多吃了一个,第二天照此方法,吃掉剩下桃子的一半又多一个,天天如此,到第m天早上,猴子发现只剩一只桃子了,问这堆桃子原来有多少个? (m<29)逆推法:第M天吃完桃子后就剩下1个桃子了,猴子吃了3个:Sum_n等于第n天总的桃子数,eat_n等于第n天吃了的桃子数,res_n等于第n天剩下的桃子数(Sum_n+2)/2=eat_n;Sum_(n-1)=res_n=(Sum_n-2)/2((Sum_n-2)/2+2)/2=eat_(n-1)(Sum_n+2)/4=eat 阅读全文
posted @ 2013-04-28 12:33 小仪在努力~ 阅读(138) 评论(0) 推荐(0) 编辑