搜索
包含 二分,dfs,bfs
星空皓月
工欲善其事,必先利其器。
展开
-
LeetCode:1161. 最大层内元素和【BFS层序遍历】
用BFS层序遍历来写。当前队列个数就是当前层的节点个数。再压入下一层节点的同时,计算当前层内元素和。原创 2022-08-01 00:21:33 · 126 阅读 · 0 评论 -
LeetCode:733. 图像渲染【BFS】
力扣每日一题原创 2022-07-19 20:27:09 · 155 阅读 · 0 评论 -
西南交大峨眉校区INT杯2020-J.爬山【二分答案】
思维经典的二分答案,二分最小距离的最大值。(题目中的M,N和输入描述的不一致,我这儿M代表最多移走M,有N块)由于题目要求最小距离的最大值,就想到二分,这个题要求的就是最小值的极大化;移动的数目肯定要是M才是最优的,不妨设d是已知的,现在来考虑c(d)怎么来写?(1).循环算出相邻之间的石头,如果小于d,则移动这块石头;否则就算下一个相邻的石头;(2).最后考虑移动石头的数目如果小于等于M,则枚举长度偏小了;如果移动石头数目大于M,则枚举长度偏大了。AC代码#include<bits/s.原创 2020-12-15 10:11:57 · 142 阅读 · 0 评论 -
HDU - 6736 - Forest Program【组合数学 + DFS求环长】
求无向图环长我所知道的有两种解法,第一种就是染色,第二种是双连通分量(不会)。题意:给出一个图,可以删除任意条边(可不删),删除一些边后,让这个图变成森林(连通块全部都是树)。求有多少种删法。思路:1.如果是一个环且环长为len,那么必须删除一条边,所以删法就有2n - 1组合数学。2.如果不形成环,那么就可以不删除,删法就有2n种。所以现在我们只需要求出每个环的长度(第一种情况),m - 所有环的总长度(第二种情况)。最后用快速幂算出即可。怎样求环的长度。我们可以用个vis数组进行.原创 2020-09-19 16:03:11 · 127 阅读 · 0 评论 -
Atcoder - abc176 -- D - Wizard in Maze【BFS + 双端队列】
题意给定一个地图,有起点和终点。现在有两种移动方法:1.上下左右移动;2.使用魔法,可以向(以当前为中心的位置5 x 5的正方形内的广场)移动。问从起点到终点至少需要使用多少次魔法,如果不能到达则输出-1.思路如果一条路可以通过第一种方式到达,那就尽量不采用第二种方法,如果不没有达到终点,那么就用第二种方法从第一种方法走的所有路中探索没有走过的路,如果能达到终点,那么输出最小使用的魔法次数,如果不能那么输出-1。根据上面的思路,我们可以采用双端队列 + bfs来操作,将第一种移动方法走的原创 2020-08-23 18:41:52 · 784 阅读 · 0 评论 -
HDU - 2612-- Find a way【BFS + 记录路径】
题意Yifenfei的家在乡下,而Merceki的家在城市中心。 因此,易芬菲与Merceki安排了在肯德基会面。 宁波有很多肯德基,他们想选择一种让总时间最短的肯德基。现在给您一张宁波地图,yifenfei和Merceki都可以通过成本11分钟左右上下移动到相邻的道路。思路分别记录yifenfei和Merceki的路径,然后找到肯德基最短的那条路径即可。先通过bfsY记录yifenfei到达每个肯德基的路径,然后在bfsM走Merceki的路径时,如果是肯德基则取最小值。和UVA - 1原创 2020-08-11 22:13:06 · 318 阅读 · 0 评论 -
UVA - 11624 -- Fire!【BFS + 记录路径】
题意给定一个地图,joe想要在地图中逃生,只需要走出边界即可。但是有火的威胁,如果某处位置着火,那么joe就不能走。joe能往四周走,火也能往四周蔓延,请问joe能否逃生,如果能输出最短时间。1. J是joe的位置2. F是火的位置3. #是墙4. .代表火能蔓延,并且joe也能走。思路可以当作为捕食关系,火能否捕食joe,bfs走一遍火每个位置蔓延的时间,bfs再走一遍joe到达的时间,如果fire[i][j]>joe[i][j],则说明joe不能到达此位置。注:可能存在多原创 2020-08-09 20:56:03 · 151 阅读 · 0 评论 -
POJ - 3279 -- Fliptile【搜索 + 思维】
题意给定一个地图,地图里有黑白格子(背面是其相反颜色格子),需要将黑色的格子全部翻转为白色的。如果能翻转为白色的,输出最小次数的翻转情况,如果有多个最小次数,则输出字典序最小的,如果不能翻转输出"IMPOSSIBLE".思路1.是否有解:在翻转此位置时,判断此位置上方是否需要翻转,如果需要,则翻转,直到前n - 1行都翻转成白色,此时判断最后一行是否有黑色格子,如果有,则不满足题意要求。2.当前位置是否翻转:首先假设此位置是白色的,被翻转了奇数次后是黑色,偶数次后是白色。用一个数组记录翻转原创 2020-08-09 18:52:52 · 173 阅读 · 0 评论 -
HDU - 1540 -- Tunnel Warfare【线段树区间求和 + 二分答案】
DescriptionDuring the War of Resistance Against Japan, tunnel warfare was carried out extensively in the vast areas of north China Plain. Generally speaking, villages connected by tunnels lay in a line. Except the two at the ends, every village was direct原创 2020-08-06 23:12:12 · 336 阅读 · 0 评论 -
HDU - 1495 -- 非常可乐【BFS】
Description大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101)毫升 (正好装满一瓶) ,它们三个之间可以相互倒可乐 (都是没有刻度的,且 S==N+M,101>S>0,N>0,M>0) 。聪明的ACMER你们说他们能平分吗?如果能请输出倒可乐的最少的次原创 2020-08-04 18:09:31 · 116 阅读 · 0 评论 -
CF - 780 --C. Andryusha and Colored Balloons【BFS + 思维】
题意给定一个1 到 n 的正方形,有n - 1个关系,每个关系是两个正方形相邻,问从1号正方形开始染色,每个正方形周围的颜色和本身不相同,问最多需要多少种颜色思路PS:先开始想着bfs搜索,然后暴力枚举前面没用过的颜色,先用小的,结果T了,很现实。转换思路, 分析枚举当前的结点时,这个结点的颜色收到父亲结点,和祖父结点的影响。例如此图当枚举3号结点时它就受到它父亲结点(1号结点)的影响,由于3号结点没有祖父结点,所以不管。再枚举到2号结点时,他就不能和(1, 3结点)的颜色相同。再到5号结点时.原创 2020-08-03 22:13:56 · 341 阅读 · 0 评论 -
FZU - 2150 -- Fire Game【两头BFS】
Fire GameDescriptionFat brother and Maze are playing a kind of special (hentai) game on an N*M board (N rows, M columns). At the beginning, each grid of this board is consisting of grass or just empty and then they start to fire all the grass. Firstly th原创 2020-08-02 23:16:43 · 224 阅读 · 0 评论 -
POJ - 3414 -- Pots【BFS + 记录路径】
PotsDescriptionYou are given two pots, having the volume of A and B liters respectively. The following operations can be performed:1.FILL(i) fill the pot i (1 ≤ i ≤ 2) from the tap;2.DROP(i) empty the pot i to the drain;3.POUR(i,j) pour原创 2020-08-02 23:00:20 · 457 阅读 · 0 评论 -
HDU - 5936 -- Difference【折半枚举 + 公式推导】
22 23 2题意已知 公式f(y, k) = Σ(zk) z代表y十进制每一位。eg: f(233, 2) = 22 + 32 +32 = 22现在已知x和k,求满足 x = f(y, k) - y等式的y,并求y的个数。题目给定x[0, 1e9],那么假设y最大是1e10 - 1,那么f(y, k) 最大也就是7e9 - 8e9 之间的数,再减去个y就小于0了,所以y不会超过1e10.如果暴力枚举每一位,然后再求 f(y, k) - y肯定会T,这里就需要巧妙地将y折半枚举...原创 2020-08-02 22:50:30 · 225 阅读 · 0 评论 -
POJ - 2549 -- Sumsets【折半枚举】
SumsetsDescriptionGiven S, a set of integers, find the largest d such that a + b + c = d where a, b, c, and d are distinct elements of S.InputSeveral S, each consisting of a line containing an integer 1 <= n <= 1000 indicating the number of eleme原创 2020-08-01 23:29:43 · 213 阅读 · 0 评论 -
HDU - 5884 -- Sort【二分 + k叉哈夫曼树】
SortDescriptionRecently, Bob has just learnt a naive sorting algorithm: merge sort. Now, Bob receives a task from Alice.Alice will give Bob N sorted sequences, and the i-th sequence includes ai elements. Bob need to merge all of these sequences. He can原创 2020-08-01 11:13:40 · 158 阅读 · 0 评论 -
计蒜客 - T2155 -- 数的划分【记忆化搜索 or dp or 搜索】
数的划分Description将整数n分成k份,且每份不能为空,任意两份不能相同(不考虑顺序)。例如:n=7,k=3,下面三种分法被认为是相同的。1,1,5; 1,5,1; 5,1,1;问有多少种不同的分法。Input有多则测试数据。对于每组测试数据,仅有一行,包括两个整数n,k (6<n<=200,2<=k<=6)。Output对于每组测试数据,输出一个整数,即不同的分法。Sample Input7 3Sample Output4Hint输入: 7原创 2020-07-28 18:52:38 · 234 阅读 · 0 评论 -
HDU - 1978 -- How many ways【记忆化搜索】
How many waysDescripation这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m)。游戏的规则描述如下:1.机器人一开始在棋盘的起始点并有起始点所标有的能量。2.机器人只能向右或者向下走,并且每走一步消耗一单位能量。3.机器人不能在原地停留。4.当机器人选择了一条可行路径后,当他走到这条路径的终点时,他将只有终点所标记的能量。如上图,机器人一开始在(1,1)点,并拥有4单位能量,蓝色方块表示他所能到达的点,如果他在这次路径选择中选择原创 2020-07-28 18:41:19 · 138 阅读 · 0 评论 -
POJ - 1321 -- 棋盘问题【DFS + 回溯】
棋盘问题Description在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。Input输入含有多组测试数据。每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n当为-1 -1时表示输入结束。随后的n行描述了棋盘的形状:每行有n个字符,其中原创 2020-07-28 18:37:57 · 123 阅读 · 0 评论 -
CF - 627 -- D. Pair of Topics【二分 or 尺取法】
D. Pair of Topics题意给出两个数组a和b, 问满足(i < j) 并且 ai + aj > bi + bj;思路(二分)令ci = ai - bi, 讲上面等式变形为 ci + cj > 0;满足这个式子,从前往后枚举ci,那么就无关i<j,将c数组升序排列,如果ci>0 则后面的全部满足,如果ci<= 0 则用二分找恰好大于|ci|的位置,这个位置以及后面的数都满足。时间复杂度为 O(n*logn).AC代码#include<cs原创 2020-07-26 19:05:19 · 254 阅读 · 8 评论 -
CF - 485 -- D. Maximum Value【数学+二分】
D. Maximum Value题意给你n个数,找出ai % aj最大,并且ai大于aj。思路:已知一个大的数a,那么他取模最大的数,肯定在a/2的右边部分。那么出现一个问题就是,如果逆向枚举我们会发现,假如一个数只有其一半的左边的数,那么就不好求了,所以我们需要逆向来看,已知一个小数a,那么他取模最大的数,肯定在其二倍的左边部分。这样我们可以从最小的数开始枚举,每次找arr[i]的倍数的前一个数(记这个位置位pos)。这个就是pos位置以前的数 mod arr[i] 是最大的。AC代码原创 2020-07-19 12:12:42 · 222 阅读 · 0 评论 -
CF - 483B -- Friends and Presents【容斥+二分】
Friends and Presents题意:有一个1到m的连续集合,让你找出cnt1个不被x整除的数,cnt2个不被y整除的数。已知cnt1,cnt2,x,y,求最小的m。思路:我们根据题意画出图可知,本题是一个容斥原理。然后我们知道如果满足条件,那么大于m的也能满足条件,所以这个题就是求一个最大值极小化。就用二分来求。AC代码#include<iostream>#include<cstdio>#include<algorithm>using n原创 2020-07-19 12:01:07 · 135 阅读 · 1 评论 -
HihoCoder - 1438 -- Gas Stations【二分】
题目描述There are N gas stations on a straight, M kilo-meters long highway. The i-th gas station is Ai kilo-meters away from the beginning of the highway. (It is guaruanteed that there is one gas station...原创 2020-03-26 15:15:29 · 194 阅读 · 0 评论 -
cf--contest1324:D. Pair of Topics+二分
传送门D. Pair of Topics题意:给两个数组a,b,问满足ai+aj>bi+bj (j>i)有几种?思路可将上面式子变形,(ai-bi)+(aj-bj)>0,令ci=ai-bi,问题转化为,从ci中选出两个数加起来大于0的即可(注意是组合不是排列)。解题步骤:1.将ci进行排序。2.当ci>0:进行计数num个,答案加上num*(num-1)/2,...原创 2020-03-13 09:47:43 · 142 阅读 · 0 评论 -
河里面的石头+二分
题目描述有一条河,河中间有一些石头,已知石头的数量和相邻两块石头之间的距离。现在可以移除一些石头,问最多移除m块石头后(首尾两块石头不可以移除),相邻两块石头之间的距离的最小值最大是多少。输入格式多组输入(<=20组数据,读入以EOF结尾)每组第一行输入两个数字,n(2<=n<=1000)为石头的个数,m(0<=m<=n-2)为可移除的石头数目随后n-1个数...原创 2020-02-19 18:46:28 · 1876 阅读 · 0 评论