﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Climber.pI的OI之路-随笔分类-读书笔记</title><link>http://www.cppblog.com/Climber-pI/category/14989.html</link><description>Through the darkest dark，may we see the light.</description><language>zh-cn</language><lastBuildDate>Wed, 27 Oct 2010 15:27:44 GMT</lastBuildDate><pubDate>Wed, 27 Oct 2010 15:27:44 GMT</pubDate><ttl>60</ttl><item><title>Summary of Chapter 1-4</title><link>http://www.cppblog.com/Climber-pI/archive/2010/10/25/131231.html</link><dc:creator>Climber.pI</dc:creator><author>Climber.pI</author><pubDate>Mon, 25 Oct 2010 13:54:00 GMT</pubDate><guid>http://www.cppblog.com/Climber-pI/archive/2010/10/25/131231.html</guid><wfw:comment>http://www.cppblog.com/Climber-pI/comments/131231.html</wfw:comment><comments>http://www.cppblog.com/Climber-pI/archive/2010/10/25/131231.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Climber-pI/comments/commentRss/131231.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Climber-pI/services/trackbacks/131231.html</trackback:ping><description><![CDATA[<p>第一讲 时空分析<br>(1)时间复杂度</p>
(2)空间复杂度<br><br>第二讲 排序算法<br><br>n较大 【快速排序】<br>n较小 【冒泡排序】<br>n较大 n值较小 【计数排序】<br>取n的最值 【堆排序】<br>n较大 要求稳定性 【归并排序】<br><br><br>第三讲 线性数据结构<br>1.栈<br>(1)DFS的显式写法 =&gt; 类似BFS<br>(2)回溯 =&gt; DFS+状态还原<br>【求总方案数或者最优方案问题】<br>2.队列<br>BFS<br>【求最少操作次数】<br><br>第四讲 树形结构的应用<br>1.二叉排序树 O(nlogn)<br>递归构造<br><br>2.哈夫曼树 =&gt; 堆实现<br><br>3.树状数组 =&gt; 邻接表<br>【貌似NOIp超纲】
<img src ="http://www.cppblog.com/Climber-pI/aggbug/131231.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Climber-pI/" target="_blank">Climber.pI</a> 2010-10-25 21:54 <a href="http://www.cppblog.com/Climber-pI/archive/2010/10/25/131231.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《同中学生谈排列组合》苏淳 读书札记</title><link>http://www.cppblog.com/Climber-pI/archive/2010/09/20/127184.html</link><dc:creator>Climber.pI</dc:creator><author>Climber.pI</author><pubDate>Mon, 20 Sep 2010 13:57:00 GMT</pubDate><guid>http://www.cppblog.com/Climber-pI/archive/2010/09/20/127184.html</guid><wfw:comment>http://www.cppblog.com/Climber-pI/comments/127184.html</wfw:comment><comments>http://www.cppblog.com/Climber-pI/archive/2010/09/20/127184.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Climber-pI/comments/commentRss/127184.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Climber-pI/services/trackbacks/127184.html</trackback:ping><description><![CDATA[<p>引：&#8220;我们要把厚书读薄，再把薄书读厚.&#8221;<br>进一步的系统化将在读完这本书后，以表格或者思维导图的形式出现.<br></p>
<p><br></p>
<p>一、乘法原理</p>
<p>乘法原理讨论分阶段办事过程中的计数问题.<br><br>用集合论观点解释：<br>把分阶段进行的事情看作一种多重选取过程，每一个过程都是自某个集合挑选一个元素，然后考虑有多少种不同的挑选方式.</p>
<p>【应用】数的整除，因数分解问题<br><br>【例3】2160的正约数个数.<br>2160 = 2^4 * 3^3 * 5^1<br>则任意约数形式为2^i * 3^j * 5 ^k (0&lt;=i&lt;=4, 0&lt;=j&lt;=3, 0&lt;=k&lt;=1)<br>所以约束个数为(4+1)(3+1)(1+1)=32.<br><br>【例5】从题目中抽象出模型.<br><br>【例6】 一个结论：[u,v]=n, 令n的因子r的个数为n(r)，有k个因子.<br>则符合要求的数对个数为 (2n(r)+1)*..*(2n(r)+1).<br>需要注意的是最大公约数，是去两数某因子的最大值.<br><br>【例7】补集思想.(排除法)<br>在整除性问题中，确定前n-1位，然后分类讨论第n位的情况.<br><br>【例8】看了，未懂.</p>
<p><br></p>
<p>二、重复排列</p>
<p>【定义】如果在同一个n阶集合(有n个元素)中依次进行k次选取，而且选过的元素还可以再选，则一共有n^k中不同的选取方式(即重复排列方式).<br><br></p>
<p>【应用】空间解析几何、集合子集性质的讨论</p>
<p>【例5】立方体{(x,y,z):0&lt;=x,y,z&lt;=a}顶点坐标.</p>
<p>证 显然每个顶点(x,y,z)的三个坐标都是集合{0,a}的元素，所以共有2^3个不同的顶点.坐标略.<br><br>【例6】在三维欧氏空间给出9个格点(坐标值为整数)，求证其中必有两点中点坐标为格点.<br><br>证 若两点A(x1,y1,z1)和B(x2,y2,z2)的中点为格点，必有x1和x2，y1和y2，z1和z2和为偶数，即两者奇偶性相同.<br>考虑考虑欧氏空间格点奇偶性情况可知，每个坐标值都是{奇数，偶数}中一个元素，所以格点有8种不同的奇偶性.从而，原命题由抽屉原理可证.</p>
<br>【例7】n阶集合共有2^n个子集，2^n-1个真子集.<br><br>【例9】棋盘问题，从左下角走到右上角，n+1行，m+1列，求证f(m,n)&lt;=2^(mn).<br><br>证 道路将城市分成mn个方块，而路线又将方块分成两个子集(其中一个可能为空)，显然不同子集个数为2^(mn).即f(m,n)&lt;=2^(mn)，当且仅当m=n=1时等号成立.<br><br>三、排列<br><br>【定义】从n个不同的元素中有次序地选取k(1&lt;=k&lt;=n)个，叫做从n个不同元素中取出k个元素的一个排列.<br><br>【应用】组数问题中的&#8220;无重复数字&#8221;问题.<br><br>【例4】利用补集思想处理无重复数字问题.考虑不参加组数的数字整除情况和所有数字整除情况(联系1.7)<br><br>【例5】逐位讨论.<br><br>【例7】注意到k个数字取自不同行列(联想皇后问题)，所以子集个数为k!，每个子集的和分行列讨论，累加即可.<br><br>【例10】有2n个人参加收发电报培训，每两人结为一对互发互收，有多少种不同的结对方式.(搭配问题)<br><br>解 (2n-1)(2n-3)...3*1=(2n)!/(2^n*n!)<br>需要注意的是求和使用的思想: 先求出全部数的积，然后去掉里面的偶数.也是一种间接的方法.<br><br>四、加法原理<br><br>【集合的分划】<br>若把一个集合B分成一些子集B1,B2,...,Bk，使得<br><span style="BACKGROUND-COLOR: #c0c0c0">(i)B1&#8746;B2&#8746;...&#8746;Bk = B;<br>(ii)B1&#8745;B2=&#8709; ,...，Bk-1&#8745;Bk=&#8709;.</span><br>满足这两条性质的子集B1,B2,...,Bk，叫做B的一个分划.<br><br>【定义】<span style="BACKGROUND-COLOR: #c0c0c0"> |B|=|B1|+|B2|+...+|Bk| 加法公式<br></span>这种通过分划计数的原理叫做加法原理.<br><br>【例1】现有长度分别为1,2,...,n的细木棍各一根，可以以它们为边构成多少种不同的三角形?<br><br>解 以c的长度对这些三角形分类，将c=k的三角形集合记做Bk，则构成了集合B的一个分划.<br>在Bk中，三角形三边分别为a&lt;b&lt;k，其中k为定值，于是可将<strong>(a,b)对应于平面中的格点.</strong><span style="BACKGROUND-COLOR: #c0c0c0">通过限制条件a&lt;k,b&lt;k,a+b&gt;k我们可以知道，符合条件的格点在a=b,a+b=k,b=k三条直线围成的三角形内</span>,<br>所以若k为偶数，有|Bk|=1/4*(k-2)^2<br>若k为奇数，有|Bk|=1/4(k-1)(k-3)<br>从而可以求得|B|.(二阶等差数列求和不熟)<br><br>【例2】求方程x^2-[x]^2=(x-x[x])^2在区间[1,n]中根的数目.<br><br>解 <span style="BACKGROUND-COLOR: #c0c0c0">将区间[k,k+1)中根的集合记做Bk.</span><br>若x&#8712;[k,k+1)，记k=[x],p=x-[x](0&lt;=p&lt;1)，可得2kp=[2kp+p^2].<br>显然等式两边为整数，所以p=0,1/2k,...,2k-1/2k，故而|Bk|=2k。<br>由加法原理可知，|B|=n^2-n+1<br><br>五、带限制条件的排列问题<br><br>(i) 间接方法<br>【排除法】先假定不存在限制条件，求出所有情况的数目；再考虑受到限制条件，而不允许出现的情况数目.<br><br>(ii) 直接方法<br>【优限法】优先解决受限对象(受限对象或受限元素)的安置，然后再考虑一般对象的安置问题.<br><br>【插入法】首先安排一般元素，然后将首先元素插入到允许的位置上.(某些元素相邻或者不相邻)<br><br>【视一法】首先要把要求相邻排列的元素看成一个整体，同其他元素一同排列，然后再考虑这个整体内部的元素间的排列问题.<br><br>【例8】10个节目中有6个演唱，4个舞蹈，要求每两个舞蹈之间至少安排一个演唱.<br><br>解 反过来看问题，原命题等价于在任意两演唱(边界情况的话一个)中安排或不安排一个舞蹈，而这样的可能位置共7个.所以共6!*P(7,4)种顺序.<br><br>六、组合<br><br>【定义】从n个不同物件中无次序地(不计顺序地)选取k个，叫做从n个物件中选k个的一个组合.<br>如果考虑k个物件的选取顺序，可得P(n,k)=C(n,k)*k!<br>从而得到组合的计算公式C(n,k)=n!/k!(n-k)!<br><br>(i)C(n,n-k)=C(n,k)<br>(ii)C(n,k)+C(n,k-1)=C(n+1,k) 
<img src ="http://www.cppblog.com/Climber-pI/aggbug/127184.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Climber-pI/" target="_blank">Climber.pI</a> 2010-09-20 21:57 <a href="http://www.cppblog.com/Climber-pI/archive/2010/09/20/127184.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>