05 2016 档案

摘要:题目 浏览器有一个cache,可以存放M(M <= 5000) 个url地址(url为长度小于30的字符串)。现在进行N(N <= 20000)次访问,每一个访问,如果访问的url在cache中存在,则输出Cache,如果不在cache中存在,输出Internet,且从cache中删除一个最近最少访 阅读全文
posted @ 2016-05-31 23:22 农民伯伯-Coding 阅读(224) 评论(0) 推荐(0)
摘要:题目 最短路模板题目,纯练习手速。 实现 阅读全文
posted @ 2016-05-31 21:53 农民伯伯-Coding 阅读(226) 评论(0) 推荐(0)
摘要:题目 在长度为L的宣传栏上张贴N张海报,将宣传栏分为L个长度为1的单位,海报长度为整数,且高度和宣传栏相同,左右边界和宣传栏单位之间缝隙重合(即海报总是跨越整数个单位)。后贴的海报可能会覆盖之前贴的海报的全部或者部分,问N张海报贴完之后,没有被完全覆盖的海报的总数。N <= 10^6, L <= 1 阅读全文
posted @ 2016-05-31 21:24 农民伯伯-Coding 阅读(314) 评论(0) 推荐(0)
摘要:题目 给定一组数,要求进行若干次操作,这些操作可以分为两种类型: (1) CMD 1 beg end value 将数组中下标在[beg, end] 区间内数字都变为value (2) CMD 2 beg end 求出数组中下标在[beg ,end]区间中的所有数字的和 分析 树状数组在区间查询和单 阅读全文
posted @ 2016-05-31 16:51 农民伯伯-Coding 阅读(281) 评论(0) 推荐(0)
摘要:题目 给出一棵家族树,树上的节点可以由名字唯一标识。给出若干个查询,查询的内容为两个名字,结果为两个名字的最近公共祖先。 题目链接: 最近公共祖先 分析 在线的RMQ + LCA 算法,先用dfs将树遍历一遍,每次到达一个节点(无论是从父节点到达还是从它的某个子节点返回),都记录下来该节点id,同时 阅读全文
posted @ 2016-05-30 21:57 农民伯伯-Coding 阅读(213) 评论(0) 推荐(1)
摘要:题目 一个NxN的矩阵,矩阵中每个方格中都有一个数值,且每一行的数值严格单调递增,每一列的数值严格单调递增。分别取出N行和N列,形成2N个长度为N的数组,现在有一个数组丢失,已知剩下的2N-1个长度为N的数组,求出丢失的那个数组。 实现 开始做的时候,试图一行一行,一列一列的进行递推枚举,重建出原来 阅读全文
posted @ 2016-05-30 15:22 农民伯伯-Coding 阅读(261) 评论(0) 推荐(0)
摘要:题目 区间最小值查询,但是支持对数组中的任意数字进行修改。 分析 采用RMQ_ST算法的O(1)算法不支持修改,因为每次修改都要重新设置动归数组。因此采用线段树解决,修改和查询的复杂度均为O(logN). 在实现的时候所犯的错误:每次更新一个数字的时候,走到线段树的某个节点,则直接 判断线段树的当前 阅读全文
posted @ 2016-05-30 08:24 农民伯伯-Coding 阅读(179) 评论(0) 推荐(0)
摘要:题目 给出一数组A,编号从1到n,然后进行q次查询,每次查询给出一个边界[beg, end],要求给出数组A中范围[beg, end]之内的最小值。 题目链接: RMQ_ST 分析 区间问题使用线段树或者树状数组,可以达到查询复杂度为O(logN),其实对于RMQ(Range Maximum/Min 阅读全文
posted @ 2016-05-29 22:53 农民伯伯-Coding 阅读(243) 评论(0) 推荐(0)
摘要:给出一棵家谱树,树中的节点都有一个名字,保证每个名字都是唯一的,然后进行若干次查询,找出两个名字的最近公共祖先。 题目链接最近公共祖先 分析 数据量大,根据题目提示,采用Tarjan + 并查集算法,进行离线LCA查询操作。即先将所有的查询存储下来,然后统一DFS遍历一遍家族树,在遍历的过程中对遍历 阅读全文
posted @ 2016-05-29 19:19 农民伯伯-Coding 阅读(269) 评论(0) 推荐(0)
摘要:给出一棵家谱树,树中的节点都有一个名字,保证每个名字都是唯一的,然后进行若干次查询,找出两个名字的最近公共祖先。 分析 数据量较小,对于每次查询都进行如下操作: 先找出person1到达根节点的路径path,然后再从person2开始向上,每经过一个节点都查询一下该节点是否在path中出现,如果出现 阅读全文
posted @ 2016-05-29 18:56 农民伯伯-Coding 阅读(192) 评论(0) 推荐(0)
摘要:题目大意 给出N个操作,每个操作可能为两种类型之一: 1. 认定两个人属于同一个组织 2. 查询两个人是否是同一个组织 要求对于每个操作类型2,给出结果,即查询的两个人是否属于同一个组织。其中,任何人都可以通过名字唯一确定。 分析 简单的并查集操作,直接使用哈希表存储名字字符串作为并查集树,而不用整 阅读全文
posted @ 2016-05-29 15:23 农民伯伯-Coding 阅读(144) 评论(0) 推荐(0)
摘要:题目大意 8数码问题,在3x3的矩阵中填入0-8九个数字,0可以和它相邻的数字进行交换。从初始状态到达状态F(3x3的方格从上到下,从左到右,形成的数字串为123456780)所需要最少移动的次数。 题目分析 将3x3矩阵中的当前情形记为一个状态,用9个字符表示。然后根据方格0和它相邻的方格交换来进 阅读全文
posted @ 2016-05-29 13:46 农民伯伯-Coding 阅读(232) 评论(0) 推荐(0)
摘要:题目大意 题目连接:beautiful string 写代码之前,考虑清楚流程,以及需要维护的变量.... 实现 阅读全文
posted @ 2016-05-28 21:46 农民伯伯-Coding 阅读(229) 评论(0) 推荐(0)
摘要:题目大意 两个字符串strA和strB(长度最大为2100),他们中按照顺序有一些公共的子串,且公共子串的长度大于等于3,否则不认为是合法的,比如 abcdef 和 abcxcdef, 按照顺序有合法公共子串abc def 或者 cdef。 按照顺序取出一些公共子串,有不同的取法,求这些取法中公共子 阅读全文
posted @ 2016-05-28 21:41 农民伯伯-Coding 阅读(258) 评论(0) 推荐(0)
摘要:题目大意 一个MxN的矩阵,矩阵中的有些方格中有障碍物,有些没有,有一个机器人从左上角出发,它只能有两种移动方式:一直向右移动,直到遇到障碍物;一直向下移动,直到遇到障碍物。 现在可以将矩阵中的方格进行变换:如果方格中没有障碍物,则可以加入障碍物;如果方格中有障碍物,则可以清楚障碍物。求使得机器人可 阅读全文
posted @ 2016-05-28 20:49 农民伯伯-Coding 阅读(258) 评论(0) 推荐(0)
摘要:题目大意 给定N个字符,范围为A-Z,编号为1-N,对该字符序列进行M个操作,操作有4中类型: (1)CMD 1 i j X 将[i, j]区间内的字符均变为X (2)CMD 2 i j K 将[i, j]区间内的字符均增加K,如果超过Z,则再从A开始循环。 (3)CMD 3 K 将字符序列中最左端 阅读全文
posted @ 2016-05-28 20:31 农民伯伯-Coding 阅读(217) 评论(0) 推荐(0)
摘要:题目大意 给出一个函数调用日志,判断日志是否合法,且求出合法日志中函数调用的时间长度。 题目链接:performance log 题目分析 首先需要清除非法日志的几种情形: (1)日志的时间戳不是按照时间递增的顺序 (2)函数A中调用函数B,而函数A先于函数B结束 (3)函数没有被START过,却出 阅读全文
posted @ 2016-05-28 19:50 农民伯伯-Coding 阅读(230) 评论(0) 推荐(0)
摘要:题目大意 一棵树,每个节点都有相应的value值。从根开始选择M个节点相互连通,使得这些节点的value值之和最大。 题目链接:[刷油漆][1] 题目分析 典型的树形dp,dp[i][j] 表示以节点i为根的子树中选择j个节点(从i节点出发)相互连通,所能达到的节点value之和的最大值。可以很容易 阅读全文
posted @ 2016-05-28 19:22 农民伯伯-Coding 阅读(166) 评论(0) 推荐(0)
摘要:题目大意 智能手机九点屏幕滑动解锁,如果给出某些连接线段,求出经过所有给出线段的合法的滑动解锁手势的总数。题目链接: 滑动解锁 题目分析 首先,尝试求解没有给定线段情况下,所有合法的路径的总数。可以使用dfs进行搜索。代码如下: 在上面的dfs搜索基础上,添加对已有线段的限制。9个点,维护 conn 阅读全文
posted @ 2016-05-28 18:49 农民伯伯-Coding 阅读(259) 评论(0) 推荐(0)
摘要:题目大意 给定国际象棋8x8棋盘上三个起始点,三个骑士分别从三个起始点开始移动(骑士只能走日字,且骑士从任意一点出发可以走遍整个棋盘)。现要求三个骑士汇聚到棋盘上某个点,且使得骑士到达该点所移动的次数总和最小。求该最小移动次数。 题目连接:骑士问题 题目分析 典型的搜索,最短路径可以使用BFS。骑士 阅读全文
posted @ 2016-05-28 18:25 农民伯伯-Coding 阅读(268) 评论(0) 推荐(0)
摘要:题目大意 有N个居民点在一条直线上,每个居民点有一个x表示坐标,y表示居民点的现有居民数。现在要求将居民点的居民重新分配,每个居民点的居民最远迁移的距离为R,要求分配完之后,居民点中居民数最多的居民点的居民数最少。求出居民数最多的居民点的居民数的最少值。 题目分析 求最大最小值/最小最大值的问题,可 阅读全文
posted @ 2016-05-23 09:43 农民伯伯-Coding 阅读(350) 评论(0) 推荐(0)
摘要:题目大意 给出一个字符串(长度<=1000),字符串中的字符均为ATCG中的某一个。给出一个数字K,通过更改字符串中的某些字符,可以使得字符串的前K个字符形成的子串和最后K个字符形成的子串相同,求出最少更改的字符个数。 分析 理解题意,画图之后,仿佛是KMP的结果,但是这和KMP没啥关系...画图分 阅读全文
posted @ 2016-05-20 21:04 农民伯伯-Coding 阅读(186) 评论(0) 推荐(0)
摘要:题目大意 给出1到100这100个数中的某些数字(各个数字不同),这些数字形成一个个间断的连续区间,向1-100中添加M个数字,使得添加后1-100中某连续区间的长度最大,求出添加M个数字后,最长的连续区间的长度。 分析 计算机解决问题嘛,就是搜索解空间,不断的进行尝试(当然在尝试的基础上进行优化, 阅读全文
posted @ 2016-05-20 10:01 农民伯伯-Coding 阅读(308) 评论(0) 推荐(0)
摘要:题目大意 给出一棵树,其中每两个节点都可以形成一个路径(要求路径中的边只能走一次),求出所有路径中的长度最大值。 分析 树形结构,很容易想到递归,但为了节省时间,要考虑保存中间状态。于是,考虑使用记忆化搜索(也就是树形动态规划)。 保存状态 dp[i][2],其中dp[i][0]表示以i为根的子树中 阅读全文
posted @ 2016-05-19 09:41 农民伯伯-Coding 阅读(303) 评论(0) 推荐(0)
摘要:题目大意 给出一棵二叉树的前序和中序遍历结果,求出后序遍历的结果。保证二叉树中节点值均不相同。 分析 通过前序和中序遍历的结果,我们可以构建出二叉树,若构建出二叉树,则后序遍历的结果很容易求出(当然递归方法很容易)。主要是二叉树的构建。 二叉树类型非常适合用递归进行求解,所以考虑通过递归的方式来建立 阅读全文
posted @ 2016-05-19 09:29 农民伯伯-Coding 阅读(253) 评论(0) 推荐(0)
摘要:题目大意 用1x2的单元拼接出 NxM的矩形,单元可以横放或者纵放,N < 1000, M <= 5. 求不同的拼接方案总数。 分析 计算机解决问题的基本思路:搜索状态空间。如果采用dfs进行搜索,则可以将当前搜索的位置(i, j)作为状态,而不保存棋盘的占用情况,每次扩展时进行判断是否可行。这样可 阅读全文
posted @ 2016-05-19 00:13 农民伯伯-Coding 阅读(246) 评论(0) 推荐(0)
摘要:题目大意 给定N个位置,每个位置i都有一个value[i]值,从中选择若干个位置,使得连续的M个位置中的被选中的位置数目不超过Q,求出所有选择方案中value和最大的方案,输出其最大value和。 分析 1、可以采用枚举的方式,枚举出所有的选择可能情况,每次枚举成功后,更新全局变量最大值即可。时间复 阅读全文
posted @ 2016-05-18 09:22 农民伯伯-Coding 阅读(188) 评论(0) 推荐(0)
摘要:题目 给定一棵树,N个节点,N - 1条边。给定m个节点,能否找出一种遍历方法,使得首次到达节点ai的时间小于首次到达节点aj的时间(i < j)。且经过的路径上的每条边都最多走两遍 分析 我的想法: 深度优先搜索的策略,在进入某个节点A时,以该节点A为根的子树中的所有节点构成一个集合,该集合内的点 阅读全文
posted @ 2016-05-07 22:35 农民伯伯-Coding 阅读(274) 评论(0) 推荐(0)
摘要:数位动态规划 数位动态规划是求解一个大区间[L, R]中间满足条件Q的所有数字的个数(或者和,或其他)的一种方法。它通过分析每一位上的数字,一般用 dp[len][digit][...] 来表示状态“len位长的数字,最高位数字为digit所具有的xx特性”,利用记忆化搜索保存中间结果,从而加快求解 阅读全文
posted @ 2016-05-05 21:38 农民伯伯-Coding 阅读(187) 评论(0) 推荐(0)
摘要:数位动态规划 数位动态规划是求解一个大区间[L, R]中间满足条件Q的所有数字的个数(或者和,或其他)的一种方法。它通过分析每一位上的数字,一般用 dp[len][digit][...] 来表示状态“len位长的数字,最高位数字为digit所具有的xx特性”,利用记忆化搜索保存中间结果,从而加快求解 阅读全文
posted @ 2016-05-05 21:33 农民伯伯-Coding 阅读(420) 评论(0) 推荐(0)

点击右上角即可分享
微信分享提示