07 2019 档案

摘要:B. Make Them Equal Description 给定一个长度为 nn 的序列,请你选择一个非负整数 DD,然后将序列中的所有元素要么加上 DD,要么减去 DD,要么不做改变,使得修改后的序列所有元素都相等。最小化 DD Input 第一行是一个整数 nn 第二行 nn 个整数描述这个序 阅读全文
posted @ 2019-07-31 20:38 _Ackerman 阅读(332) 评论(0) 推荐(0)
摘要:Manacher's 马拉车算法其实就是用来解决最长回文字符串的问题的。 回文串就是正反读起来就是一样的,如“abba”。 如果暴力去解决这个问题的话,它的时间复杂度是O(n^3) 当然我们还可以优化一下采用中心检测法,这样可以使算法的复杂度降为O(n^2) + O(1) 现在重点来了,马拉车算法可 阅读全文
posted @ 2019-07-31 19:45 _Ackerman 阅读(285) 评论(0) 推荐(0)
摘要:Description A histogram is a polygon composed of a sequence of rectangles aligned at a common base line. The rectangles have equal widths but may have 阅读全文
posted @ 2019-07-31 16:08 _Ackerman 阅读(306) 评论(0) 推荐(0)
摘要:单调队列 性质 单调队列和单调栈很像,就是一个维护了单调性的队列数据结构,可以是单调递增的,也可以是单调递减的。 模型 下图是一个单调递增的单调队列模型。 其中元素也是从小到大排列。和单调栈的操作一样,如果加入一个满足单调性的元素,例如5,那么就直接加入。 那么如果加入一个元素3呢?我们维护单调性, 阅读全文
posted @ 2019-07-31 16:00 _Ackerman 阅读(350) 评论(0) 推荐(0)
摘要:单调栈 性质 单调栈是一种特殊的栈,特殊之处在于栈内的元素都保持一个单调性,可能为单调递增,也可能为单调递减。 模型例如下图就是一个单调递增的单调栈。 其中的元素从小到大排列。 那么,如果我们要加入一个新的元素5,5>4,符合要求,就可以直接加入。 那么如果我们需要加入一个元素3呢? 为了维护单调栈 阅读全文
posted @ 2019-07-31 11:32 _Ackerman 阅读(254) 评论(0) 推荐(0)
摘要:c++语言中,multiset是<set>库中一个非常有用的类型,它可以看成一个序列,插入一个数,删除一个数都能够在O(logn)的时间内完成,而且他能时刻保证序列中的数是有序的,而且序列中可以存在重复的数。 简单的运用: 放入自定义的数据类型 但是这种写法的multiset其实是没有意义的,因为它 阅读全文
posted @ 2019-07-30 10:57 _Ackerman 阅读(619) 评论(0) 推荐(0)
摘要:算法实现原理 由于我们只需要确定节点对(i,j)之间是存在i->j的路径,所以,对于松弛操作可以有两种优化方式,(1)将所有节点对之间的存在的直接连通的边权重设为1,不连通设为0。然后运行该算法,如果mp[i][j] = 1;则(i,j)之间存在一条简单路径。如果mp[i][j] = 0,则两者之间 阅读全文
posted @ 2019-07-30 10:18 _Ackerman 阅读(272) 评论(0) 推荐(0)
摘要:一类不等式组的解 给定n个变量和m个不等式,每个不等式形如 x[i] - x[j] <= a[k] (0 <= i, j < n, 0 <= k < m, a[k]已知),求 x[n-1] - x[0] 的最大值。例如当n = 4,m = 5,不等式组如图一-1-1所示的情况,求x3 - x0的最大 阅读全文
posted @ 2019-07-30 10:06 _Ackerman 阅读(303) 评论(0) 推荐(0)
摘要:While exploring his many farms, Farmer John has discovered a number of amazing wormholes. A wormhole is very peculiar because it is a one-way path tha 阅读全文
posted @ 2019-07-30 00:05 _Ackerman 阅读(309) 评论(0) 推荐(0)
摘要:Several currency exchange points are working in our city. Let us suppose that each point specializes in two particular currencies and performs exchang 阅读全文
posted @ 2019-07-30 00:00 _Ackerman 阅读(265) 评论(0) 推荐(0)
摘要:Dijkstra算法是处理单源最短路径的有效算法,但它局限于边的权值非负的情况,若图中出现权值为负的边,Dijkstra算法就会失效,求出的最短路径就可能是错的。 这时候,就需要使用其他的算法来求解最短路径,Bellman-Ford算法就是其中最常用的一个。该算法由美国数学家理查德•贝尔曼(Rich 阅读全文
posted @ 2019-07-29 23:56 _Ackerman 阅读(356) 评论(0) 推荐(0)
摘要:每年,农夫约翰的N(1 <= N <= 20,000)只牛会参加“MooFest”,一个来自世界各地的牛的社交聚会。 MooFest有许多活动,包括干草堆积,篱笆跳跃,把尾巴钉在农夫的身上...当奶牛都站在同一个地方排队,他们会大声喊叫,吼声几乎震耳欲聋。事实上,每年参加了这个活动后,一些奶牛已经失 阅读全文
posted @ 2019-07-29 23:48 _Ackerman 阅读(253) 评论(0) 推荐(0)
摘要:Description Japan plans to welcome the ACM ICPC World Finals and a lot of roads must be built for the venue. Japan is tall island with N cities on the 阅读全文
posted @ 2019-07-29 23:34 _Ackerman 阅读(288) 评论(0) 推荐(0)
摘要:首先,先让我们了解下逆序对的概念: 如果存在正整数 i, j 使得 1 ≤ i < j ≤ n 而且 A[i] > A[j],则 <A[i], A[j]> 这个有序对称为 A 的一个逆序对,也称作逆序数。 现在直接拿POJ-2299作为例题来说下这个逆序对吧 具体的代码实现: 阅读全文
posted @ 2019-07-29 23:29 _Ackerman 阅读(558) 评论(0) 推荐(0)
摘要:树状数组基础 树状数组是一个查询和修改复杂度都为log(n)的数据结构。主要用于数组的单点修改&&区间求和. 另外一个拥有类似功能的是线段树. 具体区别和联系如下: 1.两者在复杂度上同级, 但是树状数组的常数明显优于线段树, 其编程复杂度也远小于线段树. 2.树状数组的作用被线段树完全涵盖, 凡是 阅读全文
posted @ 2019-07-29 16:15 _Ackerman 阅读(373) 评论(0) 推荐(0)
摘要:Increasing Subsequence (hard version) Increasing Subsequence (hard version) The only difference between problems C1 and C2 is that all values in input 阅读全文
posted @ 2019-07-29 00:17 _Ackerman 阅读(312) 评论(0) 推荐(0)
摘要:B. Odd Sum Segments time limit per test 3 seconds memory limit per test 256 megabytes input standard input output standard output You are given an arr 阅读全文
posted @ 2019-07-27 00:21 _Ackerman 阅读(390) 评论(0) 推荐(0)
摘要:1|0浅谈线段树 线段树个人理解和运用时,认为这个是一个比较实用的优化算法。这个东西和区间树有点相似,是一棵二叉搜索树,也就是查找节点和节点所带值的一种算法。使用线段树可以快速的查找某一个节点在若干条线段中出现的次数,时间复杂度为O(logN),这个时间复杂度非常的理想,但是空间复杂度在应用时是开4 阅读全文
posted @ 2019-07-26 16:04 _Ackerman 阅读(392) 评论(0) 推荐(0)
摘要:迪杰斯特拉(Dijkstra)算法是最短路径算法,用于计算一个节点到其他节点的最短路径。它的主要特点是以起始点为中心一层一层的向外走(广度优先搜索),直到找到终点 先看具体的例子来体会下它的算法思想: dist[]:起点到未被并入的顶点的最短距离【类比】Prim算法中的lowCost[]:当前生成树 阅读全文
posted @ 2019-07-24 17:33 _Ackerman 阅读(4483) 评论(1) 推荐(0)
摘要:暑假,小哼准备去一些城市旅游。有些城市之间有公路,有些城市之间则没有,如下图。为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程。 上图中有4个城市8条公路,公路上的数字表示这条公路的长短。请注意这些公路是单向的。我们现在需要求任意两个城市之间的最短路程,也就是求任意两个 阅读全文
posted @ 2019-07-24 11:54 _Ackerman 阅读(480) 评论(0) 推荐(0)
摘要:1.关于set C++ STL 之所以得到广泛的赞誉,也被很多人使用,不只是提供了像vector, string, list等方便的容器,更重要的是STL封装了许多复杂的数据结构算法和大量常用数据结构操作。vector封装数组,list封装了链表,map和set封装了二叉树等,在封装这些数据结构的时 阅读全文
posted @ 2019-07-24 10:27 _Ackerman 阅读(556) 评论(0) 推荐(0)
摘要:E. Subsequences (easy version) 本题和H题唯一的不同点是数据范围。 你有一个长度为nn的字符串。你可以选择它的任意一个子序列。子序列定义为可以将这个字符串删去若干个字符得到。特别的,空串也是一个子序列。 对于一个长度为mm的子序列,选出它的花费是n-mn−m,也就是你需 阅读全文
posted @ 2019-07-24 09:58 _Ackerman 阅读(258) 评论(0) 推荐(0)
摘要:Beans Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2637 Accepted Submission(s): 1302 Problem D 阅读全文
posted @ 2019-07-23 18:05 _Ackerman 阅读(624) 评论(0) 推荐(0)
摘要:定义状态 F[i][j]表示以a串的前i个整数与b串的前j个整数且以b[j]为结尾构成的LCIS的长度。 状态转移方程: ①F[i][j] = F[i-1][j] (a[i] != b[j]) ②F[i][j] = max(F[i-1][k]+1) (1 <= k <= j-1 && b[j] > 阅读全文
posted @ 2019-07-23 17:05 _Ackerman 阅读(3543) 评论(0) 推荐(3)
摘要:一.动态规划与递推解决01背包 初步分析: 0. 浅谈问题的分解 在处理到第i个物品时,可以假设一共只有i个物品,如果前面i-1个物品的总的最大价值已经定下来了,那么第i个物品选不选将决定这1~i个物品能带来的总的最大价值 刚刚是自顶向下,接下来反过来自底向上,第1个物品选不选可以轻松地用初始化解决 阅读全文
posted @ 2019-07-22 20:39 _Ackerman 阅读(507) 评论(0) 推荐(0)
摘要:一,问题描述 给定两个字符串,求解这两个字符串的最长公共子序列(Longest Common Sequence)。比如字符串1:BDCABA;字符串2:ABCBDAB 则这两个字符串的最长公共子序列长度为4,最长公共子序列是:BCBA 二,算法求解 这是一个动态规划的题目。对于可用动态规划求解的问题 阅读全文
posted @ 2019-07-22 16:49 _Ackerman 阅读(1032) 评论(0) 推荐(0)
摘要:描述 一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, ..., aN),我们可以得到一些上升的子序列(ai1, ai2, ..., aiK),这里1 <= i1 < i2 < ... < iK <= N。比如,对于序列(1, 阅读全文
posted @ 2019-07-22 16:21 _Ackerman 阅读(1253) 评论(0) 推荐(0)
摘要:Problem Description Given a specified total t and a list of n integers, find all distinct sums using numbers from the list that add up to t. For examp 阅读全文
posted @ 2019-07-21 19:30 _Ackerman 阅读(376) 评论(0) 推荐(0)
摘要:Problem Description 猜数字游戏是gameboy最喜欢的游戏之一。游戏的规则是这样的:计算机随机产生一个四位数,然后玩家猜这个四位数是什么。每猜一个数,计算机都会告诉玩家猜对几个数字,其中有几个数字在正确的位置上。比如计算机随机产生的数字为1122。如果玩家猜1234,因为1,2这 阅读全文
posted @ 2019-07-21 17:11 _Ackerman 阅读(740) 评论(0) 推荐(0)
摘要:Suppose that we have a square city with straight streets. A map of a city is a square board with n rows and n columns, each representing a street or a 阅读全文
posted @ 2019-07-21 16:24 _Ackerman 阅读(308) 评论(0) 推荐(0)
摘要:Problem Description A robot has been programmed to follow the instructions in its path. Instructions for the next direction the robot is to move are l 阅读全文
posted @ 2019-07-21 14:31 _Ackerman 阅读(377) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/1185/C1 题目大意: 有n个学生排队依次进行考试(一次只能有一名同学进行考试,俺也不知道为啥,俺也不敢问),考试时间共计m,每个考生考试需要若干时间,考试时间结束后,没有时间考试的同学就不能考了。输入分 阅读全文
posted @ 2019-07-21 14:06 _Ackerman 阅读(333) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/1185/B 题目大意:Methodius想发一封邮件给他的朋友(应还要打印出来),但是它的键盘坏了,请你判断从键盘输入的内容,是否能按照他的想法打印出来(打印规则是可以输入重复的字符,打印机会过滤掉多余的重 阅读全文
posted @ 2019-07-21 12:39 _Ackerman 阅读(304) 评论(0) 推荐(0)
摘要:Problem Description The doggie found a bone in an ancient maze, which fascinated him a lot. However, when he picked it up, the maze began to shake, an 阅读全文
posted @ 2019-07-20 21:56 _Ackerman 阅读(347) 评论(0) 推荐(0)
摘要:相信大家都知道什么是全排列,但是今天的全排列比你想象中的难一点。我们要找的是全排列中,排列结果互不相同的个数。比如:aab 的全排列就只有三种,那就是aab,baa,aba。 思路: 这道题的思路其实挺简单的,就是dfs去搜索就可以了。 但是有一个问题就是 如何去防止重复呢? 先想一下简化的问题吧, 阅读全文
posted @ 2019-07-20 17:52 _Ackerman 阅读(946) 评论(0) 推荐(0)
摘要:用 0,1,2,3 \cdots 70,1,2,3⋯7 这 88 个数组成的所有整数中,质数有多少个(每个数字必须用到且只能用一次)。 提示:以 00 开始的数字是非法数字。 阅读全文
posted @ 2019-07-20 17:18 _Ackerman 阅读(315) 评论(0) 推荐(0)
摘要:N个整数组成的序列a[1],a[2],a[3],…,a[n],从中选出一个子序列(a[i],a[i+1],…a[j]),使这个子序列的和>0,并且这个和是所有和>0的子序列中最小的。 例如:4,-1,5,-2,-1,2,6,-2。-1,5,-2,-1,序列和为1,是最小的。 收起 N个整数组成的序列 阅读全文
posted @ 2019-07-20 16:48 _Ackerman 阅读(398) 评论(0) 推荐(0)
摘要:今天蒜头君拿到了一个数轴,上边有 nn 个点,但是蒜头君嫌这根数轴不够优美,想要通过加一些点让它变优美,所谓优美是指考虑相邻两个点的距离,最多只有一对点的距离与其它的不同。 蒜头君想知道,他最少需要加多少个点使这个数轴变优美。 输入格式 输入第一行为一个整数 n(1 \leq n \leq 10^5 阅读全文
posted @ 2019-07-20 15:08 _Ackerman 阅读(574) 评论(0) 推荐(0)
摘要:在一个星光摧残的夜晚,蒜头君一颗一颗的数这天上的星星。 蒜头君给在天上巧妙的画了一个直角坐标系,让所有的星星都分布在第一象。天上有 nn 颗星星,他能知道每一颗星星的坐标和亮度。 现在,蒜头君问自己 qq 次,每次他问自己每个矩形区域的星星的亮度和是多少(包含边界上的星星)。 输入格式 第一行输入一 阅读全文
posted @ 2019-07-20 11:15 _Ackerman 阅读(387) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/822/A 思路: 刚开始傻乎乎的真的去算阶乘,然后再求它们的最大公约数。但是其实想一想,大的那个数的阶乘肯定包括小的那个数的阶乘。所以,它们的最大公约数就是小的那个数的阶乘。 阅读全文
posted @ 2019-07-19 23:48 _Ackerman 阅读(298) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/716/A 题目大意: 把题读懂就是水题了。题目是说打下下一个字母的时候,如果和之前字母打下的时间不超过k的话,则保留前面的继续打,如果超过了,则前面的字母全部消失,只留下这一个字母。 哭泣。一直在读错题意! 阅读全文
posted @ 2019-07-19 22:44 _Ackerman 阅读(297) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/459/B 这道题是个水题,但是如果你想要暴力去做的话是不能过的。 思路: 首先我们对数组进行排序,找到最大值和最小值。然后统计最大值和最小值出现的次数,然后相乘就可以了。 但是! 如果最大值和最小值相等呢? 阅读全文
posted @ 2019-07-19 20:58 _Ackerman 阅读(272) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/467/B 题目大意:有 m + 1 个 player 和 n 种类型的 soldiers。每个player被赋予一个数xi,然后将xi 看成二进制数,规定第 j 位 如果为1,表示这个 player 有j 阅读全文
posted @ 2019-07-18 23:36 _Ackerman 阅读(286) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2001 思路: 从根结点开始遍历,如果找到一个点它只被访问了一次,那么到它一定就是最短的而且不会重复的前缀。 具体代码: 阅读全文
posted @ 2019-07-18 21:10 _Ackerman 阅读(371) 评论(0) 推荐(1)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1075 题目大意: 给你一串火星文,让你输出翻译后的版本 思路: 这题的思路其实挺简单。但是如何进行输入想了好久! 具体的还是看代码吧(代码上有注释): 阅读全文
posted @ 2019-07-18 21:04 _Ackerman 阅读(1217) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1247 思路: 把字符串分成两个部分,看这两个部分是不是也在字典树上。如果在,就输出这个字符串。 这题我只想说静态内存真是容易爆! 阅读全文
posted @ 2019-07-18 20:53 _Ackerman 阅读(308) 评论(0) 推荐(0)
摘要:小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。 这一天,他们遇到了一本词典,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能对于每一个我给出的字符串,都在这个词典里面找到以这个字符串开头的所有单词呢?” 身经百战 阅读全文
posted @ 2019-07-18 20:24 _Ackerman 阅读(587) 评论(0) 推荐(0)
摘要:什么是字典树? 字典树我觉得更应该叫做前缀树,因为用它来求字符串的前缀非常方便。 通过上面这个图,我们不难发现: 1、字典树用边表示字母 2、有相同前缀的单词公用前缀节点(正是因为这个缘故我们去寻找一个字符串的前缀非常的方便) 3、整棵树的根节点是空的。 4、每个单词结束的时候用一个特殊字符表示,图 阅读全文
posted @ 2019-07-18 20:14 _Ackerman 阅读(417) 评论(0) 推荐(0)
摘要:一、算法背景 给定一个主串(以 S 代替)和模式串(以 P 代替),要求找出 P 在 S 中出现的位置,此即串的模式匹配问题。 Knuth-Morris-Pratt 算法(简称 KMP)是解决这一问题的常用算法之一,这个算法是由高德纳(Donald Ervin Knuth)和沃恩·普拉特在1974年 阅读全文
posted @ 2019-07-17 00:06 _Ackerman 阅读(758) 评论(0) 推荐(0)
摘要:题目链接:https://cn.vjudge.net/problem/28833/origin 题目大意: 给1个n*m的网格,上面有的点能走,有的点不能走(墙),然后有的点是火源,火源和人一样,每次都是上下左右四个方向蔓延,速度一样是1,火也不可以从墙上跨过去,给你人的起点,终点是只要走到边界就行 阅读全文
posted @ 2019-07-16 21:34 _Ackerman 阅读(344) 评论(0) 推荐(0)
摘要:题目链接:http://acm.fzu.edu.cn/problem.php?pid=2150 题目大意: 有一张n×m的地图,地图上 ‘#’ 表示草地,’.’ 表示空地,一哥们可以选择至多两个草地点燃(非法操作,请小伙伴们不要模仿),火势会蔓延到这个草地的四周的草地,且需要一个单位的时间,问能否把 阅读全文
posted @ 2019-07-16 21:30 _Ackerman 阅读(359) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2612 题目大意: M和Y想要在KFC见面,现在让你去找到一个使两个人到同一个KFC总花费时间最小的地方,然后输出最小的花费时间 (花费时间 = 步数*11) 思路: 先对M跑一次BFS并且用一个数组记录 阅读全文
posted @ 2019-07-16 21:07 _Ackerman 阅读(356) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 题目大意: 给你两个杯子还有一瓶可乐,问你可不可以通过杯子以及可乐之间互相倒来倒去 使最后两个人喝到相同的可乐,注意杯子没有刻度 思路: 这道题很像曾经做过的小学题目,我们不妨把所有情况都列举出来 阅读全文
posted @ 2019-07-16 21:00 _Ackerman 阅读(386) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1060 思路: 令M=N^N; 分别对等式两边取对数得 log10(M)=N*log10(N),得M=10^(N*log10(N)); 令N*log10(N)=a+b,a为整数,b为小数; C函数:log 阅读全文
posted @ 2019-07-15 22:08 _Ackerman 阅读(316) 评论(0) 推荐(0)
摘要:https://blog.csdn.net/wlxsq/article/details/49717209 阅读全文
posted @ 2019-07-15 22:03 _Ackerman 阅读(291) 评论(0) 推荐(0)
摘要:大数除法 不同于一般的模拟,除法操作步数模仿手工除法,而是利用减法操作实现的。 其基本思想是反复做除法,看从被除数里面最多能减去多少个除数,商就是多少。 逐个减显然太慢,要判断一次最多能减少多少个整的10的n次方。 以7546除23为例。 先减去23的100倍,就是2300,可以减3次,余下646。 阅读全文
posted @ 2019-07-15 22:01 _Ackerman 阅读(5369) 评论(0) 推荐(3)
摘要:首先说一下乘法计算的算法:同样是模拟人工计算时的方法。 从低位向高位乘,在竖式计算中,我们是将乘数第一位与被乘数的每一位相乘,记录结果之后,用第二位相乘,记录结果并且左移一位,以此类推,直到计算完最后一位,再将各项结果相加,得出最后结果。计算的过程基本上和小学生列竖式做乘法相同。为编程方便,并不急于 阅读全文
posted @ 2019-07-15 21:51 _Ackerman 阅读(793) 评论(0) 推荐(0)
摘要:思路: 和大数加法是一样的,只不过加变成了减。 阅读全文
posted @ 2019-07-15 21:29 _Ackerman 阅读(1414) 评论(0) 推荐(0)
摘要:最常规的大数加法 (两个数都是非负的整数) 思路: 用字符串的方式去存储我们需要计算的数 ,但是要注意的一点就是我们是倒过来存储这个大数的 比如: 123456789 我们存储的时候是存成 987654321 为什么要这么干? 我觉得是为了便于后面我们的进位操作吧 最常规的大数加法 (两个数都是非负 阅读全文
posted @ 2019-07-15 21:13 _Ackerman 阅读(12095) 评论(3) 推荐(4)
摘要:题目链接:http://poj.org/problem?id=3984 思路: 这道题的难点我觉得主要是在记录路径上面。 我们不能去记录当前的步数的走的坐标(x,y) ,因为这样会被后面的覆盖。 所以我们记录的应该是前一步所走的 具体代码: 阅读全文
posted @ 2019-07-15 00:25 _Ackerman 阅读(844) 评论(0) 推荐(1)
摘要:题目链接:http://poj.org/problem?id=3414 思路: 因为有六种操作,所以六种操作中合法的都加入队列中BFS 如何去输出路径呢? 我们不妨设一个string数组,它的索引就和我们的步数有关,然后按顺序输出就可以了。 之后有一道题的记录路径的方式也比较巧妙:poj 3984 阅读全文
posted @ 2019-07-15 00:22 _Ackerman 阅读(314) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3087 题目大意:给你一个字符串s1、一个字符串 s2 和一个期望得到的字符串 ,每次先放一个s2 再放一个 s1 ,得到一个新的字符串,然后取这个新字符串的前一半为s1 后一半为 s2 问最少经过几次变换可以得到期望的字符串 思路: 阅读全文
posted @ 2019-07-15 00:12 _Ackerman 阅读(277) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3126 题目大意:给你一个四位数N 和 一个四位数M ,从 N -> M 每次只可以改变一个四位中的任何一位数,但是改变后的数必须是素数,问你最少可以经过多少步使 N 变成 M 思路: 判断素数的话直接利用埃筛就可以了,因为只能改变一位 阅读全文
posted @ 2019-07-15 00:06 _Ackerman 阅读(690) 评论(0) 推荐(1)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1427 思路: 这道题的难点在于你先进行哪几个数的运算。而不是简单的先处理第一个,再处理第二个,再处理第三个,最后处理第四个。 具体的还是看代码的实现吧: 阅读全文
posted @ 2019-07-14 23:55 _Ackerman 阅读(470) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3279 题目大意:有一个n*m的棋盘,0表示白色,1表示黑色。每次可以翻转当前位置,它的上下左右四个位置也会被相应翻转。问最少翻转多少次会使所有棋面显示为白色,并给出需要翻转的位置,0表示不翻转,1表示翻转。 思路:第一行的翻转状态决 阅读全文
posted @ 2019-07-14 23:40 _Ackerman 阅读(298) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=1979 题目大意: 有一个长方形的房间,上面铺着正方形的瓷砖。每块瓷砖都是红色或黑色的。一个男人站在一块黑色的瓷砖上。从一个瓦片,他可以移动到四个相邻瓦片中的一个。但是他不能在红瓦上移动,他只能在黑瓦上移动。 编写一个程序,通过重复上面 阅读全文
posted @ 2019-07-12 11:36 _Ackerman 阅读(371) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=1321 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。 Input 输入含有多组测 阅读全文
posted @ 2019-07-12 10:48 _Ackerman 阅读(398) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/277/A 题目大意: n个人,每个人会一些语言,两个人只要有会一门相同的语言就可以交流,问为了让这n个人都交流,至少还得学多少门语言 思路: 先根据n个人之间他们会的语言,建边 再dfs找出有多少个联通块a 阅读全文
posted @ 2019-07-12 10:09 _Ackerman 阅读(391) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/377/A 思路: 因为题目说了肯定存在一个解!所以第一次 dfs 之后我们就可以判断还差多少 ,然后找到后面可以继续 dfs的,直接在原先的基础上处理就可以了 这题我本想找到一个符合要求的点去 dfs ,如 阅读全文
posted @ 2019-07-12 00:25 _Ackerman 阅读(322) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/217/A 本题题意:在坐标系上有n个点,给出n个点的坐标,然后只能竖直或者横向移动,问最少需要建立几个中间点才能够从一个点出发到达所有的点 这道题是联通块的题 ,最后求出联通块块数 - 1 就可以了! 也可 阅读全文
posted @ 2019-07-12 00:19 _Ackerman 阅读(278) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/445/A 题目大意: 一个棋盘上有一些格子是坏的,另一些是正常的。对于每一个正常的格子,都要在上面放上棋子。 请找到一组解使没有两个相同颜色的棋子相邻(两个格子相邻为它们存在共同的边) 输入格式: 第一行为 阅读全文
posted @ 2019-07-12 00:16 _Ackerman 阅读(220) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/580/C 题目大意:给定一棵 N 个节点的有根树(其中根节点始终为 1 号节点),点有点权,点权只有 1 和 0 两种,求从根节点到叶子节点的路径中,有多少条路径满足:路径上最大连续点权为 1 的节点个数不 阅读全文
posted @ 2019-07-12 00:08 _Ackerman 阅读(206) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/115/A 题目大意: 每个人都有一个或者没有直属上司,现在想举办一个party,这个party要求参加的人人人平等不存在上下级关系。 问最少要分几组? 思路: 其实就是每个人都有一个或者没有父亲节点,我们要 阅读全文
posted @ 2019-07-11 23:35 _Ackerman 阅读(264) 评论(0) 推荐(0)
摘要:原题hdoj2553: 题目描述:在一个N×N的方格中放置N个皇后,使其不能出现在同一列同一行同一对角线上,求有多少种放置方法。 题目的思路还是和八皇后是一样的。唯一要注意的就是不能每次去找都要 dfs ,这样太消耗时间。因为n 的数据最多就到10,所以我们直接打个表存储就好了 AC代码: 阅读全文
posted @ 2019-07-11 18:40 _Ackerman 阅读(235) 评论(0) 推荐(0)
摘要:八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 八皇后问题可以用 dfs 来解决 第一种: 根据行 (row) 阅读全文
posted @ 2019-07-11 18:28 _Ackerman 阅读(900) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/446/A 题目大意:让你找到一个区间,你可以改变这个区间的一个数,然后使得这个区间是严格上升的 且这个区间一定是最长的,输出区间长度 思路: 用dp1[i] 记录 i 之前(包括 i 自己) 连续序列长度( 阅读全文
posted @ 2019-07-11 15:17 _Ackerman 阅读(288) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/1007/A 题目大意:就是给出长度为n的序列(a[i]),让你对它进行重新排序(b[i]),使b[i]>a[i] 的数目最多 思路: 二分就是了,找到第一个大于key的就是最完美的选择(但是要注意如果选过的 阅读全文
posted @ 2019-07-11 12:01 _Ackerman 阅读(305) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/676/C 题目大意: 给你一串字符串(全由 a,b 组成) ,现在你有k次机会可以把a替换成b 或者把b替换成a ,问最长的连续一致的子序列长度 思路: 这道题和 Leetcode 1004 可以说是完全一 阅读全文
posted @ 2019-07-11 11:20 _Ackerman 阅读(292) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/716/B 题目大意:字符串中的 '?' 可以用A->Z任何一个来替换 问能不能通过替换使字符串有一个连续的A->Z的子序列 可以就输出 不可以就输出-1 思路: 这道题和 Leetcode 1004 很像, 阅读全文
posted @ 2019-07-11 10:53 _Ackerman 阅读(357) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/978/C 题目的意思:告诉你几个宿舍,然后每个宿舍有多少个房间,每个房间的编号是一次从第一个加起来的,现在给你一些信封,信封上只有房间号,现在让我们判断这个房间是属于哪个宿舍,在这个宿舍里他是第几个房间。 阅读全文
posted @ 2019-07-10 22:34 _Ackerman 阅读(498) 评论(0) 推荐(0)
摘要:【二分查找】 二分查找是一个基础的算法,也是面试中常考的一个知识点。二分查找就是将查找的键和子数组的中间键作比较,如果被查找的键小于中间键,就在左子数组继续查找;如果大于中间键,就在右子数组中查找,否则中间键就是要找的元素。 常规的二分查找: 这里强调下不要忘记 left <= right 的等号 阅读全文
posted @ 2019-07-10 21:00 _Ackerman 阅读(454) 评论(2) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/580/B 题目大意: n个人,告诉你n个人的工资,但是请的客人的收入差值不能够超出给定的数字。每个人还有一个权值,现在从这n个人中选出m个人,使得他们的权值之和最大 思路:首先对每个人的工资进行排序,然后用 阅读全文
posted @ 2019-07-10 19:05 _Ackerman 阅读(229) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/279/B 题目大意:有n本书,阅读第i本书所需要的时间是a[i] 现在你有 t 时间 ,你最多能阅读几本书 (注意读书必须连续读) 连续区间的问题我感觉基本上尺取法都可以解决 ,这里用的也就是尺取法 AC代 阅读全文
posted @ 2019-07-10 18:15 _Ackerman 阅读(280) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/466/C 题目大意: 给你一个长度为n的序列,让你将其分为三个区间,每个区间的和相等,求分的方法有几种? 正好最近学了前缀和,这道题目恰巧是一个前缀和的题 首先我们进行判断该序列的总和是否可以整除3: 如果 阅读全文
posted @ 2019-07-10 17:12 _Ackerman 阅读(402) 评论(0) 推荐(0)
摘要:尺取法: 顾名思义,像尺子一样取一段,借用挑战书上面的话说,尺取法通常是对数组保存一对下标,即所选取的区间的左右端点,然后根据实际情况不断地推进区间左右端点以得出答案。尺取法比直接暴力枚举区间效率高很多,尤其是数据量大的时候,所以说尺取法是一种高效的枚举区间的方法,是一种技巧,一般用于求取有一定限制 阅读全文
posted @ 2019-07-10 11:31 _Ackerman 阅读(478) 评论(0) 推荐(0)
摘要:【前缀和】 什么是前缀和?前缀和是一个数组的某项下标之前(包括此项元素)的所有数组元素的和。 设b[]为前缀和数组,a[]为原数组,根据这句话可以得到前缀和的定义式和递推式: 定义式 递推式 一维前缀和 二维前缀和 【一维前缀和】 根据上面的定义,我们可以很容易得到 sum[i] = sum[i-1 阅读全文
posted @ 2019-07-10 11:11 _Ackerman 阅读(23442) 评论(2) 推荐(14)
摘要:题目链接:http://codeforces.com/problemset/problem/313/B 题目的意思就是:给你一个字符串它只有# 和 . 字符,给你一段区间让你统计[x,y] ,让你统计这个区间内 s[i] = s[i+1] 的个数 思路: 感觉有点像前缀和的思想。 我们统计前i个 s 阅读全文
posted @ 2019-07-10 10:22 _Ackerman 阅读(325) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/474/B 题意就是从1开始,然后告诉你每堆的长度,然后再问你某一数据在第几堆 刚开始想这道题的时候,是想每次把每堆的终点存储起来,然后如果某个数据value大于前面a[i-1]小于等于后面a[i] 那么它就 阅读全文
posted @ 2019-07-09 08:16 _Ackerman 阅读(260) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/268/B 大概的意思就是说有n个按钮,但是这n个按钮有唯一的正确的组成,看你最坏的情况找到这唯一的组成需要几次。 这题目是一个找规律的题目,但是一开始自己认为这个规律是递归的,所以一直没有找到一个正确的公式 阅读全文
posted @ 2019-07-08 17:37 _Ackerman 阅读(315) 评论(0) 推荐(0)
摘要:题目链接:http://codeforces.com/problemset/problem/577/A 大致的题意就是 矩阵中的例如 a[i][j] = i*j 然后让你去找一个特定数字m出现了几次的问题 刚开始想的时候就想着打出矩阵之后查找 然后被告知超时了 然后就想着边打矩阵边查找 然后还是超时 阅读全文
posted @ 2019-07-05 11:26 _Ackerman 阅读(317) 评论(0) 推荐(0)