NOIP2015
非选择5
图的染色问题:图的m-着色判定问题——给定无向连通图G和m种不同的颜色。用这些颜色为图G的各顶点着色,每个顶点着一种颜色,是否有一种着色法使G中任意相邻的2个顶点着不同颜色?
图的m-着色优化问题——若一个图最少需要m种颜色才能使图中任意相邻的2个顶点着不同颜色,则称这个数m为该图的色数。求一个图的最小色数m的问题称为m-着色优化问题。算法描述(迭代算法)
color[n]存储n个顶点的着色方案,可以选择的颜色为1到m
t=1
对当前第t个顶点开始着色:
若t>n 则已求得一个解,输出着色方案即可
否则,依次对顶点t着色1-m,
若t与所有其它相邻顶点无颜色冲突,则继续为下一顶点着色;否则,回溯,测试下一颜色。
问题求解2
(1) 卡特兰数:
凸多边形的剖分方法:
① 选任意两个不相邻节点
② 剖分开两个部分,两边分别再次剖分
③ 公式h(n)=h(0)*h(n-1)+h(1)*(n-2)+……+h(n-1)*h(0) (h(n)为n+2变形)
④ 公式2:h(n)=Cn2n/(n-1)
(2) 二项展开式:
(a+b)n=∑Cx1nan-x1bx1(0<=x1<=n)
(3) 错排公式:
①问题:十本不同的书,重新摆放,使每本书都不在原来的位置上,问方案数
②公式:D(n)=(n-1)[D(n-2)+D(n-1)]
③推导:当n个编号元素放在n个编号位置,元素编号与位置编号各不对应的方法数用D(n)表示,那么D(n-1)就表示n-1个编号元素放在n-1个编号位置,各不对应的方法数,其它类推.
第一步,把第n个元素放在一个位置,比如位置k,一共有n-1种方法;
第二步,放编号为k的元素,这时有两种情况:⑴把它放到位置n,那么,对于剩下的n-1个元素,由于第k个元素放到了位置n,剩下n-2个元素就有D(n-2)种方法;⑵第k个元素不把它放到位置n,这时,对于这n-1个元素,有D(n-1)种方法;
错排公式原理:构造错排
(4)斯特林数:
①第一类斯特林数:
1.定义:将p个物体排成k个非空循环排列的方法数。
2.s(p,k)的递推公式:s(p,k) = (p-1)*s(p-1,k) + s(p-1,k-1) ,1<=k<=p-1
3.边界条件:s(p,0) = 0 ,p>=1,s(p,p) = 1 ,p>=0
4.递推关系的说明:考虑第p个物品,p可以单独构成一个非空循环排列,这样前p-1种物品构成k-1个非空循环排列,方法数为s(p-1,k-1);也可以前p-1种物品构成k个非空循环排列,而第p个物品插入第i个物品的左边,这有(p-1)*s(p-1,k)种方法。
②第二类斯特林数:s(n,m)n个不同元素构成m个圆排列的数目(n个有区别的球,放入k个无标号的盒子中的方案数)
S(n,0)=0,S(n,1)=1,S(n,n)=1,S(n,k)=0(k>n)
S(n,k)=S(n-1,k-1)+k*S(n-1,k)
分析:设有n个不同的球,分别用b1,b2,...,bn表示。从中取出一个球bn,bn的放法有以下两种:
1.bn独占一个盒子,那么剩下的球只能放在k-1个盒子里,方案数为S(n-1,k-1);
2.bn与别的球共占一个盒子,那么可以将b1,b2,...,bn-1这n-1个球放入k个盒子里,然后将bn放入其中一个盒子中,方案数为k*S(n-1,k).
阅读写结果:
4递归必考递归必考!!!!!
方法:画树(&&耐心)
完善程序
第1题
① 分析原形:最大字段和
② 分析题目的方法(因为题目可能每个方法都涉猎)
1. 暴搜O(n3)
2. 预处理前缀和O(n2)
3. 动规f[i]=max(f[i-1]+a[i],a[i]);答案ans=max(f[i])
③ 分析程序的方法:注意看注释(透出算法)
前两个注释:左边一个动规,右边一个动规
④ 找突破口
⑤ 填程序
小技巧:可以左抄抄,右抄抄(因为程序常是对称的)
NOIP2014
第1题:
面向对象(OOP):
⑴对象。
对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。[2]
⑵对象的状态和行为。
对象具有状态,一个对象用数据值来描述它的状态。
对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。
对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中[2]
⑶类。
具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的具体化就是对象,也可以说类的实例是对象,类实际上就是一种数据类型。
类具有属性,它是对象的状态的抽象,用数据结构来描述类的属性。
类具有操作,它是对象的行为的抽象,用操作名和实现该操作的方法来描述。[2]
⑷类的结构。
在客观世界中有若干类,这些类之间有一定的结构关系。通常有两种主要的结构关系,即一般--具体结构关系,整体--部分结构关系。
①一般--具体结构称为分类结构,也可以说是“或”关系,或者是“is a”关系。
②整体--部分结构称为组装结构,它们之间的关系是一种“与”关系,或者是“hasa”关系。[2]
⑸消息和方法。
对象之间进行通信的结构叫做消息。在对象的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。发送一条消息至少要包括说明接受消息的对象名、发送给该对象的消息名(即对象名、方法名)。一般还要对参数加以说明,参数可以是认识该消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。[2]
类中操作的实现过程叫做方法,一个方法有方法名、返回值、参数、方法体。
第2题:
① 中国最快计算机:神威太湖之光:十亿亿次运算速度
② 量子计算机:量子计算机(quantumcomputer)是一类遵循量子力学规律进行高速数学和逻辑运算、存储及处理量子信息的物理装置。
③ 量子通信:量子通信是指利用量子纠缠效应进行信息传递的一种新型的通讯方式。例如一个量子态可以同时表示0和1两个数字,7个这样的量子态就可以同时表示128个状态或128个数字:0~127。光量子通信的这样一次传输,就相当于经典通信方式的128次。可以想象如果传输带宽是64位或者更高,那么效率之差将是惊人的2,以及更高
第7题:
第1个元素:1
第2个元素:2
检索n个长度:(1+2+……+n)/n
第8题:
黑盒测试:不管程序是啥,只看输入输出结果
白盒测试:每句程序运行看是否正确。