上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 38 下一页
摘要: Burnside定理。可以用Euler函数优化。#include #include #include #include #include #define LL __int64using namespace std;LL Power(int a,int b){ LL ret=1; LL p=(LL)a... 阅读全文
posted @ 2014-10-16 16:55 chenjunjie1994 阅读(158) 评论(0) 推荐(0) 编辑
摘要: 黑书上的经典题了。我说说解这个题的巧妙的地方吧。首先,竟然和置换联系起来了。因为其实一个交换即至少可以使其中一个元素到达指定位置了。和循环置换联合起来,使得一个循环内的数可以一步到达指定位置,很巧妙啊。这样,用循环内的最小的数和其它数交换,需要K-1次的交换即可。另外,也可以把整个数列的最小数 i ... 阅读全文
posted @ 2014-10-16 15:24 chenjunjie1994 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 好像不需要用到开方什么的。。。可以知道,一副牌即是一个循环,那么,由于GCD(L,K)=1,所以一次洗牌后,亦是一个循环。其实,K次洗牌等于是T^(2^K)了。既然是循环,必定有周期。那么,周期是多少呢?以例子为例:1->4->6->2->7->3->5。其实对于第一个数(从零始)4,总会有先后移了... 阅读全文
posted @ 2014-10-16 13:48 chenjunjie1994 阅读(446) 评论(0) 推荐(0) 编辑
摘要: 置换的开方。看看Pan的那篇集训论文。此处,可以想到,开方时,由于gcd(l,2),则必然有若是循环长度为偶数,必定是成对出现的。若是奇数,既可以是偶数也可以是奇数,因为,通过二次方后,循环长度为偶数的可以分裂成偶数的两个也可以是奇数的两个。#include #include #include #i... 阅读全文
posted @ 2014-10-16 10:21 chenjunjie1994 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 虽然知道是置换,却很久没有思路。忽然想到,由初始状态A经过变换后回到A状态,应该是不停循环可重复的。于是,猜想数字的位置也是重复循环的。拿了个例子验证了一下,某然是这样。例如第二个10,3的例子有1-》4-》3-》10-》1.于是,可以按照上题的方法求解了。#include #include #in... 阅读全文
posted @ 2014-10-15 21:27 chenjunjie1994 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 我们知道,当循环长度为L时,置换群幂次为K ,则结果是GCD(L,K)个积相乘。于是,我们只需要求出每个循环的长度,求得它们的最小公倍数即为解。#include #include #include #include #define LL __int64#define N 1000using name... 阅读全文
posted @ 2014-10-15 20:19 chenjunjie1994 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 运用斯特林公式。。。。。--!#include #include #include #include #include #define PI 3.141592653#define E 2.71828182using namespace std;int main(){ int T; double n;... 阅读全文
posted @ 2014-10-12 23:41 chenjunjie1994 阅读(108) 评论(0) 推荐(0) 编辑
摘要: 想了很久,终于想到了。。。。向后看到F,向前看到B,假如把N-1个楼分成F+B个组,则把每个组最高的楼作为看到的楼,那么,其实在确定每一组的最高楼时,左边或右边的最高楼的顺序已经确定了。由于是排列数,联想到第一类斯特灵数,即可以顺利解决。那么,分成F+B个组后,选出B个组放在右边(最高楼的右边)即可... 阅读全文
posted @ 2014-10-12 17:33 chenjunjie1994 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 有点置换群的味道。当撞开一个门后,能打开一连串的门,即是可以排成一个圈。求的是种数,于是,可以使用第一类斯特林数,求出撞了0~K次的种数。但是,注意,当第一个门为独自一个圈时,是不可行的,因为这代表第一个门要撞开,这违犯规则。所以,把第一个门独立成圈的情况去掉。即是求出S(N-1,K-1)以前的各种... 阅读全文
posted @ 2014-10-12 14:51 chenjunjie1994 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 水题#include #include #include #define LL __int64#define MOD 1000using namespace std;LL str[2001][2001];void initial(){ for(LL i=0;i=1) str[i][j]=0; e... 阅读全文
posted @ 2014-10-12 12:26 chenjunjie1994 阅读(219) 评论(0) 推荐(0) 编辑
摘要: (第二类斯特林数*N的阶乘 )的和。#include #include #include #define LL __int64#define MOD 20090126using namespace std;LL str[101][101];LL con[101];void initial(){ co... 阅读全文
posted @ 2014-10-12 12:24 chenjunjie1994 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 其实求的是BELL数,即前N个第二类斯特林数的和。一首诗有n行,每一行有一种韵律,问这首诗总共可能有多少种韵律排列。如4行,则所有的15种情况为:aaaa, aaab, aaba, aabb, aabc, abaa, abab, abac, abba, abbb, abbc, abca, a bcb... 阅读全文
posted @ 2014-10-12 11:53 chenjunjie1994 阅读(327) 评论(0) 推荐(0) 编辑
摘要: 上面的估计是题解吧。。。。呃,如果真要用到公式的话,确实没听过。。。。#include #include #include #define LL __int64LL work(LL n){ LL res=0; LL divd=2; while(divd<=n){ res+=(n/divd); d... 阅读全文
posted @ 2014-10-12 11:32 chenjunjie1994 阅读(227) 评论(0) 推荐(0) 编辑
摘要: 已知n,求n中取k(k#include #include #define LL __int64using namespace std;LL con_mul[15],Str[15][15];void initial(){ con_mul[0]=1; for(LL i=1;i=1){ Str[i]... 阅读全文
posted @ 2014-10-12 09:20 chenjunjie1994 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 求卡特兰数前N项的和模M。直接求必定是不可能的,卡特兰数太大了。想了好久,本打算把位数拆成素数相乘,然后记录下各素数的个数计算。可惜,TLE。。。。因为N太大了。除法必定是要用到逆元的,但分母与M不一定互质。M拆成素数相乘形式,记录下各个素数在数组PRIME。于是,可以把4*i-2和i+1拆成素数相... 阅读全文
posted @ 2014-10-10 23:21 chenjunjie1994 阅读(375) 评论(0) 推荐(1) 编辑
上一页 1 ··· 17 18 19 20 21 22 23 24 25 ··· 38 下一页