摘要:
[题目来源]:Beijing 2008[关键字]:树状数组[题目大意]:是要组成许多比赛,比赛的要求是,两个人比赛一个人作裁判,裁判的能力值必须要在两个人之间,位置也是,问一共有多少种不同的比赛方式。每个人的能力值各不相同。//=====================================================================================================[分析]:枚举一个中间点,查找它左边有几个比它能力值小的右边有几个比它能力值大的,根据乘法原理将其相乘;再查找它左边有几个比它能力值大的右边有几个比它能力值小的,根据乘法 阅读全文
摘要:
[题目来源]:Japan 2007[关键字]:图论 最小生成树[题目大意]:求一棵生成树让最大边最小边差值最小//=====================================================================================================[分析]:首先将边进行排序,然后依次枚举么一个边作为生成树中的最小边利用克鲁斯卡尔算法求最小生成树,如果此时求出的结果由于之前的值就更新。因为克鲁斯卡尔算法就是每次取可以取的最小边加入生成树中,所以利用它求出来的最小生成树一定是以枚举的边作为最小边的所有可能值中最优的。[代码]:Vi 阅读全文
摘要:
[题目来源]:POJ Monthly--2007.11.25, Yang Yi[关键字]:线段树[题目大意]:对于给定区间进行整体添加数值,或询问操作,对于每个询问操作输出该区间数字之和。//=====================================================================================================[分析]:对于线段树的操作,没有技巧只是要注意延迟操作和int64。原先写的时候思路并不清楚也没有真正弄明白,下面给出一个比较优美的版本。[代码]:View Code 1 type 2 rec =... 阅读全文
摘要:
[题目来源]:Ulm Local 2007[关键字]:RMQ[题目大意]:给定一个非递减的整数序列(n),然后给出m个查询区间,针对每一个查询,输出此区间内重复最多的数字重复的次数。//=====================================================================================================[分析]:如果给定的区间恰好是连续的区间的两端则可直接同过RMQ问题求解。但如果不是这样则需要先求出两遍的最大值,再求中间就转换成了之前所说的问题。[代码]:View Code 1 var 2 n, q: ... 阅读全文
摘要:
[题目来源]:POJ Monthly--2007.08.05, Huang, Jinsong[关键字]:树状数组[题目大意]:一棵苹果树每个数字上长有1个苹果,有两种操作:1、改变一个树枝上的苹果数;2、询问以某个树枝为根的子树的苹果数量。//====================================================================================================[分析]:此题关键不在数据结构(区间和可以用树状数组或线段树),主要是如何把树(不一定是二叉树)转化为数组来处理。首先建树(我采用的是邻接表),然后DFS先 阅读全文
摘要:
[题目来源]:South Central USA 2006[关键字]:字符串[题目大意]:找出给所有字符串的最长公共字串。//=====================================================================================================[分析]:暴力枚举+KMP。最近刚学了后缀数组,发现用它也可以解出这道题,所以就试了试,但说实话很失败……输出错了还以为算法错了白调了半天,后缀数组做这道题代码很长(也许是我写坏了),基本思路就是连在一起然后二分答案对后缀数组分组。[代码]:KMP 1 var 2 ... 阅读全文
摘要:
[题目来源]:Northeastern Europe 2002, Far-Eastern Subregion[关键字]:搜索[题目大意]:给出每两台电脑之间的流量,将所有电脑分为两组只有不同组之间才有流量求出怎样分能达到最大流量。//=====================================================================================================[分析]:对于每一台电脑都有两种选择:归入第一组还是第二组。所以只要枚举每一种可能的状态,找出最优值。[代码]:View Code 1 program Proje. 阅读全文
摘要:
[题目来源]:Southeastern Europe 2004[关键字]:字符串[题目大意]:给定一个字符串,求到哪一位时的字串是前几位循环组成的,并求出循环次数。//=====================================================================================================[分析]:利用KMP来求解。在KMP中有一个p数组记录当前字符的它的上一个位置,且保证这一段一定是来连续的。所以如果i处有循环则i到p[i]的长度即为循环节长度,所以如果i mod (i-p[i])=0则说明有循环,i div ( 阅读全文
摘要:
[题目来源]:Ulm Local 2002[关键字]:字符串[题目大意]:给出两个字符串s1 s2判断s1是否在s2中出现过,可以不连续。//=====================================================================================================[分析]:有两种方法:1、LCS这个就不细讲了,只要最后等于s1的长度就‘YES’;2、直接模拟,一个一个字母的找,找到了就从此位往后找下一个字母,直道找完或找不到为止。[代码]:View Code 1 { 2 PROB:POJ1936 3 DATE:2. 阅读全文
摘要:
[题目来源]:Northeastern Europe 2001, Northern Subregion[关键字]:图论[题目大意]:套汇问题,汇率为rab,增加一个手续费cab,那么每次套汇的结果是(本金-手续费cab)*汇率rab,现在给出一个人所拥有的货币类型以及拥有该类型货币的总量,需要判断的是经过一系列货币交换后,他能不能是他的货币增值.//=====================================================================================================[分析]:其实就是构建出差分约束系统求图中是否 阅读全文
摘要:
[题目来源]:CTU Open 2003[关键字]:图论[题目大意]:给出一个n*7的字母矩阵,每一行代表一种车,那么定义的每种车之间的距离为七个位置上每个相应的位置上不同字母数的和,要求的是不同种车的距离的和得最小值。//=====================================================================================================[分析]:其实就是最小生成树的算法,由于是稠密图所以prim效率更高。[代码]:View Code 1 { 2 PROB:POJ1789 3 DATE:2011\10\14. 阅读全文
摘要:
[题目来源]Southeastern Europe 2000:[关键字]:图论[题目大意]:让每个学生代表一门课程,且每个课程只有一个学生代表行不行?//=====================================================================================================[分析]:如果二分图最大匹配达到了学生数则可行否则不可行[代码]:View Code 1 program Project1; 2 var 3 n, p, tc: longint; 4 map: array[0..1000,0..100... 阅读全文
摘要:
[题目来源]:Southern African 2001[关键字]:图论[题目大意]:股票经纪人要在一群人中散布一个传言,传言只能在认识的人中传递,题目将给出人与人的关系(是否认识),以及传言在某两个认识的人中传递所需的时间,要求程序给出以哪个人为起点,可以在好事最短的情况下,让所有人收到消息。//====================================================================================================[分析]:先用foyd求出多源最短路,然后枚举每一个作为起点并判断此时所需的最短时间,最后取出最优值 阅读全文
摘要:
[题目来源]:Northeastern Europe 1998[关键字]:字符串处理[题目大意]:给出一个字典,然后查询一些字符是否能字典中的匹配。匹配是指:1、相等;2、少一个其余相等;3、多一个其余相等。//=====================================================================================================[分析]:只要根据要求一一测试,将正在查的单词与字典中的每一个比对,如果长度相等则判断是否一样,如果多一个则枚举删掉该词的一位再判断是否一样,如果少一个则枚举删掉字典中那个词的一位再判断 阅读全文
摘要:
[题目来源]:TUD Programming Contest 2001, Darmstadt, Germany[关键字]:搜索[题目大意]:给出N*N的棋盘和骑士的起点、终点坐标,求最小步数。//=====================================================================================================[分析]:最朴素的算法就是暴力bfs,但肯定会超时--||所以,要用双向广搜,从起点和终点同时搜索,如果走到了或者两者中途相遇说明找到解了即可结束。[代码]:View Code 阅读全文
摘要:
[题目来源]:Japan 2002 Kanazawa[关键字]:搜索[题目大意]:将一个数字串拆分为多个数字,使得拆分之后形成的几个整数之和是小于目标值的最大值[分析]:暴力搜索每一种可能的组合,唯一的剪枝就是判断当前是否已经超过上限。[代码]:View Code 1 var 2 n, m, i, min, ans, t, tot: longint; 3 s: string; 4 a, p: array[0..100] of longint; 5 6 procedure dfs(j,k: longint); 7 var 8 i: longint; 9 s2: string;1... 阅读全文
摘要:
[题目来源]:East Central North America 1995[关键字]:数学[题目大意]:输出给定的字符串的编号(a=1,b=2,c=3......z=26,ab=27....),其中不能有重复的字母且必须是升序。//==================================================================================================[分析]:转载请注明出处:優YoUhttp://blog.csdn.net/lyy289065406/article/details/6648501组合数学题,不知道为什 阅读全文
摘要:
[题目来源]:IOI 2001[关键字]:线段树[题目大意]:对于一个矩形,一开始全是0,然后会有操作:1、在(x,y)加上某个数;2、查找(l,r)到(b,t)这一子矩形中数字的和。//=====================================================================================================[分析]:用线段树或树状数组进行区间的变更或求和操作,由于是一个二维的所以将每个区间的值改成一个数组记录另一维。每次插入都回直接插入到树的叶子上,所以只要在回溯时顺便更新就行,不用延迟。[代码]:线段树 1 p 阅读全文
摘要:
[题目来源]:Beijing 2008[关键字]:模拟[题目大意]:用字符的形式给出n窗口,以他的编号作为它的边(中间是空的),找出所有在最上层的窗口。//=====================================================================================================[分析]:先找到每一个窗口的左上角,如果找不到则必不可能是最顶上的,然后利用左上角找到可能的宽和长,再以此判断此长和宽是否成立(没有其他窗口覆盖)。[代码]:View Code 1 program Project1; 2 var 3 p... 阅读全文
摘要:
[题目来源]:Romania OI 2002[关键字]:动态规划[题目大意]:在一个天平中,有N个挂钩,挂钩距离在[-15..15]之间,-代表在左臂,+代表在右臂,挂钩距离依次从小到大给出。有M个砝码,砝码重量在[-25..25]之间,砝码重量依次从小到大给出。求,用上所有砝码将天平平衡的方法有多少种。//=====================================================================================================[分析]:将所有砝码与所有挂钩相乘,所得就是砝码挂在挂钩上时对平衡的贡献,以边为负另一边 阅读全文