NOI国家集训队论文分类(至2008)(摘抄自C博客)讲解
- 格式:doc
- 大小:58.00 KB
- 文档页数:9
浅谈图论模型的建立与应用广东省中山市第一中学黄源河【关键字】图论模型、建立、转化【摘要】在近几年的信息学竞赛中,图论题目层出不穷。
图论作为一个新生的数学分支,相比其他数学分支来说,具有许多自有的特性。
利用图论解题,通常具有高效、简洁的便利。
有了这门工具,并不意味就能很好地解决问题,还在于我们能否熟练地识别与建立一系列的图论模型。
本文通过一些实例,简单地介绍一下图论建模的方法。
【正文】引言应用数学知识解题时,首先要通过对实际问题的分析,研究组建用以描述这个问题的数学模型。
使用数学的理论和方法对模型进行分析从而得到结果,再返回去解决现实的实际问题。
图论模型是一类特殊的数学模型,建立图论模型,就是要从问题的原型中,抽取对我们有用的信息和要素,把问题抽象为点、边、权的关系。
经过图论建模之后,杂乱无章的信息变得有规可寻,要素的内在联系体现在了点、边、权的关系。
有不少经典的图论模型可以直接用特定的算法解决,一些复杂的问题,只要能认清问题的本质,把握问题的关键,建立合适的图论模型,往往能转化为我们熟悉的经典问题。
本文要写的,正是我在图论建模方面的一点心得与认识。
例题分析〖例题1〗Place the Robots (ZOJ)[问题大意]有一个N*M(N,M<=50)的棋盘,棋盘的每一格是三种类型之一:空地、草地、墙。
机器人只能放在空地上。
在同一行或同一列的两个机器人,若它们之间没有墙,则它们可以互相攻击。
问给定的棋盘,最多可以放置多少个机器人,使它们不能互相攻击。
[分析]在问题的原型中,草地,墙这些信息不是我们所关心的,我们关心的只是空地和空地之间的联系。
因此,我们很自然想到了下面这种简单的模型:以空地为顶点,有冲突的空地间连边,我们可以得到下面的这个图:那么,问题转化为求图的最大独立集问题。
众所周知,这是NP-完全问题。
看来,建立这样的模型,没有给问题的求解带来任何便利,我们必须建立一个行之有效的新模型。
二分法与统计问题淮阴中学李睿[关键字]线段树二叉树二分法[摘要]我们经常遇到统计的问题。
这些问题的特点是,问题表现得比较简单,一般是对一定范围内的数据进行处理,用基本的方法就可以实现,但是实际处理的规模却比较大,粗劣的算法只能导致低效。
为了解决这种困难,在统计中需要借助一些特殊的工具,如比较有效的数据结构来帮助解决。
本文主要介绍的是分治的思想结合一定的数据结构,使得统计的过程存在一定的模式,以到达提高效率的目的。
首先简要介绍线段树的基础,它是一种很适合计算几何的数据结构,同时也可以扩充到其他方面。
然后将介绍IOI2001中涉及的一种特殊的统计方法。
接着将会介绍一种与线段树有所不同的构造模式,它的形式是二叉排序树,将会发现这种方法是十分灵活的,进一步,我们将略去对它的构造,在有序表中进行虚实现。
目录一线段树1.1 线段树的构造思想1.2 线段树处理数据的基本方法1.3 应用的优势1.4 转化为对点的操作二一种解决动态统计的静态方法2.1 问题的提出2.2 数据结构的构造和设想2.3 此种数据结构的维护2.4 应用的分析三在二叉排序树上实现统计3.1 构造可用于统计的静态二叉排序树3.2 进行统计的方法分析3.3 一个较复杂的例子四虚二叉树4.1 虚二叉树实现的形态4.2 一个具体的例子4.3 最长单调序列的动态规划优化问题[正文]一 线段树在一类问题中,我们需要经常处理可以映射在一个坐标轴上的一些固定线段,例如说映射在OX 轴上的线段。
由于线段是可以互相覆盖的,有时需要动态地取线段的并,例如取得并区间的总长度,或者并区间的个数等等。
一个线段是对应于一个区间的,因此线段树也可以叫做区间树。
1.1线段树的构造思想线段树处理的是一定的固定线段,或者说这些线段是可以对应于有限个固定端点的。
处理问题的时候,首先抽象出区间的端点,例如说N 个端点ti(1≤i ≤N)。
那么对于任何一个要处理的线段(区间)[a,b]来说,总可以找到相应的i,j ,使得ti=a,tj=b,1≤i ≤j ≤N 。
线段树的应用广西柳铁一中林涛【摘要】在竞赛解题中,常遇到与区间有关的操作,比如统计若干矩形并的面积,记录一个区间的最值、总量,并在区间的插入、删除和修改中维护这些最值、总量。
线段树拥有良好的树形二分结构,能够高效的完成这些操作,本文将介绍线段树的各种操作以及一些推广。
本文通过3个例子:《蛇》、《空心长方体》、《战场统计系统》,讲述线段树中基本的插入、删除、查找操作,和不规则的修改和删除操作,以及到二维的推广。
关键字:线段树二分子树收缩叶子释放面积树【正文】1. 线段树的定义及特征定义1:线段树一棵二叉树,记为T (a,b),参数a,b表示该节点表示区间[a,b]。
区间的长度b-a记为L。
递归定义T[a,b]:若L>1 :[a, (a+b) div 2]为T的左儿子[(a+b) div 2,b]为T的右儿子。
若L=1 :T为一个叶子节点。
表示区间[1, 10]的线段树表示如下:(以下取对数后均向上取整)定理1:线段树把区间上的任意一条线段都分成不超过2log L条线段证明:(1)在区间(a,b)中,对于线段(c,d),如果(c<=a) 或(d>=b),那么线段在(a,b)中被分为不超过log(b-a)。
用归纳法证明,如果是单位区间,最多被分为一段,成立。
如果区间(a,b)的左儿子与右儿子成立,那么如果当c<=a时,1.若d<=(a+b)div2那么相当与其左儿子分该线段,所分该线段数树不超过log((a+b)div 2-a),即不超过log(b-a),成立。
2.若d>(a+b) div 2那么相当于该线段被分为它左儿子表示的线段,加上右儿子分该线段,线段数不超过1+log(b-(a+b) div 2),也不超过log(b-a),成立。
对于d>=b的情况证明类似,不再赘述。
(2)在区间(a,b)中,对于任意线段也用归纳法证明。
对于单位区间,最多分为一段,成立。
信息学中的守恒法【摘要】本文提出和总结了“守恒法”,以及它在信息学竞赛中的一些应用。
守恒的本质是寻找变化中的不变量。
守恒法能帮助我们跳过、避开纷繁复杂的细节,直接看透问题的本质。
【关键字】守恒法不变量【正文】一、引言现实生活和实际问题是纷繁复杂的。
问题1两个质量相等的小球,速度分别为5m/s, 4m/s,他们相向运动,完全弹性碰撞之后速度分别变成多少?问题210g C和10g O2在密闭容器中反应一个小时。
最后的总质量是多少?问题1我们大概耳熟能详:动量守恒、动能守恒,两个方程就能解出速度。
实际上小球碰撞的过程是复杂的,究竟两对力如何互相作用、互相影响、如何做功,思考起来是非常的复杂。
如果忽略它们变化的具体过程,我们很容易发现“动量”和“动能”这两个变化中的不变量,抓住不变量,就能跳过繁琐的细节,直达目标。
问题2也是类似的题目。
C和O2的反应同样是复杂的。
在不同的局部,条件不同,可能产生CO,也可能产生CO2;CO2和C还可能重新转化为CO……事实上不可能有人列出三个化学方程去分析——在一个密闭容器中,无论怎么变,总质量必然不变——也就是质量守恒。
抓住这一点,我们在1秒钟内就能说出答案:20g。
以上两个例子生动的说明守恒的作用。
现实生活和实际问题如此纷繁复杂,条件和变化如此之多,以至于我们考虑稍不周密就可能全盘皆错;抑或限于问题本身的复杂性,根本无法分析。
但是如果能找到一两个守恒量——也就是变化中的不变量,那么问题就能大大的简化了。
忽略细节,抓住主要矛盾,这就是守恒法。
二、一个简单的例子例题1有一个数列a1, a2, a3, ……, a n。
每次可以从中任意选3个相邻的数a i-1, a i, a i+1,进行如下操作(此操作称为“对a i进行操作”)(a i-1, a i, a i+1)à(a i-1+a i, -a i, a i+a i+1)给定初始和目标序列。
问:能不能通过以上操作,将初始序列转换到目标序列。
浅谈基于分层思想的网络流算法上海市延安中学王欣上[关键字]层次图网络流基本算法应用MPLA Dinic MPM[摘要]本文详细地介绍了基于层次图概念的三种算法,并通过例题来说明Dinic算法在信息学竞赛中的优越性。
一、引言 (3)二、预备概念 (3)2.1剩余图的概念 (3)2.2顶点的层次 (4)2.3层次图的概念 (4)2.4阻塞流的概念 (5)三、最短路径增值算法(MPLA)的步骤及复杂度分析 (5)3.1算法步骤 (5)3.2定理的证明 (6)3.3复杂度分析 (8)四、Dinic算法的步骤以及复杂度分析 (9)4.1算法步骤 (9)4.2复杂度分析 (13)五、Dinic算法在信息学竞赛中的应用 (15)例题1 最大获利(profit) (15)例题2 矩阵游戏 (18)六、MPM的算法步骤以及复杂度分析 (19)6.1算法步骤 (19)6.2复杂度分析 (20)七、总结 (21)一、 引言图论这门古老而又年轻的学科①在信息学竞赛中占据了相当大的比重。
其中,网络流算法经常在题目中出现。
网络流涵盖的知识非常丰富,从基本的最小割最大流定理到网络的许多变形再到最高标号预流推进的六个优化等等,同学们在平时需要多多涉猎这方面的知识,不断积累,才能应对题目的各种变化。
随着信息学竞赛的不断发展,其题目的难度以及考察范围都不断增大。
现在,对于一些新出现的题目,仅仅掌握最朴素的网络流算法并不足以解决问题。
本文针对一些数据规模比较大的网络流题目详细介绍了基于分层思想的3个网络流算法,并通过列举和比较说明了其在解题中的应用,而对一些基础的知识,如最小割最大流定理等,没有作具体阐释,大家可以在许多其他网络流资料中找到。
二、预备概念②2.1剩余图的概念给定一个流量网络),(111V E G =、源点s 、汇点t 、容量函数c ,以及其上的流量函数f 。
我们这样定义对应的剩余图),(222V E G =:剩余图中的点集与流量网络中的点集相同,即12V V =。
IOI2018中国国家集训队集中培训第一试时间:2017年12月4日08:10∼13:10题目名称简单数据结构福若格斯避难所题目类型传统型传统型传统型目录dsa frogs hafen可执行文件名dsa frogs hafen输入文件名dsa.in frogs.in hafen.in输出文件名dsa.out frogs.out hafen.out每个测试点时限 3.0秒 2.0秒 1.0秒内存限制1024MB512MB512MB测试点数目20203每个测试点分值5533提交源程序文件名对于C++语言dsa.cpp frogs.cpp hafen.cpp对于C语言dsa.c frogs.c hafen.c对于Pascal语言dsa.pas frogs.pas hafen.pas 编译选项对于C++语言-O2-lm-O2-lm-O2-lm对于C语言-O2-lm-O2-lm-O2-lm对于Pascal语言-O2-O2-O2简单数据结构(dsa)【题目背景】参加完IOI2018之后就是姚班面试。
而你,由于讨厌物理、并且想成为乔布斯一样的创业家,被成功踢回贵系。
转眼,时间的指针被指向2019,大二,12月初,考试周。
你早听学长说,数据结构期中考很难,对竞赛生不友好,集训队选手做不完卷子。
你冷笑。
哼,堂堂国际金,这点难度的考试算什么。
两小时,你看完习题解析前五章所有内容,并且倒背如流;一小时,你看了500页的讲义,并且记忆犹新;十分钟,你骑车到考场,自信的你只带了一把水笔,虽然考试让带资料;现在,摊开传说中神级卷子,你定神一看——【题目描述】给出一个长度为N的序列A1,A2,···,A N,如果A中的一个子序列B1,B2,···,B M,满足条件:•1≤M≤N •∀1≤i<M,B iBi+1那么称B为A的上升倍数子序列。
现在有一个长度为N的序列A被初始化为A1,A2,···,A N,以及Q次对序列A的操作。
动态规划的特点及其应用安徽张辰【关键词】动态规划阶段【摘要】动态规划是信息学竞赛中的常见算法,本文的主要内容就是分析它的特点。
文章的第一部分首先探究了动态规划的本质,因为动态规划的特点是由它的本质所决定的。
第二部分从动态规划的设计和实现这两个角度分析了动态规划的多样性、模式性、技巧性这三个特点。
第三部分将动态规划和递推、搜索、网络流这三个相关算法作了比较,从中探寻动态规划的一些更深层次的特点。
文章在分析动态规划的特点的同时,还根据这些特点分析了我们在解题中应该怎样利用这些特点,怎样运用动态规划。
这对我们的解题实践有一定的指导意义。
【正文】动态规划是编程解题的一种重要的手段,在如今的信息学竞赛中被应用得越来越普遍。
最近几年的信息学竞赛,不分大小,几乎每次都要考察到这方面的内容。
因此,如何更深入地了解动态规划,从而更为有效地运用这个解题的有力武器,是一个值得深入研究的问题。
要掌握动态规划的应用技巧,就要了解它的各方面的特点。
首要的,是要深入洞悉动态规划的本质。
§1动态规划的本质动态规划是在本世纪50年代初,为了解决一类多阶段决策问题而诞生的。
那么,什么样的问题被称作多阶段决策问题呢?§1.1多阶段决策问题说到多阶段决策问题,人们很容易举出下面这个例子。
[例1]多段图中的最短路径问题:在下图中找出从A1到D1的最短路径。
仔细观察这个图不难发现,它有一个特点。
我们将图中的点分为四类(图中的A、B、C、D),那么图中所有的边都处于相邻的两类点之间,并且都从前一类点指向后一类点。
这样,图中的边就被分成了三类(A→B、B→C、C→D)。
我们需要从每一类中选出一条边来,组成从A1到D1的一条路径,并且这条路径是所有这样的路径中的最短者。
从上面的这个例子中,我们可以大概地了解到什么是多阶段决策问题。
更精确的定义如下:多阶段决策过程,是指这样的一类特殊的活动过程,问题可以按时间顺序分解成若干相互联系的阶段,在每一个阶段都要做出决策,全部过程的决策是一个决策序列[1]。
NOI国家集训队论文分类(至2008) 摘抄自C博客 组合数学 计数与统计 2001 - 符文杰:《Pólya原理及其应用》 2003 - 许智磊:《浅谈补集转化思想在统计问题中的应用》 2007 - 周冬:《生成树的计数及其应用》 2008 - 陈瑜希《Pólya计数法的应用》 数位问题 2009 - 高逸涵《数位计数问题解法研究》 2009 - 刘聪《浅谈数位类统计问题》 动态统计 2004 - 薛矛:《解决动态统计问题的两把利刃》 2007 - 余江伟:《如何解决动态统计问题》 博弈 2002 - 张一飞:《由感性认识到理性认识——透析一类搏弈游戏的解答过程》 2007 - 王晓珂:《解析一类组合游戏》 2009 - 曹钦翔《从“k倍动态减法游戏”出发探究一类组合游戏问题》 2009 - 方展鹏《浅谈如何解决不平等博弈问题》 2009 - 贾志豪《组合游戏略述——浅谈SG游戏的若干拓展及变形》 母函数 2009 - 毛杰明《母函数的性质及应用》 拟阵 2007 - 刘雨辰:《对拟阵的初步研究》 线性规划 2007 - 李宇骞:《浅谈信息学竞赛中的线性规划——简洁高效的单纯形法实现与应用》 置换群 2005 - 潘震皓:《置换群快速幂运算研究与探讨》 问答交互 2003 - 高正宇:《答案只有一个——浅谈问答式交互问题》 猜数问题 2003 - 张宁:《猜数问题的研究:一题的推广》 2006 - 龙凡:《一类猜数问题的研究》 数据结构 数据结构 2005 - 何林:《数据关系的简化》 2006 - 朱晨光:《基本数据结构在信息学竞赛中的应用》 2007 - 何森:《浅谈数据的合理组织》 2008 - 曹钦翔《数据结构的提炼与压缩》 结构联合 2001 - 高寒蕊:《从圆桌问题谈数据结构的综合运用》 2005 - 黄刚:《数据结构的联合》 块状链表 2005 - 蒋炎岩:《数据结构的联合——块状链表》 2008 - 苏煜《对块状链表的一点研究》 动态树 2006 - 陈首元:《维护森林连通性——动态树》 2007 - 袁昕颢:《动态树及其应用》 左偏树 2005 - 黄源河:《左偏树的特点及其应用》 跳表 2005 - 魏冉:《让算法的效率“跳起来”!——浅谈“跳跃表”的相关操作及其应用》 2009 - 李骥扬《线段跳表——跳表的一个拓展》 SBT 2007 - 陈启峰:《Size Balance Tree》 线段树 2004 - 林涛:《线段树的应用》 单调队列 2006 - 汤泽:《浅析队列在一类单调性问题中的应用》 哈希表 2005 - 李羽修:《Hash函数的设计优化》 2007 - 杨弋:《Hash在信息学竞赛中的一类应用》 Splay 2004 - 杨思雨:《伸展树的基本操作与应用》 图论 图论 2005 - 任恺:《图论的基本思想及方法》 模型建立 2004 - 黄源河:《浅谈图论模型的建立与应用》 2004 - 肖天:《“分层图思想”及其在信息学竞赛中的应用》 网络流 2001 - 江鹏:《从一道题目的解法试谈网络流的构造与算法》 2002 - 金恺:《浅谈网络流算法的应用》 2007 - 胡伯涛:《最小割模型在信息学竞赛中的应用》 2007 - 王欣上:《浅谈基于分层思想的网络流算法》 2008 - 周冬《两极相通——浅析最大—最小定理在信息学竞赛中的应用》 最短路 2006 - 余远铭:《最短路算法及其应用》 2008 - 吕子鉷《浅谈最短径路问题中的分层思想》 2009 - 姜碧野《SPFA算法的优化及应用》 欧拉路 2007 - 仇荣琦:《欧拉回路性质与应用探究》 差分约束系统 2006 - 冯威:《数与图的完美结合——浅析差分约束系统》 平面图 2003 - 刘才良:《平面图在信息学中的应用》 2007 - 古楠:《平面嵌入》 2-SAT 2003 - 伍昱:《由对称性解2-SAT问题》 最小生成树 2004 - 吴景岳:《最小生成树算法及其应用》 2004 - 汪汀:《最小生成树问题的拓展》 二分图 2005 - 王俊:《浅析二分图匹配在信息学竞赛中的应用》 Voronoi图 2006 - 王栋:《浅析平面Voronoi图的构造及应用》 偶图 2002 - 孙方成:《偶图的算法及应用》 树 树 2002 - 周文超:《树结构在程序设计中的运用》 2005 - 栗师:《树的乐园——一些与树有关的题目》 路径问题 2009 - 漆子超《分治算法在树的路径问题中的应用》 最近公共祖先 2007 - 郭华阳:《RMQ与LCA问题》 划分问题 2004 - 贝小辉:《浅析树的划分问题》 数论 欧几里得算法 2009 - 金斌《欧几里得算法的应用》 同余方程 2003 - 姜尚仆:《模线性方程的应用——用数论方法解决整数问题》 搜索 搜索 2001 - 骆骥:《由“汽车问题”浅谈深度搜索的一个方面——搜索对象与策略的重要性》 2002 - 王知昆:《搜索顺序的选择》 2005 - 汪汀:《参数搜索的应用》 启发式 2009 - 周而进《浅谈估价函数在信息学竞赛中的应用》 优化 2003 - 金恺:《探寻深度优先搜索中的优化技巧——从正方形剖分问题谈起》 2003 - 刘一鸣:《一类搜索的优化思想——数据有序化》 2006 - 黄晓愉:《深度优先搜索问题的优化技巧》 背包问题 2009 - 徐持衡《浅谈几类背包题》 匹配 2004 - 楼天城:《匹配算法在搜索问题中的巧用》 概率 概率 2009 - 梅诗珂《信息学竞赛中概率问题求解初探》 数学期望 2009 - 汤可因《浅析竞赛中一类数学期望问题的解决方法》 字符串 字符串 2003 - 周源:《浅析“最小表示法”思想在字符串循环同构问题中的应用》 多串匹配 2004 - 朱泽园:《多串匹配算法及其启示》 2006 - 王赟:《Trie图的构建、活用与改进》 2009 - 董华星《浅析字母树在信息学竞赛中的应用》 后缀数组 2004 - 许智磊:《后缀数组》 2009 - 罗穗骞《后缀数组——处理字符串的有力工具》 字符串匹配 2003 - 饶向荣:《病毒的DNA———剖析一道字符匹配问题解析过程》 2003 - 林希德:《求最大重复子串》 动态规划 动态规划 2001 - 俞玮:《基本动态规划问题的扩展》 2006 - 黄劲松:《贪婪的动态规划》 2009 - 徐源盛《对一类动态规划问题的研究》 状态压缩 2008 - 陈丹琦《基于连通性状态压缩的动态规划问题》 状态设计 2008 - 刘弈《浅谈信息学中状态的合理设计与应用》 树形DP 2007 - 陈瑜希:《多角度思考创造性思维——运用树型动态规划解题的思路和方法探析》 优化 2001 - 毛子青:《动态规划算法的优化技巧》 2003 - 项荣璟:《充分利用问题性质——例析动态规划的“个性化”优化》 2004 - 朱晨光:《优化,再优化!——从《鹰蛋》一题浅析对动态规划算法的优化》 2007 - 杨哲:《凸完全单调性的加强与应用》 计算几何 立体几何 2003 - 陆可昱:《长方体体积并》 2008 - 高亦陶《从立体几何问题看降低编程复杂度》 计算几何思想 2004 - 金恺:《极限法——解决几何最优化问题的捷径》 2008 - 程芃祺《计算几何中的二分思想》 2008 - 顾研《浅谈随机化思想在几何问题中的应用》 圆 2007 - 高逸涵:《与圆有关的离散化》 半平面交 2002 - 李澎煦:《半平面交的算法及其应用》 2006 - 朱泽园:《半平面交的新算法及其实用价值》 矩阵 矩阵 2008 - 俞华程《矩阵乘法在信息学中的应用》 高斯消元 2002 - 何江舟:《用高斯消元法解线性方程组》 数学方法 数学思想 2002 - 何林:《猜想及其应用》 2003 - 邵烜程:《数学思想助你一臂之力》 数学归纳法 2009 - 张昆玮《数学归纳法与解题之道》 多项式 2002 - 张家琳:《多项式乘法》 数形结合 2004 - 周源:《浅谈数形结合思想在信息学竞赛中的应用》 黄金分割 2005 - 杨思雨:《美,无处不在——浅谈“黄金分割”和信息学的联系》 其他算法 遗传算法 2002 - 张宁:《遗传算法的特点及其应用》 2005 - 钱自强:《关于遗传算法应用的分析与研究》 信息论 2003 - 侯启明:《信息论在信息学竞赛中的简单应用》 染色与构造 2002 - 杨旻旻:《构造法——解题的最短路径》 2003 - 方奇:《染色法和构造法在棋盘上的应用》 一类问题 区间 2008 - 周小博《浅谈信息学竞赛中的区间问题》 序 2005 - 龙凡:《序的应用》 系 2006 - 汪晔:《信息学中的参考系与坐标系》 物理问题 2008 - 方戈《浅析信息学竞赛中一类与物理有关的问题》 编码与译码 2008 - 周梦宇《码之道—浅谈信息学竞赛中的编码与译码问题》 对策问题 2002 - 骆骥:《浅析解“对策问题”的两种思路》 优化 算法优化 2002 - 孙林春:《让我们做得更好——从解法谈程序优化》 2004 - 胡伟栋:《减少冗余与算法优化》 2005 - 杨弋:《从的解法谈算法的优化》 2006 - 贾由:《由图论算法浅析算法优化》 程序优化 2006 - 周以苏:《论反汇编在时间常数优化中的应用》 2009 - 骆可强《论程序底层优化的一些方法与技巧》 语言 C++