算法合集之《论数学策略在信息学问题中的应用》

算法合集之《论数学策略在信息学问题中的应用》
算法合集之《论数学策略在信息学问题中的应用》

论数学策略在信息学问题中的应用

(北京十二中, 杨江明, 100071)

【关键字】策略可扩展性效率整数问题

【摘要】本文研究的是,在信息学竞赛中十分重要,却常常被忽略的数学策略。本文通过分析数学策略中的方程思想、不等式思想及构造法在具体问题中的应用,比较他们同其他策略的优劣,较为详细地介绍了数学策略的效率、应用范围以及可扩展性。并总结了在信息学问题中引入数学策略的原因。引申出如何在一般解题过程中应用数学策略。展望了数学策略在今后信息学竞赛中应用的前景。本文所选的例题都是近年来各级信息学竞赛的试题,针对某些题目提出了区别于标准算法的更高效的数学策略解法,具有很强的现实意义

【目录】

【关键字】

【摘要】

【目录】

【正文】

§1. 数学与策略

§2. 数学策略在信息学题目中的应用

§2.1 数学策略之方程思想

——化简、解决题目的途径

§2.1.1 方程思想的运用

§2.1.2 运用方程思想同一般策略的比较

§2.2 数学策略之不等式

——抽象与具体的桥梁

§2.2.1 不等式的应用

§2.2.2 应用不等式同一般策略的比较

§2.3 特殊的问题——构造法

——到达想象力的尽头

§2.3.1 构造法的应用

§2.3.2 构造法同其它策略的比较

§3. 为什么应用数学策略

——小结数学策略的应用

【附录】

【参考书目】

【源程序】

【正文】

§1. 数学与策略

数学,是研究现实世界的空间形式和数量关系的科学,是处理客观问题的强有力的工具,几乎在一切自然科学领域中都起着基础性的作用。

策略,是指解决问题所采取的方法。它包括解决各种问题及问题的方方面面的方法。本文讨论的策略,是指利用计算机编程解题时所采取的行之有效的方法,即编程策略。

编写程序解决问题常见的策略有:数学(规律)策略,分治策略,贪心策略,穷举(含搜索)策略等等。

判断某种策略的优劣,通常都从三方面进行考察:

效率:也就是我们所说的算法复杂度。在竞赛中考察程序的复杂度,一般都是考察程序的时间复杂度。当然,时间复杂度同空间复杂度是相互制约的。

应用范围:就是说该策略可以解决哪些类型的题目,是对该策略中“所有”算法所能解决题目总的概括。

可扩展性:针对一个题目所构造的算法,是否可以沿用在其它题目上,如果一个算法可以用在多个题目上,我们就说这种算法的可扩展性大。

我们对下面要研究的数学策略,都从这三方面同其他策略进行比较。

从广义上讲,数学策略包括应用图论的策略,动态规划策略以及应用初等数学手段的策略。图论及动态规划的策略在近年来的比赛中被频频涉及,而初等数学中的方程思想、不等式思想等化简题目、解决问题的手段却没有受到应有的重视。事实上,利用这些基本手段是化简题目的已知条件和建立一个优秀的数学模型必不可少的前提条件。有时能取得意想不到的收获。

本文所讨论的数学策略,是从狭义上,指应用初等数学手段的策略。文章通过分析几道近年来信息学竞赛的题目,比较应用数学策略解决、化简题目与直接运用一般策略在效率上的巨大差异,从而说明数学策略在信息学竞赛中的巨大潜力及在解题上的优势,并尝试总结解决一般问题的应有步骤。

§2. 数学策略在信息学题目中的应用

我们看看我们人类是如何解决具体问题的:人类自身既没有快速的运算系统,也没有大容量的存储系统,我们解题运用的就是我们所擅长的逻辑推理和强大的数学工具,我们有完善的方程理论和不等式思想等等,而这正是计算机所欠缺的。于是,我们尝试让计算机也具有这些优点,贪心策略,A*算法等实际上都是这种有益的尝试。利用人类思考的方式做一些选择,而我们现在所讨论的数学策略,实际上就是这些数学手段的直接运用。【附录1】

数学策略在信息学中的运用包括两个方面:化简题目和直接解决问题。

应用数学策略化简题目是解决问题必不可少的重要步骤,也是分析题目的基本方法。通过应用数学策略化简题目,发掘题目中的隐含条件,寻求更多的“已知”条件,从而为建立数学模型打下良好的基础。而用数学策略直接解题,其效率更是一般算法所不可企及的。

下面我们分别从方程、不等式及构造法三个方面,对数学策略的应用加以分析。

§2.1 数学策略之方程思想

——化简、解决题目的途径

方程是建立在题目的基础上,对条件的抽象和总结。对于同一题目的不同条件,具有普遍适用性。因此,方程弥补了枚举(包括搜索)策略需要尝试所有情况才能得出结论的缺点。

方程是数学策略中较为重要的一种手段。一般来说,运用方程解决问题,都是运用我们程序较擅长的n元一次代数方程组求解,这就涉及到解此类方程组的高斯消元法。

下面讲讲用高斯消元法解一元联立方程组。一元n阶线性联立方程组的一般形式为:

a

1 x

1

+a

12

x

2

+…+a

1n

x

n

=b

1

(1)

a

2 1x

1

+a

22

x

2

+…+a

2n

x

n

=b

2

(2)

……

a

n1 x

1

+a

n2

x

2

+…+a

nn

x

n

=b

n

(n)

在代数中一般用消元法来解方程组。即:先将第一行乘以一个常数再与其

它行相加,以消去其它各行的x

1那一项(使a

21

,a

31

,…a

n1

为0)。然后再以新的

第二行乘以一个常数并与第3行到第n行相加,以消去第3行到第n行上x

2

那一项(使x

2

的系数为0)。…最后再以新的第(n-1)行乘一个常数并与第n行

相加,以消去第n行上的x

n-1

项。最后得到一个如下形式的三角方程组:

a

11x

1

+a

12

x

2

+a

13

x

3

+…+a

1n

x

n

=b

1

a

22`x

2

+a

23

x

3

+…+a

2n

`x

n

=b

2

`

a

33`x

3

+…+a

3n

`x

n

`=b

3

`

a

nn `x

n

=b

n

`

此过程可用图1表示。

图1

从此方程组最后一个方程式可以直接求出x

n = b

n`

/a

nn`

,然后逐步“回代”,

求出x

n-1,x

n-2

…,x

1

还要考虑一个问题:如果在上面过程中,a

ii

为零,则在消元过程中会出现

使第i行乘以常数a

ki /a

ii

而出现无穷大,溢出。例如,本来为了消去第2行的

x 1项,要进行的是:(1)式×a

21

/a

11

-(2)式,若a

ii

=0,则发生溢出错误。必须

保证a

ii ≠0。若发生a

ii

为零,可从第i+1行到n行中找到一个第m行,其a

mi

≠0,

将此第m行与第i行对调。如果找不到,则方程无解或无定解。可用图 2表示。

图2

根据上面介绍的方法,利用图2所示的N—S图,得到上面列出三角方程组。再使该三角方程组中各A

ii

的值为1,以得到以下三角方程组:

x

1+a

12

``x

2

+a

13

``x

3

+…+a

1n

``x

n

=b

1

x

2+a

23

``x

3

+ …+a

2n

``x

n

=b

2

x

n-1+a

(n-1) n

``x

n

=b

n-1

x

n =b

n

``

这样就得到 x

n =b

n

``,然后回代,求出 x

n-1

, (x)

1

值。画出这部分流程图(图

3)。

上述过程表示为图2 和图3。为清晰起见,最好用子程序,一个子程序完成一个功能。

刚刚过去的IOI’99为我们留下了许多思考,那我们就由IOI’99中的纸牌问题引入吧。

图3

§2.1.1 方程思想的运用

我们把均分纸牌问题简要描述一下:

【例1】这是一个均分纸牌的游戏,有N列纸牌,每列有纸牌若干张(可能是零张)。纸牌列用从1到N的整数标号。在移动纸牌时你需要指定一个确定的列p,和一个确定的数字m。而后从p 列上移动m 张纸牌到每一个相邻的列上。如果1<p<N的话,则p列有两个相邻的列,分别是p-1和p+1;如果p=1的话,则只有一个相邻列,其列号为2;如果p=N的话,则只有一个相邻列,其列号为N-1。

注意,如果p列有两个相邻的列,则进行上述移动时,p列至少要有2m张纸牌;如果p列只有一个相邻的列,则进行这样的移动时,p列就需要至少m张纸牌。

这个游戏的目的是“均分”所有的纸牌列,使每列都有相同的纸牌数,且用最少的移动达到这一目的。假定有超过一种符合上述要求的移动方法,你只需给出其中一种。[附录中2]

我们运用数学策略化简题目是为了寻求更好的思路,只有化简题目才能更好地解决题目。但实际上,许多人拿到这道题目时都发懵了,怎样才能“均分”呢?于是,各种学过的算法在头脑中打架:

选手:搜索,你行吗?

搜索:嗯, 10000步呢,要我嘛,恐怕得等等了。

选手:动态规划,你呢?

动态规划:我?这道题我也没辙。

怎么办?首先,我们对题目进行分析,必须先认识到这样一重关系,第i列的纸牌只能向两侧的i+1列、i-1列移动,而且移动的总牌数是相等的(第1列和第n列例外)。

其次,只有i+1列、i-1列可以向第i列移动纸牌,而且移到第i列的牌数必然等于第i+1列、i-1列移动总牌数的一半。要保证均分,于是对于第i

列牌移走的总牌数与移来的总牌数的差值,必然等于首末状态纸牌数的差值。首

状态即初始状态,而末状态即均匀状态。于是,对于N列纸牌,则共有N个未知数,即为每列须移走的纸牌数。第i列须移走的纸牌数记为M

i

,第i列首末状态

的差值记为Δ

i

,于是有方程组:

M

2–M

1

= A-C

1

=△

1

M

2

-M

1

=△

1

M 1–2M

2

+M

3

= A-C

2

=△

2

利用高斯消元法 M

3

–M

2

=△

1

+ △

2

M 2–2M

3

+M

4

= A –C

3

=△

3

M

4

–M

3

= △

1

+ △

2

+ △

3

M 3–2M

4

+M

5

=A –C

4

=△

4

化简得………………

………………………………

M n-2–2M

n-1

+M

n

=A – C

n-1

=△

n-1

M

n

–M

n-1

=△

1

+△

2

+…△n

M n –M

n-1

=A-C

n

=△n

共有n个未知数,n-1个方程,为一不定方程组。假设M

1

=0代入

可求出对应的一组解{ x

1,x

2

,x

3

(x)

n

} ,其中 x

1

=0,根据n元一次方程组

的性质

{x

1+t,x

2

+t,x

3

+t (x)

n

+t} , t为整数,也一定为方程组的一组解,代入化

简即可证明。

题目要求最小的移动次数,当然移动的纸牌总数也要尽量小。

因为x

i

≥0,所以若得到最小解为零的一组解,则该解对应移动纸牌总数一定最小。得出结论:

对应每列移动的纸牌数是确定的,且是可求的,而且能够保证均分。

有了均分的保证,剩下的问题就好说了,无论是贪心策略,随机化算法,还是一些算法的综合运用都不成问题。即便用最基本的贪心算法,对于IOI’99的测试数据也都能应付自如。

实际上IOI’99的这道题目提示我们,数学毕竟是基础,完全脱离数学的算法是没有的,脱离对题目本身的分析,单纯地套用算法是不现实的,而这正是许多选手常犯的毛病。

我们再看一道相关的题目。

【例2】在物理学中,我们常常对一些复杂的电路问题十分头疼,为了便于分析,我们需要把一些电阻的混连电路,用一个等效电阻来取代。而等效电阻的计算往往是十分繁琐的。于是,我们尝试用程序代替我们完成这项任务。程序需要计算的,是一个纯电阻的混连电路中两点间的总电阻。【附录3】【说明】

为了阐述方便,我们建立这样一个模型来描述电路:电路由一个一个结点连接构成,结点就是导线的交点,若两结点间的电路上不存在其它结点,则称这两个结点是两相邻结点。两相邻结点之间只允许有两种情况:

(1)它们之间是一个已知电阻(如图4);

图4

(2)它们之间是x个已知电阻的纯并联电路(如图5);

图5

两相邻结点间总电阻不为零(若为零,则两结点必可以合并成一个结点)。没有孤立的结点。

此模型必然可以描述所有的纯电阻电路。在此基础上我们对此题进行分析。

【输入】

第一行是一个整数N,表示结点数;

第二行是一个整数M,表示相邻结点的对数;

第三行有两个数,a和b,程序就是要求结点a和结点b间的总电阻。

以下M行每行有三个整数,i,j和k(1≤i<j≤N),表示结点i和结点j 之间连结着大小为k 的电阻。

【输出】

仅需输出一个数,就是结点a和结点b间的总电阻。

我们手算解决此类题目,通常都是在结点a、b两端接一个外接电源,根据局部电路欧姆定律,测量a、b间的电压值和流入的总电流值,从而计算出总电阻。我们用程序解决这道题也可以利用这种手段:加

一理想外接电源,给定电压值,解出总电流值,从而

求出等价电阻值(如图6)。对于两相邻结点间存在x

个电阻的纯并联电路,我们可以在输入的时候将其直

接化简,即当读入一个连结结点i与j的电阻k 。若

结点i与j之间已记录有总电阻L,则求出电阻k与 L

的并联值,,覆盖掉原来的L;这样,我们的电路中任

意两相邻结点间的电阻已知且不为零。于是,设相邻

结点i与j 之间电压为U

ij ,电流为I

ij

,已知电阻为

R

ij

,而总电压为U,总电流为I,总电阻为R, R=U/I。图6 我们尝试利用现有的知识寻求各个量之间的关系。

在这之前先介绍一下克希荷夫定律。

假设某一电路网络的图G有n个顶点m条边,

B=(b

ij )

n×m

C=(c

ij )

(m-n+1)×m

分别是它的关联矩阵和回路矩阵。令

i

1 v

1

i 2 v 2 ﹒ ﹒ I= ﹒ Ve= ﹒ ﹒ ﹒ i m v m

分别为这电路的各边电流与各边电压。则我们可得到: (a)克希荷夫电流定律

对于每一结点,流入该点电流的代数和为零;即

或简单地写成:

BI=0。 (b)克希荷夫电压定律

沿着任一回路C ,电压降的代数和为零,即

或写成:

CVe=0 。

根据克希荷夫定律,对于N 个结点,我们得到N 个方程。对于所有回路,共有M-N+1个本质不同的方程,且a ﹑b 两点之间的电压降代数和等于电源电压。我们将外电压设为任意 一定值,而任意两相邻点之间的电压可以由其电流表示,U ij =I ij ﹒R ij 。实际上,我们有M+1个未知数,而我们也得到了M+1个本质不同的方程。根据方程原理,I 可解出,R=U/I ,问题得解。

以上两个题目,只是方程思想中一种较为明显的运用。事实上,方程的运用更多的只是一种思想,它是从已知中挖掘更多已知的手段,它更多地应用于竞赛中。当选手拿到题目,对题目分析的过程中,运用方程求出一定解 ,再在此基础上构造其它算法,所以我们称之为方程思想。方程的运用往往都是选手解决题目的一个思维过程,这个思维过程需要选手平时的积累和训练。由于篇幅的限制,仅选出了比较明显运用方程思想的上述两题加以阐述。实际上方程思想在NOI ’96中的三角形灯塔等问题中,都有较实际的运用。【附录4】

§2.1.2 运用方程思想同一般策略的比较

运用方程思想解决问题的效率是显而易见的,解一个n 元一次方程组的算法复杂度,不过是0(n )级,一旦一道题目可以运用方程思想解出,它的效率必定要比一般算法高很多。上文提到NOI ’96的三角形灯塔问题,既可用搜索算法解决,又可用方程思想化简解决,而运用方程思想的解法同搜索算法比较,它的高效性也很好地体现出来了。

∑===m

k k

jk n

j t i b

1

,...,2,1,0)(∑=+-==m

k k

jk n m j t v c

1

1

,...,2,1,0)(

其次,是应用的范围。方

程的另一个显著的优点就是,

它可以解许多一般策略无法解

决的问题,主要表现在,它并

不要求题目一定是整数问题,

而搜索策略、动态规划方法恰

恰要求问题必须是整数问题,

对于非整数问题就显得无能为

力了,像例2的电阻问题(如

图7)。

图7

但是,方程思想也有它自身的缺点,它的运用是有局限性的。对于整数问题,搜索算法相对而言却是“万能”的,例1均分纸牌问题,实际上是一道整数问题,我们说的无法解决,不过是指时间上和空间上无法接受而已。而方程思想并不是对于每道题都可以应用的,对于方程思想无法解决的问题,还是要考虑搜索策略。

§2.2 数学策略之不等式

——抽象与具体的桥梁

不等式是表示两个数或两个代数式不相等的算式,在实际应用中,通常用不等式来表示两类数之间或者两个代数式之间存在的普遍关系。应用不等式,因为它不仅仅局限于确定的数字之间的关系,应用不等式也在于它的高效性。我们手工解不等式,运用的是我们的逻辑思维能力,以及利用一些基本不等式和不等式的基本性质。与解不等式相对应的就是枚举。不等式和枚举法实际上是在走两条不同的路,完成同样一个问题。由于程序“不具有”我们的逻辑推理能力,所以我们说枚举法是适合程序设计的。但是,我们一旦将解不等式的方法加入到程序之中,程序的效率将会有一个质的飞跃。

§2.2.1 不等式的应用

【例3】把正整数S分解成若干个互不相等的自然数的和,且使这些自然数的乘积最大。请编写一程序,由键盘输入S(3≤S≤1000),求满足条件的分解方案。【附录5】

【输入要求】 S由键盘输入。

【输出要求】①第一行输出分解方案,相邻两数之间用逗号分开;

②第二行输出乘积(MUL)。

例如:输入:S=10;

输出:2,3,5;

MUL=30

设 S=a

1+a

2

+a

3

+…+a

n

(1≤a

1

<a

2

<…<a

n

P= a 1˙a 2˙a 3…˙a n

我们求的就是P 的最大值。 根据均值不等式,由于a i 为正

由于1≤a 1﹤a 2﹤a 3,…﹤a n 所以s/n ﹥1。

要使得p 最大,则须使(s/n)n 最大,又∵s/n ﹥1,则使得n 最大。同时设法使相邻两数a i+1-a i 的差最小。设a 1=2(若a 1=1,则a 1对乘积将失去其作用),求出符合条件的:

2+3+4+5+…+a n +x=S(2,3, …,a n 是连续的自然数,且a n ≥x)。

即将S 分解成尽可能多的前n-1个连续自然数,剩余x 。X 必小于等于a n 。因为若x ﹥a n ,则一定可以在a n 后面补上a n+1,分解成的原序列就不是尽可能多的了,矛盾,故x ≤a n 。而x 必应与数列{a i }中某数重复,因此必须撤去x 。为保证撤去x 后各个自然数互不相等,其和还是等于p 且乘积最大。我们将数x 尽量平均地加在后几项,并尽可能使得相邻两数的差不超过2。

① 若a n+1=1,由于1*2…*a n ﹤2*3…*(a n +a n+1),因此将a n+1=1加到a n 上; ② 若1﹤a n+1﹤a n (a n+1与2,…,a n 中的某一个数相同),我们从a n 出发依次向尾部的a n+1个数加1;

③ 若a n+1= a n ,a n 加上2,其余的a n+1-2个数依次加1。

当然,还必须考虑一个例外情况:当n=3或4时,只能分解出一个方案: 3=1+2 MUL=1*2=2 4=1+3 MUL=1*3=3

简单的问题,简单的思考,简单的程序,一切显得如此轻松。但你是否发现其中蕴涵着的数学的美?

实际上题目的意义不在于题目的本身,它是一种思考。我们设计程序解决此类问题,并不局限在枚举策略上。利用不等式化简题目,应是我们的选择方向,而且应当是首选。

我们看一个具体的例子。

【例4】排序网络是这样一个模型:

有n 条水平的导线,由上至下分别标号为1至n ,导线与导线之间不相交。在任意两导线之间可以搭上“电桥”。每条导线的左端放置一数字,数字沿导线

n

n

n a a a a n

a a a a a a a a a a a a a a ............

32

3213213

3

213212

12

1≥++++≥++≥+p

n s n

≥??

? ??

由左向右同步运行,当遇上一电桥

时,比较电桥两端的两根导线上的

数字,将其中较大的放到上面的导

线上,而将较小的放到下面的导线

上,然后继续运行,保证同一时刻

最多只有一个电桥。(如图8)

若一个n行的排序网络共包含

m个电桥,对于左端输入的任意顺序

的数列,都能在右端得到一个由大

到小的数列,我们称这个排序网络

是一个完全排序网络。

图8

我们的程序需要做的,就是判断一个排序网络是否是一个完全排序网络。【附录6】

抛开我们一贯采用的枚举策略,看看我们是怎样运用不等式的性质,极其巧妙而且高效地解决这个问题的吧!

研究这道题,就不能不谈谈排序。排序的本质实际上就是找到一个数列各项之间的关系对应的不等式组。对于这道题,数

列是确定的,在网络中运行的过程,实际上就是

构造不等式组的过程。分析一个完全排序网络(如

图9)就会发现,本题构造不等式的过程是一个

分阶段的过程,每经过一个电桥对应一个阶段,

每个阶段都重新排列两个数,每个阶段也都是在

对不等式组做一次“修正”。图9 具体分析图(9),我`们用A

ij

表示经过第i个阶段后,第j条导线中的数。阶段排列不等式组

阶段一阶段二阶段三 2/3

1/2

2/3

A

1,2

≥A

1,3

A

1,1

与A

1,2

之间 A

1,1

与A

1,3

之间不确定

A

2,1

≥A

2,2

A

2,1

≥A

2,3

A

2,2

与A

2,3

之间不确定

A

2,2

≥A

2,3

A

2,1

≥A

2,2

A

2,1

≥A

2,3

我们发现,阶段i的不等式组,可以由阶段i-1 的不等式组根据阶段之所进行的重排列情况推导得出。编号为i和j的导线进行重排列之后,导线i和j 之间建立了不等式关系,而所有关于导线i和j的其它不等式都需要进行调整。不等式间的推导属于逻辑推导。我们的程序是否可以进行这种逻辑推导呢?答案是:可以。

假设我们已经求得了阶段i-1时对应的不等式组,阶段i是对导线a、b(a

﹤b)进行重新排列,首先得到A

ia ≥A

ib

,下面我们要对所有与导线a,b有关的不

等式进行调整。对于a,b分别分五种情况。

一、调整所有关于a 的不等式。

①原有不等式A

i-1,c ≥A

i-1,a

(c﹤a且c≠b),A

i-1,c

与 A

i-1,b

关系不确定

则A

i,a ≥A

i,b

, A

i,c

≥A

i,b

, A

i,c

与 A

i,a

关系不确定

②原有不等式A

i-1,a ≥A

i-1,c

,(a﹥c且c≠b),A

i-1,c

与A

i-1,b

关系不确定

则A

i,a ≥A

i,b

, A

i,a

≥A

i,c

, A

i,b

与 A

i,c

关系不确定

③原有不等式A

i-1,a ≥A

i-1,c

, A

i-1,b

≥A

i-1,c

,

则A

i,a ≥A

i,b

, A

i,a

≥A

i,c

, A

i,b

≥A

i,c

④原有不等式A

i-1,a ≤A

i-1,c

, A

i-1,b

≤A

i-1,c

,

则A

i,a ≥A

i,b

, A

i,a

≤A

i,c

, A

i,b

≤A

i,c

⑤原有不等式A

i-1,a ≥A

i-1,b

则不变。

二、调整所有关于b 的不等式。

①原有不等式A

i-1,c ≥A

i-1,b

(c﹤b且c≠a),A

i-1,c

与 A

i-1,a

关系不确定

则A

i,a ≥A

i,b

, A

i,c

≥A

i,b

, A

i,c

与 A

i,a

关系不确定

②原有不等式A

i-1,b ≥A

i-1,c

,(b﹥c且c≠a),A

i-1,c

与A

i-1,a

关系不确定

则A

i,a ≥A

i,b

, A

i,a

≥A

i,c

, A

i,b

与 A

i,c

关系不确定

③原有不等式A

i-1,a ≥A

i-1,c

, A

i-1,b

≥A

i-1,c

,

则A

i,a ≥A

i,b

, A

i,a

≥A

i,c

, A

i,b

≥A

i,c

④原有不等式A

i-1,a ≤A

i-1,c

, A

i-1,b

≤A

i-1,c

,

则A

i,a ≥A

i,b

, A

i,a

≤A

i,c

, A

i,b

≤A

i,c

, A

i-1,a

≥A

i-1,b

⑤原有不等式A

i-1,a ≥A

i-1,b

则不变。

以上的讨论覆盖了所有可能情况,其实具体编程的时候还可以化简。如果上述推导是正确的,那么,最终我们所求得的不等式组与排序网络原本所对应的不等式组是等价的。于是,我们可以通过分析不等式组的拓朴情况,证明排序网络是否符合要求。

下面对上述推导做出证明。

欲证明推导的正确性,只须对每种情况的正确性做出证明。分析关于a的不等式的第一种情况,将其抽象为①原有a、b、c三个数,c≥a,c 与b关系不确定;②a`=MAX﹛a,b﹜, b`=MIN﹛a,b﹜, c`=c

欲证明a`≥b`, c`≥b`,a`,c`关系不确定。

证明:当a≥b时,∵c≥a ∴c≥a≥b

a`=a, b`≥b, ∵c`=c ∴c`≥a`≥b`

当a﹤b时,c≥a; b﹥a, b、c关系不确定

a`=b, b`=a, c`=c , ∴c≥b`, a`≥b`, a`、c`关系不确定综上所述,任意情况下,都有:a`≥b`,c`≥b`,而a`、c`关系有时不确定(即a`、c`关系不确定)。得证。

对于其它情况也可按此法进行证明,由于篇幅限制,从略。

由此可见推导的正确性,从而仅需根据我们得到的不等式,判断其中是否任意两导线都是拓朴有序的,即可证明排序网络是否是完全排序网络。

解决这道题目的意义在于,它证明了一件事:那就是程序设计也可以进行一些“复杂”的逻辑推导。不过,解不等式需要选手对问题进行详细的分析,从而区分各种情况,再设计算法。

§2.2.2 应用不等式同一般策略的比较

将解不等式同程序设计结合起来,本身就是一个极其有意义的事情,让计算机具有一定的逻辑推导能力,从而弥补计算机的不足。

在效率上,解不等式之所以效率高,是因为应用不等式组,用抽象代替一般,省去了枚举各种情况的耗费,解不等式适合人类运算速度“不快”的特点。如果计算机将其运用,其效率自然是可观的。

例4的“标准”算法是应用0、1理论【附录7】。我们在PⅡ350的机器上拿它和不等式的解法做了一下对比:

解法算法复杂度效率

0、1理论不等式0(m﹒2n)

0(m﹒n)

当n达20多时,时间上就不可忍受了

在空间允许的范围内,时间始终在0.1S之内

事实证明,不等式是一种极其优秀的解题手段,在可能的情况下应优先考虑,关键还是靠选手的灵活运用。

不等式同方程一样,范围上都不受“整数问题”的限制,这也是不等式的优越性之一。

不过,不等式终究是有一定的应用范围的,更多时候需要对具体问题作具体分析。

§2.3 特殊的问题——构造法

——到达想象力的尽头

用构造法解决问题,首先需要对题目有深刻的了解,然后还要有巧妙的构思。一个问题如果使用构造法解决,无论是从思路上,还是从程序上都已经精简到了极限。因此,可以说,构造法是最高级的算法。

§2.3.1 构造法的应用

构造法不同于不等式与方程,构造法都是一对一的,一个具体的问题对应一个算法,不同问题之间很少有相关联的,因此构造法没有固定的模式可循。

正是因为构造法所具有的这种特殊性质,列举太多的题目是没有什么意义的,在这里我们仅分析一道经典题目,就算是抛砖引玉吧!

【例5】N个正整数横向排列,两人轮流从中取数,每次只能取走最左端或者最右端的数,所取数的数值表示这个人这次的得分。所有数都取完时,每个人所得分数之和为这个人的最后得分,最后得分多的人获胜。如果两人得分相同,则规定首先取数的人获胜。【附录8】

如果游戏开始N为偶数,则对首先取数的人来说存在一种必胜的策略。请编一个程序,作为首先取数的人,寻找一种必胜的策略和计算机玩这个游戏。

我们不妨将题目做一下处理,把要处理的对象染上不同的颜色,从而可以区分它们,这样才能够看出其中的一些隐蔽的本质。将要拿的数字染成不同的颜

色,像这样:

图10

实际上,先拿的人有权拿走所有自己想要颜色的数字。也就是说,先拿的人想拿走深色的4,2,5这三个数,就可以拿走,具体是这样的:(1)拿走4,对手只能拿7或9,而它们都是浅色的;

(2)无论对手怎样拿,都有一个(也仅有一个)深色数字可拿,那么就将它拿走;

(3)对手仍然只能选择浅色数字;

(4)…

这样拿下去,只要先拿的人每次都选择深色数拿,必定能够将所有深色数拿走。

这意味着什么?这意味着先拿的人只要选择两种颜色中数字总和较大的那组数,就可以保证胜利了。

真正在竞赛中运用构造法需要选手的创造力。当然问题的解法是多样的,正所谓条条大路通罗马。构造法解题的数学性极强,要求选手有比较深厚的数学功底,同时更需要有较为敏锐的观察能力和归纳推测能力。

§2.3.2 构造法同其它策略的比较

首先,要把和构造法极容易混淆的贪心策略相区别。其实,构造法同贪心策略的区别也是很明显的。从本质上讲,构造法是最优解算法,而贪心策略是近似解算法。贪心策略是从问题的局部考察,从而做出选择;而构造法是通过对全局的分析,构造出可证明的最优策略。

在效率上,构造法是所有算法中最优的,就连同为数学策略中的不等式、方程以及我们所偏爱的动态规划也自愧弗如。

在解题范围上,构造法运用得极其广泛,但是构造法却没有丝毫可扩展性可言。

构造法作为数学策略中的一部分,虽然它有种种不足,但是它的高效却是十分诱人的,成为许多选手的追求。在解题中,如果想出了构造法的算法,这种算法自然就是首选。

§3. 为什么应用数学策略

——小结数学策略的应用

上文具体讲述了数学策略的应用,下面就解释一下为什么要在信息学竞赛中应用数学策略。这个问题可以从两个方面来回答。

一、数学策略能够解决这一类问题的难点。

首先,数学策略能跨跃整数问题的界限,拓展了我们的解题范围,从而解决许多一般策略无法解决的问题。

其次,数学策略具有极高的效率,而效率正是我们所期望的。

二、数学策略避开了枚举策略的主要缺陷。

数学策略与枚举策略是站在不同的高度看问题,为什么这样说呢?

假设我们分别用数学策略和枚举策略处理同一问题,数学策略就是将这个问题先抽象,列出不等式、方

程组,然后运用数学手段寻求

问题中存在的普遍关系;而枚

举法恰恰相反,它是对问题的

所有情况先做分析,然后从中

提出共性的东西,总结出问题

普遍存在的关系(如图11)。我

们应用数学策略就是要弥补枚

举策略在列举各种情况的过程

中所做的过多耗费。图11

正是因为数学策略与枚举策略相互补充,所以经常用数学策略来解决枚举策略无法胜任的工作。

[跋语]

数学策略是人类智悲的结晶,能运用好数学策略是对选手的基本要求。数学策略有优点,也有缺点。其实,每种策略所能处理问题的规模都是有限的,在编程解决的时候,必须明确问题规模,从而谋划适当的策略,构造相对应的算法。数学策略之所以高效,是因为数学策略比一般的枚举策略更具有针对性。通常而言,算法针对性越高,其效率也越高(如构造法),而扩展性也就越低,且构造起来也越难。对于所有策略,我们总结可扩展性与效率、构造难易与效率基本上都呈反比例关系(如图12、图13)。我们解决问题,就是要从中选出一个最佳平衡点。

图12 图13

数学家波利亚的《怎样解题表》中曾经这样说:“如果你不能解决这个问题,你能否解决问题的一部分?”当我们拿到一个陌生的问题时,我们不妨先尝试数学策略,哪怕数学策略不能完全解决问题,我们也可以化简其中的一部分,从而为我们再次选择其它策略铺平道路(如例1)。正因为数学策略的优越性,所以我们说,尝试数学策略原本应是处理问题的第一步。

数学,不但是数学策略的基础,也是整个信息学的基础。目前信息学竞赛题目日趋复杂,单纯套用算法的时代一去不复返了。当前,更多的考察的是算法与算法间的综合应用,而数学作为信息学竞赛中密不可分的一部分,它与题目的联系也越密切,将数学应用同信息学解题相结合,恐怕也是一种趋势吧!

数学是一种美。有一位科学家曾经说过:如果让我在真和美之间选择,我愿选择美。当然,真和美在很多问题上是统一的,尤其在数学这样的学科中。在我们编程之中,如果能够更好地了解掌握和应用数学,一定会达到真和美的和谐统一。

就以此作为这篇论文的结束吧!

1、我们这里所说的数学策略,也是人工智能的范畴,属于人工智能中的专家系统。专家系统,简要地说,就是使计算机尽可能模拟人类专家解决某些实际问题的决策和工作过程,即模仿人类专家如何运用他们的知识和经验来解决所面临问题的方法、技巧和步骤。我们这里就是将我们解题的技巧运用在编程之中。

2、《纸牌问题》选自IOI’99第二试第二题,原题参见《信息学奥林匹克》1999年第4期。输入、输出同原题。

3、《电阻问题》选自《电脑爱好者》1999年第12期,吴文虎等老师合办的擂台赛栏目。

4、《三角形灯塔》选自NOI’96中的第二题。

这道题的方程解法简要叙述如下:

任一个灯的状态都可由它下方两个灯的状态求出。所以对于某一个已知状

态的灯b

ij (第i行第j个灯),以该灯为顶点,两边向下延伸,与底边的x

j

…x

n+j-i

构成一个具有N+1-i行的的三角形。B

ij 的状态可由x

j

…x

N+j-i

推出,故可建立一个

方程,有p个已知灯,则有p个一次线性方程,解此不定方程,问题得解。

5、《最优分解方案》选自IOI’96中国队组队选拔赛。输入、输出同原题。

6、《排序网络问题》选自NOI’99北京集训队训练题。

7、0、1理论是解决排序网络问题的一种方法。简要地说,排序中的大小关系只有三种:大于、小于或等于。于是,验证一个n行的排序网络是否是完全排序网络,可通过对所有的由0、1组成的n位数列进行验证,二者完全等价。

8、《取数游戏》选自IOI’96中的一道题。输入、输出同原题。

*9、NOI’99福建省选拔赛中的《幂函数递归系数问题》是一道非常优秀的构造法题目。由于《信息学奥林匹克》99年第3期中已经有了详尽的解法和证明,在此就没有加以叙述。

【参考书目】

1、《信息学奥林匹克》第一卷,第二卷。

2、《IOI’98中国集训队优秀论文集》。

3、《青少年国际和国内信息学(计算机奥林匹克竞赛指导)》,吴文虎、王建德,清华大学出版社,1997。

4、《国际国内奥林匹克信息学(计算机)1996年竞赛试题解析》,吴文虎、王建德,清华大学出版社,1997。

5、《图论及其应用》,卢开澄,卢开明,清华大学出版社,1995(第二版)

6、《人工智能及其应用》,蔡自兴,徐光佑,清华大学出版社,1996(第二版)

7、《BASIC语言——结构化程序设计》,谭浩强,中国科学技术出版社,1990

一、例1的源程序

{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+} {$M 65520,0,655360}

Program Flat;

Type Array_type=array[1..200] of longint;{数组类型}

Way_typep=array[1..10000] of integer;

Way_type=array[1..2] of ^Way_typep;{移动方式数组类型} Var Poles,{纸牌状态}

Answers:Array_type;{方程的解,即每列需移动的总牌数}

FinalWay:Way_type;{最佳移动方式}

N:integer;{列数}

FinalWaynum,{最佳移动方式的步数}

Average:longint;{平均每列纸牌数}

time:longint;{时间}

Procedure Init;{初始化}

var Total:longint;{纸牌总数}

i:integer;

filename:string;{输入文件名}

f:text;{文件}

Begin {Init}

time:=meml[$40:$6c];

filename:='Flat.inp';

assign(f,filename);

reset(f);

read(f,N);

Total:=0;

for i:=1 to N do

begin

read(f,Poles[i]);

Total:=Total+Poles[i];{纸牌总数}

end;

Average:=Total div N;{最终状态每列纸牌数}

close(f);

End; {Init}

Procedure Compute;{解方程}

var Equations:Array_type;{方程}

min:longint;{方程的最小的解}

i:integer;

Begin {Compute}

Equations[1]:=Poles[1]-Average;

for i:=2 to N-1 do

Equations[i]:=Poles[i]-Average;

for i:=2 to N-1 do

Equations[i]:=Equations[i]+Equations[i-1];

Answers[1]:=0;

for i:=2 to N do

Answers[i]:=(Equations[i-1]-Answers[i-1])*(-1);

min:=Answers[1];

for i:=2 to N do

if min>Answers[i] then min:=Answers[i];

for i:=1 to N do

Answers[i]:=Answers[i]-min;

End; {Compute}

Procedure Find;

Var Move,{纸牌状态}

Answers_Find:Array_type;{每列所需移动总牌数}

Choice:array[1..200,1..2] of Longint;{每列可移动的牌数}

Way:Way_type;{移动方式}

Waynum,{移动次数}

Agreenum,{允许移动牌数}

Movenum,{总剩余移动牌数}

Change:longint;{交换用临时变量}

i,j,k:integer;

Begin {Find}

randomize;

FinalWaynum:=1000000000;

new(FinalWay[1]); new(FinalWay[2]);

new(Way[1]); new(Way[2]);

repeat {repeat}

Movenum:=0;

for i:=1 to N do

Movenum:=Movenum+Answers[i];

Move:=Poles; Answers_Find:=Answers;

Waynum:=0;

repeat{计算每列可移动的牌数}

if Move[1]>=Answers_Find[1] then Choice[1,1]:=Answers_Find[1]

else Choice[1,1]:=Move[1];

if Move[N]>=Answers_Find[N] then Choice[N,1]:=Answers_Find[N]

else Choice[N,1]:=Move[N];

for i:=2 to N-1 do

begin

if Move[i]>=(Answers_Find[i] shl 1) then Choice[i,1]:=Answers_Find[i] else Choice[i,1]:=Move[i] shr 1; Choice[i,2]:=i;

end;

Choice[1,2]:=1; Choice[N,2]:=N;

for i:=1 to 3 do{找出可移动的牌最多的三列}

begin

k:=i;

for j:=i+1 to N do

if Choice[k,1]

Change:=Choice[k,1]; Choice[k,1]:=Choice[i,1]; Choice[i,1]:=Change; Change:=Choice[k,2]; Choice[k,2]:=Choice[i,2]; Choice[i,2]:=Change; end;

k:=random(3)+1;{在最多的三列中任取一列}

{尽可能多地移动这一列的牌}

if (Choice[k,2]>1) and (Choice[k,2]

begin

Agreenum:=Answers_Find[Choice[k,2]];

if (Agreenum*2)>Move[Choice[k,2]] then Agreenum:=Move[Choice[k,2]] div 2;

Move[Choice[k,2]]:=Move[Choice[k,2]]-Agreenum*2;

Move[Choice[k,2]+1]:=Move[Choice[k,2]+1]+Agreenum;

Move[Choice[k,2]-1]:=Move[Choice[k,2]-1]+Agreenum;

Answers_Find[Choice[k,2]]:=Answers_Find[Choice[k,2]]-Agreenum;

Movenum:=Movenum-Agreenum;

end;

if (Choice[k,2]=1) or (Choice[k,2]=N) then

begin

Agreenum:=Answers_Find[Choice[k,2]];

if Agreenum>Move[Choice[k,2]] then Agreenum:=Move[Choice[k,2]];

Move[Choice[k,2]]:=Move[Choice[k,2]]-Agreenum;

if Choice[k,2]=1 then

Move[Choice[k,2]+1]:=Move[Choice[k,2]+1]+Agreenum

Else

Move[Choice[k,2]-1]:=Move[Choice[k,2]-1]+Agreenum;

Answers_Find[Choice[k,2]]:=Answers_Find[Choice[k,2]]-Agreenum;

Movenum:=Movenum-Agreenum;

end;

if Agreenum>0 then

begin

inc(Waynum);

Way[1]^[Waynum]:=Choice[k,2];

Way[2]^[Waynum]:=Agreenum;

end;

until Movenum=0;{剩余的总移动牌数为零即移动完成}

if Waynum

until ((meml[$40:$6c]-time)/18.2)>2; {repeat}{时间允许的情况下不断重复} End; {Find}

Procedure Print;{输出}

var i:integer;

filename:string;{输出文件名}

f:text;{文件}

Begin {Print}

filename:='flat.out';

assign(f,filename);

rewrite(f);

writeln(f,FinalWaynum);{输出总的移动次数}

for i:=1 to FinalWaynum do{依次输出移动的方式}

writeln(f,FinalWay[1]^[i]:3,' ',FinalWay[2]^[i]:4);

close(f);

End; {Print}

BEGIN {main}

Init;

Compute;

Find;

Print;

END. {main}

二、例2的源程序

{$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+} {$M 65520,0,655360}

PROGRAM Uncoil_Resistance;

Type array_type=array[0..100] of real;

Var Resistance:array[0..100] of ^array_type;{所有电阻}

Equations:array[0..100] of ^array_type;{方程组}

Num:array[1..100,1..100] of byte;{电阻编号}

Line:array[1..100,1..2] of byte;{每个编号对应的电阻} Direct:array[1..100] of shortint;{路径方向}

Mark:array[1..100] of shortint;{标记路径上结点的顺序} Connects:array[1..100,1..100] of shortint;{连通性}

Points:set of 1..100;{路径中包含的点}

Lines:set of 1..100;{路径中包含的电阻}

N,

M,

l,

a,b:integer;

R:real;{总电阻}

Procedure Init;{读入电阻信息并初始化}

var filename:string;

f:text;

i,j,k,

p,q:integer;

js:integer;

Begin {Init}

filename:='Input.txt';

assign(f,filename);

reset(f);

readln(f,N);

readln(f,M);

readln(f,a,b);

for p:=1 to 100 do

begin

new(Resistance[p]);

new(Equations[p]);

for q:=0 to 100 do

begin

Resistance[p]^[q]:=0;

Equations[p]^[q]:=0;

end;

end;

js:=0;

for p:=1 to M do

begin

最新设计方案范文合集6篇

1 建设物流实训室的必要性 在社会需求的推动下,20xx年起,全国部分学校开始试办“物流管理”等相关专业,为企业培养和输送物流专业人才。这在一定程度上对物流知识和思想的传播起到了很好的作用,也的确培养了一些物流人才。他们在相关的物流岗位上发挥了作用,有效地促进了企业物流运作的变革和进步。 但是,其中反映出的问题也不少,主要体现在以下几个方面: 1.1 偏重理论培训,缺少实践环节 目前在各种认证体系中,基本上以知识性学习为主,只有少量的实际操作环节。 现代物流业很注重实际操作经验,仅有理论知识难以解决企业的实际业务问题,物流培训也必须以此为重要原则,加强实训功能,注重对实际业务的理解和对实际操作技能的掌握,才能培养出符合企业需求的人才。 1.2 教学手段单一,感性认识与理性认识不能有机结合 目前无论是高校的物流学历教育还是职业培训,普遍存在一个问题,就是教学主要以教师分散授课为主,辅以少量甚至没有参观。学员们无法全面系统地了解物流运作的整个过程,除少量悟性较高的学员外,大多数学员的物流知识结构比较凌乱。 1.3 传统实训方式已不能满足学生和企业的需要 学生实训要求在类似企业实际的环境下,并且实训的设备、软件必须是企业实际应用的,或在企业实际应用基础上改造过来。 随着国内教育教学改革的深入,实训方式创新层出不穷,旧有的实训方式尤其是模拟仿真远远不能满足现有教学的需要。 2 物流实训室设计理念 通过实训室对各节点模拟,从而展现货物的入库、仓储、流通加工、配送、出库等第三方物流企业的供应链流程。在此模拟的供应链上,配备一系列模块化的现代物流设施,如:全自动立体仓库、电子标签辅助拣货系统、电子看板,RF手持设备等,它们各自独立,又互为联系,充分体现了传统的物流运行过程通过信息化实现其战略决策系统化,管理现代化和作业自动化这一现代物流的时代特征,从而在学校实训室内营造了一个类似真实的集物资流和信息流于一体的实训教学环境。 3 实训室方案规划设计 物流实训室平面布局 主要组成部分: 全自动立体仓库及自动分拣:立体货架、全自动堆垛机及输送装置等; 普通仓储货架:重型及轻型货架; 电子标签拣货系统:重力式货架、电子标签分拣系统及拣货台等; 打包封装:多种款式的打包设备; 条码及射频系统:RF手持终端、条码打印机及多种条码阅读设备; 管理岗位:物流软件、PC及桌椅。 4 实训系统功能 之所以要在学校实训室条件下,构建一个类似真实的以第三方物流服务单元为核心的供应链仿真系统,其真实目的是想以此为学校进行现代供应链物流运作管理等相关课程的课堂理论教学提供一个有效的辅助教学手段,并为学生掌握各种现代化,自动化的物流设施设备的操作技能,提供一个实实在在的实训平台。 所以从这个意义上说,我们这套实训系统应具有以下教学实训功能: 4.1 了解和学习物流管理的内容和技术 1、仓储管理系统的操作训练

数据结构与算法基础知识总结

数据结构与算法基础知识总结 1 算法 算法:是指解题方案的准确而完整的描述。 算法不等于程序,也不等计算机方法,程序的编制不可能优于算法的设计。 算法的基本特征:是一组严谨地定义运算顺序的规则,每一个规则都是有效的,是明确的,此顺序将在有限的次数下终止。特征包括: (1)可行性; (2)确定性,算法中每一步骤都必须有明确定义,不充许有模棱两可的解释,不允许有多义性; (3)有穷性,算法必须能在有限的时间内做完,即能在执行有限个步骤后终止,包括合理的执行时间的含义; (4)拥有足够的情报。 算法的基本要素:一是对数据对象的运算和操作;二是算法的控制结构。 指令系统:一个计算机系统能执行的所有指令的集合。 基本运算和操作包括:算术运算、逻辑运算、关系运算、数据传输。 算法的控制结构:顺序结构、选择结构、循环结构。 算法基本设计方法:列举法、归纳法、递推、递归、减斗递推技术、回溯法。 算法复杂度:算法时间复杂度和算法空间复杂度。 算法时间复杂度是指执行算法所需要的计算工作量。 算法空间复杂度是指执行这个算法所需要的内存空间。 2 数据结构的基本基本概念 数据结构研究的三个方面: (1)数据集合中各数据元素之间所固有的逻辑关系,即数据的逻辑结构; (2)在对数据进行处理时,各数据元素在计算机中的存储关系,即数据的存储结构;(3)对各种数据结构进行的运算。 数据结构是指相互有关联的数据元素的集合。 数据的逻辑结构包含: (1)表示数据元素的信息; (2)表示各数据元素之间的前后件关系。 数据的存储结构有顺序、链接、索引等。 线性结构条件:

(1)有且只有一个根结点; (2)每一个结点最多有一个前件,也最多有一个后件。 非线性结构:不满足线性结构条件的数据结构。 3 线性表及其顺序存储结构 线性表由一组数据元素构成,数据元素的位置只取决于自己的序号,元素之间的相对位置是线性的。 在复杂线性表中,由若干项数据元素组成的数据元素称为记录,而由多个记录构成的线性表又称为文件。 非空线性表的结构特征: (1)且只有一个根结点a1,它无前件; (2)有且只有一个终端结点an,它无后件; (3)除根结点与终端结点外,其他所有结点有且只有一个前件,也有且只有一个后件。结点个数n称为线性表的长度,当n=0时,称为空表。 线性表的顺序存储结构具有以下两个基本特点: (1)线性表中所有元素的所占的存储空间是连续的; (2)线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。 ai的存储地址为:adr(ai)=adr(a1)+(i-1)k,,adr(a1)为第一个元素的地址,k代表每个元素占的字节数。 顺序表的运算:插入、删除。(详见14--16页) 4 栈和队列 栈是限定在一端进行插入与删除的线性表,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。 栈按照“先进后出”(filo)或“后进先出”(lifo)组织数据,栈具有记忆作用。用top表示栈顶位置,用bottom表示栈底。 栈的基本运算:(1)插入元素称为入栈运算;(2)删除元素称为退栈运算;(3)读栈顶元素是将栈顶元素赋给一个指定的变量,此时指针无变化。 队列是指允许在一端(队尾)进入插入,而在另一端(队头)进行删除的线性表。rear指针指向队尾,front指针指向队头。 队列是“先进行出”(fifo)或“后进后出”(lilo)的线性表。 队列运算包括(1)入队运算:从队尾插入一个元素;(2)退队运算:从队头删除一个元素。循环队列:s=0表示队列空,s=1且front=rear表示队列满

深入探究多项式乘法的快速算法

深入探究多项式乘法的快速算法 焦作市第一中学 闵梓轩 一、 高精度、多项式与生成函数 1.1 高精度 在OI 中我们有时会碰到一些问题的必要数值超出64位整形的范围,这个时候我们就需要用到高精度方式存储。而高精度数的思想是进制思想的一个具体体现,出于正常人类的习惯,我们所使用的高精度数都采用10进制,即每一位都表示十进制上的一个数,从0~9,更进一步,为了优化高精度数运算所花费的时间与空间,我们采用了万进制,即每一位存0~9999的数,这样同时优化了程序效率,同时在输出上也没有什么太大的问题(每一位不足1000补0即可)。 当然,我们也可以用三进制、五进制、450进制,8964进制的高精度数,虽然因为在输出时会变得非常麻烦而没有人去用,但是它们的可行性正对应了进制的一种思想,比如一个十进制数12450,它的算数含义是0123410*010*510*410*210*1++++二进制数10010,它的算数含义是1 42*12*1+(把为0的位忽略),这样形如 ),0(*0N a x a x a i i n i i i ∈<≤∑=的每一位上的数字在数值表示上都乘上了某个数的一个幂的数正是进制思想的基础。在编程实现上这样的一个数我们通常用整形数组来表示,a[i]表示i 次项的系数,如果数组长度为n ,那么学过高精度的人都知道两个数相加的时间复杂度是θ(n),两个数相乘的时间复杂度是O(n^2),在信息学竞赛中,这样的时间复杂度足以满足大部分题目的需求,因为一般来说我们的数值都不会达到10^100000次方这么大。 1.2多项式 熟悉数学的我们能够发现上面这样的一个式子,如果忽略了括号中的内容的限制,那么 我们可以发现这样的式子其实就是我们所学的n 次多项式∑∞==0*)(i i i x a x A , 比如十进制数12450就是05421234++++x x x x 当x=10的时候的数值嘛。所以,当一个值b 代入多项式A(x)时,这个式子也就变成了一个值A(b)。但是要注意的是多项式的系数是没有限制的,所以多项式可以用浮点数组表示,而且我们可以惊奇地发现多项式的加法和乘法在代码上除了不需要进位之外和高精度是一样的。所以说,我们所见的b 进制数值,就是一个当x=b 的多项式的取值而已。但是在多项式中,x 的意义仅仅是一个符号而已,ai*x^i 你可以理解为ai 在数组的第i 个位置。 我们需要注意的是,n 次多项式的数组表示需要用到n+1个数,为什么?因为有n 个含x 的项和一个常数项,所以我们一般把多项式A(x)的最高次项的次数+1称作为这个多项式的次数界(次数界的真正意义是系数不为零的最高次项的次数+1,下文中提到的“次数界“为

设计方案范文合集八篇

设计方案范文合集八篇 设计方案范文合集八篇 为了确保事情或工作有序有力开展,常常需要预先准备方案,方案属于计划类文书的一种。方案应该怎么制定呢?以下是收集整理的设计方案8篇,仅供参考,希望能够帮助到大家。 设计方案篇1 一、活动目的 1、培养学生合作探究的精神与分析问题、解决问题的能力。 2、培养和增强学生的地理学习兴趣,关注身边的地理知识。 3、懂得多渠道收集课外资料。 二、活动时间及地点 三、活动方式 根据课室座位安排情况,以小组为单位,每两排组成一组,共分为四大组。以“野外考察员的困难”为主要内容,展开几个阶段的小组间的地理知识竞赛。 四、参与人员 全体同学 五、活动流程 活动刚开始,教师以一名“地理野外考察员”的身份登场,讲述他一天所遇到的困难。困难一:迷失了方向 1、活动准备

在活动前的地理课,向学生提出“当你迷失野外,你该如何来辨别方向”这一问题,让学生课后根据自己的生活经验或向有经验的长辈请教等各类方式收集有关方法,并以作业形式上交。 2、活动过程 学生以小组为单位,全组成员上交一份解决方法,教师当场逐一宣读,答对1个得1分,答错不得分。 3、活动小结 教师讲解野外辨别方向常用的几种方法。 附: 1)平时参考地图和指南针,同时积极观察周围的地形以及身边的植物来判断正确位置。 2)利用太阳 ①冬季日出位置是东偏南,日落位置是西偏南;夏季日出位置是东偏北,日落位置是西偏北;春分、秋分前后,日出正东,日落正西。 ②只要有太阳,就可以使用手表来辨别方向。按24小时制读出当时的时刻,将小时数除以二,将得到一个小时数。把手表水平放在手上或者地上,让手表的这个时刻对准太阳所在的方位,这时手表表面12点所指的方向是北方,6点所指的方向是南方。 设计方案篇2 1、幼儿园的功能组成 包括幼儿生活用房、服务用房、和供应用房三部分。 2、幼儿园的功能分析

计划方案合集10篇

计划方案合集10篇 计划方案合集10篇 为了确保我们的努力取得实效,通常会被要求事先制定方案,方案是在案前得出的方法计划。那么什么样的方案才是好的呢?下面是小编帮大家整理的计划方案10篇,仅供参考,大家一起来看看吧。计划方案篇1 各林场(所):为进一步深入贯彻《甘肃省自然保护区条例》及《XX市人民政府关于进一步加强封山禁牧工作的通知》和《XX林业总场封山禁牧管理暂行办法》精神,巩固XX林区近年来的封山禁牧成果,加快生态环境建设步伐,现就我场XX年封山禁牧工作安排如下:一、明确指导思想我场的封山禁牧工作,坚持统筹规划,以封为主,禁牧与圈养、恢复生态和保护林农利益相结合的指导思想,按照《森林法》、《森林法实施条例》及市局、总场关于封山禁牧工作的总体部署和要求,坚持把加强封山禁牧工作作为恢复植被、改善生态、提高林木尽快成林的重要措施,作为改善人居环境,促进人与自然和谐相处,构建和谐林区的重要保障。各林场(所)要从促进林区经济社会可持续发展的大局出发,切实增强责任感和紧迫感,采取切实有效的措施,加大工作力度,真正把封山禁牧工作抓紧抓好,确保取得实效。二、细化工作任务一要提高认识,统筹安排,强化责任,分解任务。各林场(所)主要领导要切实提高认识,将封禁工作放在同林业生产同等重要的位置上,同安排同部署,并根据市局、总场封禁工作会议精神,延伸签订封禁工作目标管理责任书,确保封禁工作责任分解到站,细化到人。二要广泛宣传动员,营造良好舆论氛围。各林场(所)要采取召开干部会、群众大会、养殖户专题会、管护人员工作会、发放宣传资料、刷写宣传标语、悬挂横幅、制做固定宣传碑等多种形式,广泛宣传《森林法》、《森林法实施条例》、《XX 市人民政府关于进一步加强封山禁牧工作的通知》《XX、林业总场封山禁牧管理暂行办法》等有关政策法规文件,教育林区群众充分认识封山禁牧的重大意义,明确封山禁牧的范围、措施和责任,引导群众正确处理长远利益与当前利益、整体利益与局部利益、封山禁牧与畜牧养殖的关系,真正把封山禁牧工作变为广大群众的自觉行动,为封山禁牧创造良好的舆论氛围。三要详细调查摸底,掌握

浙教版七年级数学下册多项式的乘法作业练习

3.3 多项式的乘法 一.选择题(共4小题) 1.已知(x﹣m)(x+n)=x2﹣3x﹣4,则m﹣n的值为() A.1 B.﹣3 C.﹣2 D.3 2.(x2+ax+8)(x2﹣3x+b)展开式中不含x3和x2项,则a、b的值分别为()A.a=3,b=1 B.a=﹣3,b=1 C.a=0,b=0 D.a=3,b=8 3.若2x3﹣ax2﹣5x+5=(2x2+ax﹣1)(x﹣b)+3,其中a、b为整数,则a+b之值为何?()A.﹣4 B.﹣2 C.0 D.4 4.下列计算错误的是() A.(x+a)(x+b)=x2+(a+b)x+ab B.(x+a)(x﹣b)=x2+(a+b)x+ab C.(x﹣a)(x+b)=x2+(b﹣a)x+(﹣ab) D.(x﹣a)(x﹣b)=x2﹣(a+b)x+ab 二.填空题(共8小题) 5.若(x+1)(x+a)展开是一个二次二项式,则a= 6.定义运算:a⊕b=(a+b)(b﹣2),下面给出这种运算的四个结论:①3⊕4=14;②a⊕b=b⊕a; ③若a⊕b=0,则a+b=0;④若a+b=0,则a⊕b=0.其中正确的结论序号为.(把 所有正确结论的序号都填在横线上) 7.已知m+n=3,mn=﹣6,则(1﹣m)(1﹣n)= . 8.已知(3x﹣p)(5x+3)=15x2﹣6x+q,则p+q= . 9.如图,正方形卡片A类、B类和长方形卡片C类各若干张,如果要拼一个长为(a+3b),宽为(2a+b)的长方形,则需要C类卡片张. (第9题图) 10.一个三角形的底边长为(2a+6b),高是(3a﹣5b),则这个三角形的面积是.11.计算下列各式,然后回答问题. (a+4)(a+3)= ;(a+4)(a﹣3)= ; (a﹣4)(a+3)= ;(a﹣4)(a﹣3)= .

社会网络分析法

第十三章社会网络分析法 近几十年来社会网络分析法有了迅速的发展,它已被“泛应用到了社会学、政治学、人类学和社会政策研究等多个领域。本章我们将侧重介绍社会网络分析法的基本概念、历史、主要分析技术及其应用。 第一节社会网络分析的概念 一、什么是社会网络分析 网络指的是各种关联,而社会网络(social network)即可简单地称为社会关系所构成的结构。故从这一方面来说,社会网络代表着一种结构关系,它可反映行动者之间的社会关系。构成社会网络的主要要素有: 行动者(actor):这里的行动者不但指具体的个人,还可指一个群体、公司或其他集体性的社会单位。每个行动者在网络中的位置被称为“结点(node)”。 关系纽带(relational tie):行动者之间相互的关联即称关系纽带。人们之间的关系形式是多种多样的,如亲属关系、合作关系、交换关系、对抗关系等,这些都构成了不同的关系纽带。 二人组(dyad):由两个行动者所构成的关系。这是社会网络的最简单或最基本的形式,是我们分析各种关系纽带的基础。 二人组(triad):由三个行动者所构成的关系。 子群(subgroup):指行动者之间的任何形式关系的子集。 群体(group):其关系得到测量的所有行动者的集合。 社会网络分析是对社会网络的关系结构及其属性加以分析的一套规范和方法。它又被称结构分析(structural analysis),因为它主要分析的是不同社会单位(个体、群体或社会)所构成的社会关系的结构及其属性。 从这个意义上说,社会网络分析不仅是对关系或结构加以分析的一套技术,还是一种理论方法——结构分析思想。因为在社会网络分析学者看来,社会学所研究的对象就是社会结构,而这种结构即表现为行动者之间的关系模式。社会网络分析家B·韦尔曼(Barry Wellman)指出:“网络分析探究的是深层结构——隐藏在复杂的社会系统表面之下的一定的网络模式。”例如,网络分析者特别关注特定网络中的关联模式如何通过提供不同的机会或限制,从而影响到人们的行动。 韦尔曼指出,作为一种研究社会结构的基本方法,社会网络分析具有如下基本原理: 1.关系纽带经常是不对称地相互作用着的,在内容和强度上都有所不同。 2.关系纽带间接或直接地把网络成员连接在一起;故必须在更大的网络结构背景中对其加以分析。 3.社会纽带结构产生了非随机的网络,因而形成了网络群(network clusters)、网络界限和交叉关联。

社会网络分析方法(总结)

社会网络分析方法 SNA分析软件 ●第一类为自由可视化SNA 软件,共有Agna 等9 种软件,位于图1 的右上角,这类软件可以自 由下载使用,成本低,但一般这类软件的一个共同缺点是缺乏相应的如在线帮助等技术支持; ●第二类为商业可视化SNA 软件,如InFlow 等3种,这类软件大都有良好的技术支持;(3)第 三类为可视化SNA 软件,如KliqFinder 等4 种,这类软件一般都是商业软件,但他们都有可以通过下载试用版的软件,来使用其中的绝大部分功能 ●第四类为自由非可视化SNA 软件,如FATCAT 等7 种,这类软件的特点是免费使用,但对SNA 的分析结果以数据表等形式输出,不具有可视化分析结果的功能; ●第五类为商业非可视化SNA 软件,只有GRADAP 一种,该软件以图表分析为主,不具有可 视化的功能。在23 种SNA 软件中,有16 种SNA 软件,即近70%的SNA 软件,具有可视化功能。 SNA分析方法 使用SNA 软件进行社会网络分析时,一般需要按准备数据、数据处理和数据分析三个步骤进行。尽管因不同的SNA 软件的具体操作不同,但这三个步骤基本是一致的。 1.准备数据,建立关系矩阵 准备数据是指将使用问卷或其他调查方法,或直接从网络教学支撑平台自带的后台数据库中所获得的用于研究的关系数据,经过整理后按照规定格式形成关系矩阵,以备数据处理时使用。这个步骤也是SNA 分析的重要的基础性工作。SNA 中共有三种关系矩阵:邻接矩(AdjacencyMatrix)、发生阵(Incidence Matrix)和隶属关系矩阵(Affiliation Matrix)。邻接矩阵为正方阵,其行和列都代表完全相同的行动者,如果邻接矩阵的值为二值矩阵,则其中的“0”表示两个行动者之间没有关系,而“1”则表示两个行动者之间存在关系。然而我们

精选方案策划合集5篇

精选方案策划合集5篇 方案策划篇1 一、日本寿司店的总体目标 2. 产品定价及收入目标 产品定价寿司:甜鸡蛋寿司 12元加州反卷寿司12元烤鳗鱼寿司 12元樱花反卷寿司12元香辣牛肉寿司12元鱼松蟹棒寿司12元鱼松火腿寿司12元金枪鱼寿司8元球生菜寿司8元紫薯红薯寿司8元鱼松寿司 8元红心蛋黄寿司 8元飞鱼子寿司8元什锦色拉寿司 7元水果寿司 7元果冻寿司 6元火腿寿司 6元手卷:黄瓜手卷 5元/2个鱼松手卷 7元/2个金枪鱼手卷7元/2个色拉手卷 7元/2个烤鳗鱼手卷7元/2个饭团:红心蛋黄饭团 5元/2个紫薯饭团 5元/2个鱼松饭团 7元/2个金枪鱼饭团7元/2个火腿饭团 7元/2个预计每日将会有50份订单,每份订单平均10元,平均每份订单成本3元利润7元。每日将获得利润10x50=500元每日将获纯利润7x50=350元 收入目标 月收入:20190.00元年收入:240000.00元 员工工资以及支出经费:40000.00元年净收入:201900.00元 3. 发展目标 将日本寿司店发展成特色小资情调的店子。主要顾客为情侣、中

高消费水平学生、喜爱日韩的女生等。 本店以优雅的环境,日本特色的风味为主打。在提供就餐的同时能享受到不一样的优质服务。且寿司分为中高档,既能满足高消费水平学生的消费欲望,同时满足一般学生的购买能力。 立志将日本寿司店在我校附近立足,并以优质传统的特色服务收揽各新老顾客。 二、市场状况分析 1. 市场需求 自然生长的稻米和最新鲜的鱼生,用极致简单又饶有趣味的生食方式组合在一起,寿司已经迅速发展成为全世界都无法抗拒的美味新宠。寿司风潮正全面来袭。走进店堂,就可以看到一碟碟的寿司由传送带传送着,从眼前回转而过。自己伸手从传送带上取下自己爱吃的寿司,最后根据所吃的碟数来结账,这就是寿司。因其价格低廉、轻松随意,已经越来越受到普通消费者的欢迎。 作为全世界正越来越风行的日本寿司,正被越来越多追求品位和健康的人所钟爱。纽约、巴黎、伦敦、悉尼、香港,时髦都市中的寿司店,门前永远不缺时髦男女耐心排长队。寿司经营店也在中国不断增长。什么原因呢?它的魅力在于:第一、口味鲜美, 而且丰富多样的品种满足了不同口味、不同喜好的人们。寿司的制作原料可谓包罗万象, 不拘一格,从鱼类、贝类到牛肉、禽蛋甚至蔬菜、瓜果都可以制成风味各异的寿司。 第二、寿司符合人们健康饮食的标准。日本饮食在养生方面具有

多项式的乘法典型例题(整理)

多项式的乘法 多项式的乘法的法则: 一般地,多项式与多项式相乘,先用一个多项式的每一项乘以另一个多项式的每一项。然后把所得的积相加。 整式的乘法运算与化简 多项式的乘法 转化为单项式 与多项式相乘 代数式的化简求值 典型例题 一.整式的计算 1.)1-n -m )(n 3m (+ 2.若c bx ax x x ++=+-2 )3)(12(,求c b a ,,的值. 二.确定多项式中字母的值 1.多项式)32)(8x mx -+(中不含有x 的一次项,求m 的值? 2.若))(23(22q px x x x +++-展开后不含3x 和2x 项,求q p ,的值。

三.与方程相结合 解方程:8)2)(2(32-=-+x x x x 四.化简求值: 化简并求值:)3(2)42)(2(2 2--++-m m m m m ,其中2=m 五.图形应用 1.有若干张如图所示的正方形A 类、B 类卡片和长方形C 类卡片,如果要拼成一个长为(2a +b ),宽为(a +2b )的大长方形,则需要C 类卡片 张. 2.如图所示的正方形和长方形卡片若干张,拼成一个长为(a+3b ),宽为(2a+b )的矩形,需要这三类卡片共________ 张. 3.如图,在边长为a 的正方形中挖掉一个边长为b 的小正方形,把余下的部分剪成两个直角梯形后,再拼成一个长方形,通过计算阴影部分的面积,验证了一个等式,这个等式是( ) A .a 2-b 2=(a +b )(a -b ) B .(a +b )2=a 2+2ab +b 2 C .(a -b )2=a 2-2ab +b 2 D .a 2-ab =a (a -b )

【实用】工作计划合集六篇

【实用】工作计划合集六篇 工作计划篇1 为了贯彻落实“安全第一,预防为主,综合治理”的方针,强化安全生产目标管理。结合工厂实际,特制定20xx年安全生产工作计划,将安全生产工作纳入重要议事日程,警钟长鸣,常抓不懈。 一、下半年目标 实现下半年无死亡、无重伤、无重大生产设备事故,无重大事故隐患,工伤事故发生率低于厂规定指标,综合粉尘浓度合格率达80%以上(如下表)。 二、指导思想 要以公司对20xx年安全生产目标管理责任为指导,以工厂安全工作管理制度为标准,以安全工作总方针“安全第一,预防为主。”为原则,以车间、班组安全管理为基础,以预防重点单位、重点岗位重大事故为重点,以纠正岗位违章指挥,违章操作和员工劳动保护穿戴为突破口,落实各项规章制度,开创安全工作新局面,实现安全生产根本好转。 三、牢固树立“安全第一”的思想意识 各单位部门要高度重视安全生产工作,把安全生产工作作为重要的工作来抓,认真贯彻“安全第一,预防为主”的方针,进一步增强安全生产意识,出实招、使真劲,把“安全第一”的方

针真正落到实处,通过进一步完善安全生产责任制,首先解决领导意识问题,真正把安全生产工作列入重要议事日程,摆到“第一”的位置上,只有从思想上重视安全,责任意识才能到位,才能管到位、抓到位,才能深入落实安全责任,整改事故隐患,严格执行“谁主管,谁负责”和“管生产必须管安全”的原则,力保安全生产。 四、深入开展好安全生产专项整治工作 根据工厂现状,确定出20xx年安全生产工作的重点单位、重点部位,完善各事故处理应急预案,加大重大隐患的监控和整改力度,认真开展厂级月度安全检查和专项安全检查,车间每周进行一次安全检查,班组坚持班中的三次安全检查,并要求生产科、车间领导及管理人员加强日常安全检查,对查出的事故隐患,要按照“三定四不推”原则,及时组织整改,暂不能整改的,要做好安全防范措施,尤其要突出对煤气炉、锅炉、硫酸罐、液氨罐等重要部位的安全防范,做好专项整治工作,加强对易燃易爆、有毒有害等危险化学品的管理工作,要严格按照《安全生产法》、《危险化学品安全管理条例》强化专项整治,加强对岗位现场的安全管理,及时查处违章指挥,违章操作等现象,限度降低各类事故的发生,确保工厂生产工作正常运行。 五、继续加强做好员工安全教育培训和宣传工作 工厂采取办班、班前班后会、墙报、简报等形式,对员工进行安全生产教育,提高员工的安全生产知识和操作技能,定期或

数据结构与算法基础

数据结构与算法基础 一.判断题: 1.数据元素是数据的最小单位。 2.数据结构是带有结构的数据元素的集合。 3.数据结构、数据元素、数据项在计算机中的映像(或表示)分别称为存储结构、结点、数据域。 4.数据项是数据的基本单位。 5.数据的逻辑结构是指各数据元素之间的逻辑关系,是用户按使用需要而建立的。 6.数据的物理结构是指数据在计算机内实际的存储形式。 7.算法和程序没有区别,所以在数据结构中二者是通用的。 答案: 1.错误 2.正确 3.正确 4.错误 5.正确 6.正确 7.错误 二. 数据结构是研究数据的 A 和 B 以及它们之间的相互关系,并对这种结构定义相应的 C ,设计出相应的 D ,而确保经过这些运算后所得到的新结构是 E 结构类型。 供选择答案: A、B:a理想结构b抽象结构c物理结构d逻辑结构 C、D、E:a运算b算法c结构d规则e现在的f原来的 答案: A:cB;dC:aD:bE:f 三.从供选择的答案中选取正确的答案填在下面叙述中的横线上: 1. A 是描述客观事物的数字、字符以及所能输入到计算机中并被计算机程序加工处理的符号的集合。 2. B 是数据的基本单位,即数据集合中的个体。有时一个 B 由若干个___C____组成,在这种情况下,称 B 为记录。 C 是数据的最小单位。而由记录所组成的线性表为 D 。 3. E 是具有相同特性的数据元素的集合,是数据的子集。 4. F是带有结构特性数据元素的集合。 5. 被计算机加工的数据元素不是孤立无关的,它们彼此之间一般存在着某种联系。通常将数据元素的这种关系称为G。 6. 算法的计算量的大小称为计算的H。 供选择的答案: A-F:a数据元素b符号c记录d文件e数据f数据项g数据对象h关键字i数据结构

数据结构 多项式乘法

实习报告 一、实习题: 请写出计算两个以单链接表表示的多项式相乘的程序。 1.需求分析和说明 两个多项式相乘,可以利用两个多项式的加法来实现,因为乘法运算可以分 解为一系列的加法运算:C(x)=A(x)*B(x)=A(x)*(b1x+b2x2+…+b n x n)=∑ = n i i i x b x A 1 ) ( 先用其中一个多项式去乘以另一个多项式的每一项,得出的若干个多项式按照一定的顺序相加,即幂不同的按照升幂排列,幂相同的将系数相加。 例如: 对于(X->1+2X->2)*(2X->2+4X->3). X->1*(2X->2+4X->3)=2X->3+4X->4; 2X->2*(2X->2+4X->3)=4X->4+8X->5; 排列结果:2X->3+8X-4+8X->5 2.设计 用两个单链表的存储两个多项式,每个结点包含单项式的系数,幂和指向下一个元素地址的指针。用其中的一个多项式乘以另一个多项式的每一项,随后将所得结果按照升幂顺序排列,最后得到结果。 存储结构: //单项式结构 struct Term { float coef; // 系数。 int exp; // 幂指数。 Term( float c, int e) { coef = c; exp = e;} Term( ) { } friend int operator == (const Term & L, const Term & T ) { return L.exp == T.exp; } friend int operator > (const Term & L, const Term & T ) { return L.exp > T.exp; } friend int operator < (const Term & L, const Term & T ) { return L.exp < T.exp; } friend Term & operator += ( Term & L, const Term & T ) { L.coef += T.coef; return L; } //幂指数相同,则系数相加。 friend Term & operator *=(Term &L, const Term &T){ //实现单项式乘法 L.coef*=T.coef; L.exp+=T.exp;

【精选】计划方案合集9篇

【精选】计划方案合集9篇 计划方案合集9篇 为有力保证事情或工作开展的水平质量,时常需要预先制定一份周密的方案,方案是从目的、要求、方式、方法、进度等方面进行安排的书面计划。那么大家知道方案怎么写才规范吗?以下是小编为大家收集的计划方案9篇,仅供参考,大家一起来看看吧。计划方案篇1 一指导思想深入学习《幼儿园教育指导纲要》,深刻把握《纲要》精髓,高举素质教育的旗帜,扮演好教师的多重角色,充分认知和尊重幼儿生命特性,遵循幼儿身心发展规律和学习特点,自觉创造与生命相和谐、与个体生命相一致的教育;在“存精、吸纳、创新”的课程研究总原则下,突显语言特色,坚持课程与课题研究整合相融求效益,不断深化园本课程建设,推动教育科研向纵深发展。 二、工作目标 1、立足实际,深入课改,把《纲要》精神转化为实际的、科学的教育实践能力,促进教师专业化成长。 2、突显我园语言教育特色,向全市展示教育成果。 3、开拓教育资源,在有目的、有准备的生活实践中提高幼儿语言交往能力。三、具体内容及措施(一)立足实际,在课改中促进教师的专业化成长以本园实际为基点的课程改革和课程实施是最具说服力和生命力的,脚踏实地研究课程的过程本身就是一个促进教师专业化成长的过程。 1、咀嚼消化有关理论,厚实实践基础随着终身教育的提出和学习化社会的到来,基础教育的功能正在被重新定义。我们必须根据新的基础教育理念来调整幼儿教育的价值取向,在社会和教育的整体结构中,正确而清醒地把握幼教的实践方向。要求教师根据新的基础教育理念来审视和反思自己的工作,自觉地规范自己的教育行为,理性地构建自己的教育观念。学习重点:《从理念到行为——幼儿园教育指导纲要行动指南》、《儿童的一百种语言解读》、有关幼儿语言教育的最新理论等。学习形式:自学——小组研讨——园部主题性“头脑风暴”——教育实例 2、反思总结,创造性实施课程以主题形式组织、实施课程是课程实践的主要形式。我园一直使用南师大与信谊基金出版社共同出版的《幼儿园活动整合课程》,这一课程是帮助我们更好落实新《纲要》精神、将先进教育观念落实到教育行为中去

全国计算机二级第1章数据结构与算法

考点1 算法的复杂度 【考点精讲】 1.算法的基本概念 计算机算法为计算机解题的过程实际上是在实施某种算法。 算法的基本特征:可行性、确定性、有穷性、拥有足够的情报。 2.算法复杂度 算法复杂度包括时间复杂度和空间复杂度。 名称 描述 时间复杂度 是指执行算法所需要的计算工作量 空间复杂度 是指执行这个算法所需要的内存空间 考点2 逻辑结构和存储结构 【考点精讲】 1.逻辑结构 数据的逻辑结构是对数据元素之间的逻辑关系的描述,它可以用一个数据元素的集合和定义在此集合中的若干关系来表示。数据的逻辑结构有两个要素:一是数据元素的集合,通常记为D;二是D上的关系,它反映了数据元素之间的前后件关系,通常记为R。一个数据结构可以表示成 B=(D,R) 其中B表示数据结构。为了反映D中各数据元素之间的前后件关系,一般用二元组来表示。例如,如果把一年四季看作一个数据结构,则可表示成 B =(D,R) D ={春季,夏季,秋季,冬季} R ={(春季,夏季),(夏季,秋季),(秋季,冬季)} 2.存储结构 数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。 由于数据元素在计算机存储空间中的位置关系可能与逻辑关系不同,因此,为了表示存放在计算机存储空间中的各数据元素之间的逻辑关系(即前后件关系),在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。 一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接等存

储结构。 顺序存储方式主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系来体现。 链式存储结构就是在每个结点中至少包含一个指针域,用指针来体现数据元素之间逻辑上的联系。 考点3 线性结构和非线性结构 【考点精讲】 根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结构满足下列两个条件: (1)有且只有一个根结点; (2)每一个结点最多有一个前件,也最多有一个后件。 则称该数据结构为线性结构。线性结构又称线性表。在一个线性结构中插入或删除任何一个结点后还应是线性结构。栈、队列、串等都线性结构。 如果一个数据结构不是线性结构,则称之为非线性结构。数组、广义表、树和图等数据结构都是非线性结构。 考点4 栈 【考点精讲】 1.栈的基本概念 栈(stack)是一种特殊的线性表,是限定只在一端进行插入与删除的线性表。在栈中,一端是封闭的,既不允许进行插入元素,也不允许删除元素;另一端是开口的,允许插入和删除元素。通常称插入、删除的这一端为栈顶,另一端为栈底。当表中没有元素时称为空栈。栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。 栈是按照“先进后出”或“后进先出”的原则组织数据的。例如,枪械的子弹匣就可以用来形象的表示栈结构。子弹匣的一端是完全封闭的,最后被压入弹匣的子弹总是最先被弹出,而最先被压入的子弹最后才能被弹出。 2.栈的顺序存储及其运算 栈的基本运算有三种:入栈、退栈与读栈顶元素。 (1)入栈运算:入栈运算是指在栈顶位置插入一个新元素。 (2)退栈运算:退栈是指取出栈顶元素并赋给一个指定的变量。 (3)读栈顶元素:读栈顶元素是指将栈顶元素赋给一个指定的变量。 考点5 队列 【考点精讲】 1.队列的基本概念 队列是只允许在一端进行删除,在另一端进行插入的顺序表,通常将允许删除的这一端称为队头,允许插入的这一端称为队尾。 当表中没有元素时称为空队列。 队列的修改是依照先进先出的原则进行的,因此队列也称为先进先出的线性表,或者后进后出的线性表。例如:火车进遂道,最先进遂道的是火车头,最后是火车尾,而火车出遂道的时候也是火车头先出,最后出的是火车尾。若有队列: Q =(q1,q2,…,qn) 那么,q1为队头元素(排头元素),qn为队尾元素。队列中的元素是按照q1,q2,…,qn 的顺序进入的,退出队列也只能按照这个次序依次退出,即只有在q1,q2,…,qn-1 都退队之后,qn才能退出队列。因最先进入队列的元素将最先出队,所以队列具有先进先出的

多项式算法

#include #include #include #include #include #define NULL 0 //************************************************** typedef struct LNode { float coef;//系数 int exp;//指数 struct LNode *next; }LNode, *Polyn; //************************************************** //销毁传递过来的链表【多项式】 void DestroyPolyn(Polyn &L) { Polyn p; p=L->next; while(p) { L->next=p->next; free(p); p=L->next; } free(L); } //************************************************** /*判断指数是否与多项式中已存在的某项相同*/ int JudgeExp(Polyn L,Polyn e) { Polyn p; p=L->next; while(p!=NULL&&(e->exp!=p->exp)) p=p->next; if(p==NULL) return 0; else return 1; } //******************************************************** //创建一个项数为n的多项式,有头结点 void CreatePolyn(Polyn &L,int n)

办公室工作计划和思路合集7篇

办公室工作计划和思路合集7篇 办公室工作计划篇1 秋风习习,满怀美好的憧憬,我们迎来了崭新的学年。在新的学年里,在学院老师的正确指导下,我自律委员会办公室将继续发扬“脚踏实地,在平凡中追求进步”的精神,始终秉着“为同学服务”的宗旨,以高度的工作热情和认真负责的工作态度,团结合作、锐意进取,做好办公室的本职工作,同时进行工作上的创新,以迎接新一学年的工作。本学期的工作计划如下: 一、坚持不懈,继续稳步推进各项常规工作我部门的工作主要可以分为两类:对内工作和对外工作A.对外工作——做好自律委的宣传工作及纳新工作(1)制作迎接新生需要的宣传海报,摆放在各寝室楼下和文楼大厅处。更换文楼四楼的橱窗内容,将其更换为新生军训常识,为10届新生提供参考。 (2)制作红榜,公布我自律委换届改选结果,将其张贴在文楼四楼宣传栏处。 (3)在今年国庆十一放假之前,制作有关“十一假期”的安全海报,提醒大家注意各方面的问题,并张贴在文楼一楼大厅展板处。 (4)根据自律委其他四个部门本学年要举办的活动,对活动进行活动前的宣传以及活动后的总结,以及负责活动会场的布置。对于我自律委举办的每一次活动,做到活动前一张宣[本文来自]传海报,活动后一期橱窗总结。在活动举办期间,我办公室还负责会场布置,人员位置安排等,协助各部门把活动办好。

(5)根据生活部对教室的卫生检查情况,及时更替检查结果公布。 (6)根据舍务部对寝室的检查结果,每月制作两张白榜,公布本月优秀寝室和不达标寝室。 (7)对自律委办公室每部的墙面进行重新装饰。 (8)纳新前,制作海报,对我组织进行宣传,并组织有意愿加入我组织的同学进行报名以及面试。 B.对内工作——做好自律委内部事务管理工作(1)根据换届改选结果,统计每个人的联系方式,建立内部成员新档案。 (2)为我自律委全体例会找好会议地点,并进行通知。 (3)每次例会,做好会议记录,记录人员出勤情况。 (4)随时及时的传达我自律委内部的各项通知。 二、以服务同学为依托,开展特色活动(1)初定于11月份,举办一次手工艺品大赛。 (2)做自律委发展历程的总结书。搜集自律委成立以来的文字资料以及照片,形成文字版的自律委发展历程总结书。 新学期里,我部门将始终以饱满的工作热情和认真负责的态度完成各项工作,团结一致,开拓创新,力求做到更好。我们始终坚信,在大家的共同努力下,我们的学生工作一定能交上一份满意的答卷。 办公室工作计划篇2 根据学校新学期的工作思路,发扬团结协作、敬业奉献精神,以促进学生发展、教师发展、学校发展为根本,加强信息工作,加强制度建设,提高工作效率,推进学校各项工

算法合集之《对块状链表的一点研究》

在线代理|网页代理|代理网页|https://www.360docs.net/doc/d17074439.html, 1 对块状链表的一点研究 山西大学附中 苏煜 【摘要】 本文主要介绍了块状链表的概念,如何扩展块状链表,讨论了块状链表的性能以及在信息学竞赛中应用块状链表的利与弊,最后简要介绍了块状链表思想在实际生活中的应用。 【关键词】 块状链表 分块大小 性能 块状链表的扩展 模拟 骗分 一、什么是块状链表 我们先从题目入手,看看什么是块状链表: NOI2003 editor 【题目大意】 一些定义: 文本:由0个或多个ASCII 码在闭区间[32, 126]内的字符(即空格和可见字符)构成的序列。 光标:在一段文本中用于指示位置的标记,可以位于文本首部,文本尾部或文本的某两个字符之间。 文本编辑器:为一个包含一段文本和该文本中的一个光标的,并可以对其进行如下六条操作的程序。如果这段文本为空,我们就说这个文本编辑器是空的。 操作名称 输入文件中的格式 功能 MOVE(k) Move k 将光标移动到第k 个字符之后,如果k =0,将光标移 到文本开头 INSERT(n, s) Insert n ? S 在光标处插入长度为n 的字符串s ,光标位置不变,n ≥ 1 DELETE(n) Delete n 删除光标后的n 个字符,光标位置不变,n ≥ 1 GET(n) Get n 输出光标后的n 个字符,光标位置不变,n ≥ 1 PREV() Prev 光标前移一个字符 NEXT() Next 光标后移一个字符 比如一个空的文本编辑器依次执行操作INSERT(13, “Balanced tree ”),MOVE(2),DELETE(5),NEXT(),INSERT(7, “ editor ”),MOVE(0),GET(16)后,会输出“Bad editor tree ”。

相关文档
最新文档