上一页 1 ··· 3 4 5 6 7 8 9 10 11 下一页
摘要: 1 /** 2 给定一个置换,看能不能存在一个置换A^2 = B 3 思路; 循环节长度为偶数n的置换只能由循环节长度为长度2*n 的置换A*A 而变得。所以只需求出循环节,看循环节长度为偶数的个数是否为偶数个即可。。 4 训练指南 5 **/ 6 #include 7 #include 8 ... 阅读全文
posted @ 2014-05-12 19:28 夜晓楼 阅读(156) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1066大意; 问在房间中有一份宝藏,但是房间中有一些隔板,问最少需要通过多少隔板思路: 链接宝藏与爆破地点,枚举每一条直线寻找最少破坏的隔板。。 1 #include 2 #include 3 #include 4 using na... 阅读全文
posted @ 2014-05-12 19:26 夜晓楼 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 1 /** 2 大意: 求m!用2进制表示有多少位 m! = 2^n 两边同时取对数 log2(m!) = n 3 即 log2(1) + log2(2)+log2(3)+log2(4)...+log2(m) = n 4 枚举即可 5 6 拓展: 7 可以用斯特林(Stir... 阅读全文
posted @ 2014-05-12 09:20 夜晓楼 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 题意; 求接近规定 分数 的 最大分数用到 farey 数列的第二条性质 1 #include 2 #include 3 using namespace std; 4 /** 5 |a/b-c/d|最小, 同分的|(ad-bc)/bd| 最小,,即求 6 |ax-by| 最小 7 若a,b 有公约数则同分即可。。最小为0 8 若a,b无公约数,即a,b互质,即求ax-by=1或 -ax+by = 1 9 此时需要注意 若a==1 求解释x=1,y=0.。。所以当a=1时需要特殊处理10 若a!=1 时,,就需要对上面的两个式子ax-by=1或 -ax+by = 1判断,找出最接近的解,即比较. 阅读全文
posted @ 2014-03-22 16:23 夜晓楼 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 扩展欧几里得算法的证明什么是GCD?GCD是最大公约数的简称(当然理解为我们伟大的党也未尝不可)。在开头,我们先下几个定义:①a|b表示a能整除b(a是b的约数)②a mod b表示a-[a/b]b([a/b]在Pascal中相当于a div b)③gcd(a,b)表示a和b的最大公约数④a和b的线性组合表示ax+by(x,y为整数)。我们有:若d|a且d|b,则d|ax+by(这很重要!)线性组合与GCD现在我们证明一个重要的定理:gcd(a,b)是a和b的最小的正线性组合。证明:设gcd(a,b)为d,a和b的最小的正线性组合为s∵d|a且d|b,∴d|s。而a mod s=a-[a/s] 阅读全文
posted @ 2014-03-09 14:47 夜晓楼 阅读(1630) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1204大意:给出一个棋盘puzzle,,和w个模式串,,在棋盘中寻找模式串。。棋盘中任意一格有8个方向可以走。。解题思路: AC自动机 + 枚举8个方向即可get_trie(),get_ac().直接用模版。。。。query 有一点小技巧。。需要枚举8个方向,,对于一行,我们对竖直方向上的枚举可以省略,因为我们在竖直方向上枚举时,会补充上。。另外 我们无需枚举一行中的每一个点,,只需第一个即可,因为,,我们在一个方向上枚举时,,会包含到后面的。 1 #include 2 #include 3 using namespace std;... 阅读全文
posted @ 2013-08-11 20:48 夜晓楼 阅读(376) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2222第一道 AC自动机。。。。。trie树的建立 和 AC自动机的查询,,可作模版。。。解题思路:AC的应用。。。直接模版。。 1 #include 2 #include 3 using namespace std; 4 struct point { 5 struct point *final; 6 struct point *next[26]; 7 int count; 8 point(){ 9 final =NULL;10 count =0;... 阅读全文
posted @ 2013-08-11 10:16 夜晓楼 阅读(218) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1222大意:熄灯游戏,给定一个5行6列的矩阵,表示30个灯,, 给定灯的初始状态,1表示开,0表示关,然后你可以操作,改变灯的状态,但是改灯的上下左右四个方向上的灯的状态也会改变,(开的变成关的,关的变成开的),,要求输出,你执行的操作。。1表示改变0表示未变。解题思路:方法一:枚举;一共有30个灯,所以一共有2^30的改变方法。。一一枚举肯定会TLE,可以发现有这样的特点,当(i,j)上方的(i-1,j)为1时,(i,j)一定要变;当(i-1,j)为0时,(i,j)一定不能变。。可以这样考虑,只需枚举第一行的状态,就可以根据这种特点得出第 阅读全文
posted @ 2013-08-07 11:16 夜晓楼 阅读(259) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1781大意:约瑟夫环,求最后剩下的位置是??该题为每两个划掉一个数。。eg:12345 划掉的为,2,4,1,5,最后剩下的为3.。。。解法:直接模拟肯定会超,注意本题是以2为循环的。。可以尝试找规律(话说我就直接模拟的。。傻啊。。。) 1-------1; 2---------1;3------------3;4-----------1;5---------3;6-------5;7---------7;。。。。。。。由此可见是以2的指数为增长的。。所以。。。 1 #include 2 #include 3 using namespac. 阅读全文
posted @ 2013-08-06 20:48 夜晓楼 阅读(248) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=3358大意: 求一个小数的二进制的循环节和循环节开始的位置 解题思路: 1、 先对分数进行化简 2、 将一个分数转化为k进制数的方法 n/m for i = 0 to 需要的位数、 n = n * k; bit[i] = n / m; n = n mod m; 3. 如果出现循环 即 (ai * k^l ) mod m = aj; 即 k^l =1(mod m) 所以为求m的phi()。。 4、m不一定k 互质,若互质的话,... 阅读全文
posted @ 2013-08-06 16:54 夜晓楼 阅读(270) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 下一页