摘要: 2013长春赛区网络赛的1009题比赛的时候这道题英勇的挂掉了,原因是写错了一个系数,有时候粗心比脑残更可怕本题是关于Bell数,关于Bell数的详情请见维基:http://en.wikipedia.org/wiki/Bell_number其中有一句话是这么说的:And they satisfy "Touchard's congruence": Ifpis any prime bumberthen但95041567不是素数, 分解之后发现95041567 = 31 × 37 × 41 × 43 × 47按照上述递推式,利用矩阵 阅读全文
posted @ 2013-09-28 20:23 Chierush 阅读(800) 评论(0) 推荐(0) 编辑
摘要: 如果python中socket 绑定的地址正在使用,往往会出现错误,在linux下: 则会显示“ socket.error: [Errno 98] Address already in use”在windows下: 则会显示 “socket.error: [Errno 10048] 通常每个套接字地址(协议/网络地址/端口)只允许使用一次”这是因为socket默认不支持地址复用,如果要复用需要显示设定,即在绑定前调用setsockop函数t让套接字允许地址重用:socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)self.recS 阅读全文
posted @ 2013-09-27 18:37 Chierush 阅读(5919) 评论(0) 推荐(0) 编辑
摘要: 先说KM算法求二分图的最佳匹配思想,再详讲KM的实现。【KM算法求二分图的最佳匹配思想】对于具有二部划分( V1, V2 )的加权完全二分图,其中 V1= { x1, x2, x3, ... , xn }, V2= { y1, y2, y3, ... , yn },边具有权值 Wi,j 。该带权二分图中一个总权值最大的完美匹配,称之为最佳匹配。记 L(x) 表示结点 x 的标记量,如果对于二部图中的任何边,都有 L(x)+ L(y)>= Wx,y,我们称 L 为二部图的可行顶标。设 G(V,E) 为二部图, G'(V,E') 为二部图的子图。如果对于 G' 中的任 阅读全文
posted @ 2013-09-19 14:33 Chierush 阅读(3729) 评论(0) 推荐(1) 编辑
摘要: lca问题是最近公共祖先问题,一般是针对树结构的。现在有两种方法来解决这样的问题1. On-line algorithm用比较长的时间做预处理。然后对每次询问进行回答。思路:对于一棵树中的两个节点,假设是u和v。我们要找到他们的最近的一个祖先,那么我们可以这样找,首先判断他们是不是一辈儿的人,也就是说他们的深度是不是一样的,如果一个较深(u),一个较浅(v)。我们可以不断的找较深的节点的祖先,直到u和v的深度一致。如果此时u和v重合了,那么u(v)就是他们的最近公共最先,如果不重合,这时,就可以同时找u和v的祖先,直到找到为止(最坏的情况是根节点)。这个思路比较好理解,处理也很方便,在求lca 阅读全文
posted @ 2013-09-18 20:52 Chierush 阅读(409) 评论(0) 推荐(0) 编辑
摘要: 闲来没事看了一下C++11,比起C++0x多了很多新功能,像auto变量,智能指针等,g++4.7以上版本也提供了对C++11的支持,但是,如何在你的编辑器上执行C++11代码呢?刚开始以为用法和以前的版本一样,于是写了个C++11的小代码:完事后一编译发现不对,于是又手工调用g++编译了一下:g++ -o test2 test2.cpp发现还是不对。百度了一下才发现原来编译C++11不同于C++0x,要加一个编译选项-std=c++11 :g++ -std=c++11 -o test2 test2.cpp编译顺利通过!!!可是,如何将这个编译选项应用到IDE上呢?我常用的编辑器是Codebl 阅读全文
posted @ 2013-09-12 21:34 Chierush 阅读(8362) 评论(2) 推荐(4) 编辑
摘要: Python的不换行输出好蛋疼,查了半天书没查到。。。python中print默认是换行的。想让它不换行,网上说可以在print后面加上逗号。如:print 'aaa',这个方法行的通,但是中间多了个空格不过如果别的程序要调用这个程序,需要print的打印结果的话恐怕会有些不方便。所以要找个新的方法来往标准输出(屏幕上)打印东西。上网查了查,方法是用sys.stdout.write。import syssys.stdout.write("abc")sys.stdout.write("def") import sysT=input()lis 阅读全文
posted @ 2013-08-09 13:41 Chierush 阅读(10537) 评论(3) 推荐(0) 编辑
摘要: 首先是对阶梯博弈的阐述...博弈在一列阶梯上进行...每个阶梯上放着自然数个点..两个人进行阶梯博弈...每一步则是将一个集体上的若干个点( >=1 )移到前面去..最后没有点可以移动的人输..如这就是一个阶梯博弈的初始状态 2 1 3 2 4 ... 只能把后面的点往前面放...如何来分析这个问题呢...其实阶梯博弈经过转换可以变为Nim..把所有奇数阶梯看成N堆石子..做nim..把石子从奇数堆移动到偶数堆可以理解为拿走石子..就相当于几个奇数堆的石子在做Nim..( 如所给样例..2^3^4=5 不为零所以先手必败)为什么可以这样来转化?假设我们是先手...所给的阶梯石子状态的奇数 阅读全文
posted @ 2013-08-06 11:47 Chierush 阅读(801) 评论(0) 推荐(0) 编辑
摘要: 典型的Polya定理,还算比较简单,比赛的时候知道是Polya定理但是根本没留出时间去搞,有点小遗憾。思路:根据Burnside引理,等价类个数等于所有的置换群中的不动点的个数的平均值,根据Polya定理,不动点的个数等于Km(f),m(f)为置换f的循环节数,因此一次枚举魔方的24中置换,人肉数循环节数即可,注意细节,别数错了。1、静止不动,(顶点8个循环,边12个循环,面54个循环)2、通过两个对立的顶点,分别旋转120,240,有4组顶点,(点4个循环,边4个循环,面18个循环)x2(120和240度两种)x4(4组对角顶点)3、通过两个对立面的中心,分别旋转90,180,270度。有3 阅读全文
posted @ 2013-08-03 18:20 Chierush 阅读(1178) 评论(0) 推荐(0) 编辑
摘要: 此题略坑。。。思路:把N个点分成m若干个联通子图,然后用m-1个桥把这m个联通子图连接起来即可。若每个联通子图内部都是完全图也符合题意,但答案却是Wrong Answer,只有把每个联通子图内部当成环来输出才通过,这是本题的一个坑,一个Bug!!!另外联通子图中点的个数不能等于2(如果不明白请读者认真思考5遍)第三个要注意的地方就是输出时每个联通子图只能有一个点与外界连接,不能有两个!!!(如果不明白请读者认真思考10遍)关键在于确定每个联通子图中点的个数,若第i个联通子图中的点个数为a[i],则Σa[i]=N,且Σ(a[i]*(n-a[i]))=2K即Σa[i]2=N2- 2K ,Σa[i] 阅读全文
posted @ 2013-08-02 15:36 Chierush 阅读(689) 评论(0) 推荐(0) 编辑
摘要: 魔方有6个面,有24中不同的旋转方式:一般有两种方法:(一):以1面为顶面,向右旋转0,90,180,270度 以2面为顶面,向右旋转0,90,180,270度 。。。 以6面为顶面,向右旋转0,90,180,270度 这种旋转方式可以很方便的枚举魔方的各种放置状态,可以用来判断两个放置方式不同的魔方是否为同一魔方。(二): 1、静止不动,那么就是12个循环,每个循环节长度为1 2、通过两个对立的顶点,分别旋转120,240,有4组顶点,在每一次旋转当中,可以发现分为4个循环,每个循环节长度为3,直观的说,就是有3条边是交换的,颜色必须一样。 3、... 阅读全文
posted @ 2013-08-01 21:16 Chierush 阅读(651) 评论(1) 推荐(0) 编辑