上一页 1 ··· 5 6 7 8 9 10 11 12 13 14 下一页
2013年5月24日

Uva1378

摘要: 题目位置:2006年北京赛区的题目 http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4124 题意:给定n个石堆,每个石堆的石子个数不超过1000,A与B进行一向游戏,每次一个人选取3堆(i,j,k, i <j <=k),然后取走i堆的一个石子,给j,k各加入一个石子,(j,k)相同的话就两个,最后不能取的会输。问先取者是否有必胜策略,有的话输出第一步选取的3堆,否则输出-1 -1 -1。思路:sg函数的变形,关键在于 阅读全文
posted @ 2013-05-24 20:36 yzcstc 阅读(160) 评论(0) 推荐(0) 编辑
2013年5月12日

poj2888

摘要: 题意:给定N(10^9)种珠子及颜色总数M,并给出一些限制条件,如 颜色i与j不能相邻,求总共有多少种方案数,结果Mod 9973思路:假设如果原题没有颜色限制的话,那就是一题polya的模板题,再加上phi(欧拉函数)的优化即可(雷同poj2154) 但是因为有了所谓的限制,那就不能直接套,我么该怎么办呢? 这我们很容易想到先前讲的那个以burnside的思想,polya的置换数的方法求,那怎么做? 我们把每个循环节数计算出来,那么在当前下,处于同一个环上的必须颜色相同,那么同一个环就可以看成一个点,然后对这些点进行染色,满足相邻的限制即可,这样的方案 数就是当前... 阅读全文
posted @ 2013-05-12 23:46 yzcstc 阅读(207) 评论(0) 推荐(0) 编辑
2013年5月5日

离散数学--通路数的矩阵计算法

摘要: 所谓矩阵计算法,实际上就是把一个图用邻接矩阵表示, 我们记为A,那么 A^M上对应(i,j)的值就是i通过M条边到达j的方案数, 理解:当n = 1是显然成立 当 n >= 2时,假设当 n= k时结论成立 那么当 n = k+1是, A^k+1 = A ^ k * A 有矩阵乘法可知,A(i,j)k+1 = sigma[ A(i,t)1 * A(t,j)k] 实际上就是i经过t到达j方案数, 由乘法原理知,A^k+1表示的就是进过K+1条边的方案数。。 阅读全文
posted @ 2013-05-05 00:53 yzcstc 阅读(2088) 评论(0) 推荐(0) 编辑

poj2154

摘要: 题目意思:给定N种颜色的珠子,每种颜色个数不限,现做成长度为N的相连,问有多少种方案(只考虑旋转)。答案要mod P思路:因为只有旋转,所以基本思路就跟poj1286差不多,而且还要简单些, 难的话就是因为N太大了,直接算肯定TLE的。。怎么办? 我们设 a= gcd(N, i) , L= N /a, T = i / a; 那么 gcd(L, T)= 1 所以对于某一个T,只要T与L互质,那么 T*a与 N最大公约数必然为a 那么就转化成找与T互质的数的个数了,这就得用到欧拉函数了。。 最后结果为 sigma(Euler(L) * N ^ (l-1) )% pcode: 1 ... 阅读全文
posted @ 2013-05-05 00:37 yzcstc 阅读(175) 评论(0) 推荐(0) 编辑

poj2409&&poj1286

摘要: 题目意思:都是给定m个颜色,然后去个长度为N的项链染色,无其他限制。 然后反转,顺时针旋转算是一种方案啊思路:比较基础的polya题目,算是模板题吧。。 1)旋转 将项链旋转i格,循环个数为gcd(N,i) 2)反转: A.n为奇数时,共有 n个循环节数为(n+1)/2的循环群 B、n为偶数,可以根据一条边及一个点对称,有n/2 个循环节数为(n+2)/2的循环群 还可以根据两个点对称,有n/2个循环节数为n/2的循环群code: 1 #include <iostream> 2 #include <cstring> 3 #include ... 阅读全文
posted @ 2013-05-05 00:25 yzcstc 阅读(194) 评论(0) 推荐(0) 编辑

polya定理

摘要: polya定理的内容好多啊,虽然公式很简单,但是前面关于群论与置换群的内容就要理解一会儿了。。 详细的话就看下组合数学,也可看下这个课件http://wenku.baidu.com/view/3dc7027602768e9951e738ca.html 下面就说一下自己的见解: 1)关于群与置换群: 群:就是经过二元运算后还满足封闭性、结合律、单位元存在、逆元存在性质的集合就是群。。 这里的二元运算很广泛,当然也包括+-*/什么的。。。 举个例子:a,b属于R集,那么,那么a*b当然也属于R了。。那么R对这个运算当然是一个群了 置换群:实际上就是排列的变化,如... 阅读全文
posted @ 2013-05-05 00:12 yzcstc 阅读(366) 评论(0) 推荐(0) 编辑
2013年5月2日

poj2155

摘要: 题目大意:给定一个n*n的矩阵,每个位置为0或1,初始全为0, 然后给定m个操作,每个操作修改或者询问 修改的话就是修改 x1,y1-->x2,y2的小矩阵的值,0改为1, 1改为0 询问的话就是询问 x,y位置是0或者1.思路:很明显这题只涉及到奇偶操作, 对于一个点x,y,我们用0,0-->x,y的矩阵的和的奇偶性代表其奇偶性 这样,每次操作我们只要保证x1,y1-->x2,y2内的点改变奇偶性,其他点不改变奇偶性就可以了 所以我们只要改变矩阵四个角的奇偶性就行了。(画个图模拟下就很明白了) 这样其他就是求和更改的问题了,正... 阅读全文
posted @ 2013-05-02 00:17 yzcstc 阅读(192) 评论(0) 推荐(0) 编辑

poj2182

摘要: 题目意思:一个1-n的排列,给出每个数前面比他小的数的个数,求该序列思路:很明显从低往前确定数,比如序列为 1 2 1 0那么 最后一个一定是 1,因为前面没比他小的,倒数第二个为3,因为除去1,他是第二大的。。。。以此类推那么就变成模拟了。。所以我们可以用平衡树,或者线段树做,但是代码有点长。。所以自然想到用树状数组了。。具体如下:刚开始给每个位置赋值为1,找到这个数,那么就删掉。当前第k大实际上就是前面和为k的那个数。。。。输出并删除 这样就要用到二分找第k大的。。 但一个问题是删完后会出现不只一个和为k的数,,解决办法只要取第一个就行了(想想就知道了) 1 /* 2 S... 阅读全文
posted @ 2013-05-02 00:07 yzcstc 阅读(343) 评论(0) 推荐(0) 编辑
2013年5月1日

树状数组

摘要: 所谓的树状数组,其实就是跟线段数差不多的东西,只不过两者表示方法不一样罢了线段数每个节点表示(l,r)这一段的数据,表示范围较广,树状数组也差不多,只不过其a[i]表示范围为(i-2^k+1, i)的数据,k为i2进制下末尾的0的个数,表示范围较少。。线段数一般来说一段插入,一段查询,树状数组一般就是点插入,一段查询,,,百度文库有很详细的讲解http://wenku.baidu.com/view/3ffb717f5acfa1c7aa00ccb0.html一维树状数组code核心代码:int lowbit(int t){ return t & (-t); } //计算t末尾的0的个数, 阅读全文
posted @ 2013-05-01 23:56 yzcstc 阅读(209) 评论(0) 推荐(0) 编辑
2013年4月30日

高次同余方程求解

摘要: 所谓高次同余不等式,其实就是形如 a^x = b (mod c)的方程,求解 x 一般来说如果 a,b,c很小的直接枚举就行了 但是,当 a,b,c很大的时候,就必须用更优的算法。。 这里,参考AekdyCoin大神的博客。如果你英文好的话也可以直接看wiki 这里谈谈自己的理解,如有错误,欢迎指出(假设你已经看了该博客): 1) 对于拓展的baby-step gaint-step为什么可以用消因子: 根据同余性质 ac = bc (mod m),且 c != 0,那么 a = b (mod (m / (c, m))) 所以,消因子只不过用了此定理, 把... 阅读全文
posted @ 2013-04-30 11:32 yzcstc 阅读(1079) 评论(2) 推荐(1) 编辑
上一页 1 ··· 5 6 7 8 9 10 11 12 13 14 下一页