
DFS;BFS
文章平均质量分 50
ssl_fuyang
ヾ(◍°∇°◍)ノ゙
展开
-
子集和的元素和【二分】【DFS】
剪枝原创 2022-09-03 14:52:12 · 150 阅读 · 0 评论 -
斗地主题【暴力】【DFS】
>Linkybtoj斗地主题>Descriptionn≤20n \le 20n≤20>解题思路由于对面只有一张大王,我们最多可以打一张单牌。观察一下,发现形式6、9、10、11是可以忽略的,它们可以根据其它的形式打出来对子、三张牌、炸弹、三带一、四带二我们扫一遍,记录一下三张牌、炸弹的数量,就可以组合好。就差顺子的处理了一开始我是想先把其它处理完再处理顺子,但是这样其它的牌就不能全部组合起来,不然会影响顺子,所以这样做会超时(两个深搜)那就想先处理顺子再处理其它牌,原创 2021-11-19 08:04:28 · 147 阅读 · 0 评论 -
道路与航线【二分】【BFS】
>Linkybtoj道路与航线>Description>解题思路直接二分答案,BFS判断是否能通过在这个时间 mid 之前建的边 从a到b / 从b到a>代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#define N 6000010using namesp原创 2021-11-13 17:16:24 · 410 阅读 · 0 评论 -
Balanced Cow Subsets G【折半搜索】【状压】
>Linkluogu P3067>Description给n个数,从中任意选出一些数,使这些数能分成和相等的两组。求有多少种选数的方案。N≤20,ai≤108N\le 20, a_i \le 10^8N≤20,ai≤108>解题思路考虑普通的爆搜,用一个sumsumsum表示当前的离两组相等的“差值”,每个数就有三种状态:不选,sumsumsum不变选进第一组,sum+aisum+a_isum+ai选进第二组,sum−aisum-a_isum−ai最后原创 2021-11-04 21:10:49 · 156 阅读 · 0 评论 -
世界冰球锦标赛【折半搜索】
>Linkluogu P4799>Description给出预算MMM和NNN场比赛的票价,试求:如果总票价不超过预算,有多少种观赛方案。如果存在以其中一种方案观看某场比赛而另一种方案不观看,则认为这两种方案不同。1≤N≤40,1≤M≤1018,ai≤10161\le N \le 40,1\le M \le 10^{18},a_i \le 10 ^{16}1≤N≤40,1≤M≤1018,ai≤1016>解题思路部分分 N≤20N\le 20N≤20:很容易想到搜索,当前原创 2021-11-04 20:38:06 · 102 阅读 · 0 评论 -
周期长度和【KMP】
>Linkluogu P3435ybtoj周期长度和>Description对于一个仅含小写字母的字符串 a,p 为 a 的前缀且 p≠a,那么我们称 p 为 a 的 proper 前缀。规定字符串 Q(可以是空串)表示 a 的周期,当且仅当 Q 是 a 的 proper 前缀且 a 是 Q+Q 的前缀。例如 ab 是 abab 的一个周期,因为 ab 是 abab 的 proper 前缀,且 abab 是 ab+ab 的前缀。求给定字符串所有前缀的最大周期长度之和。>原创 2021-10-24 20:32:03 · 253 阅读 · 0 评论 -
飞行棋【DFS+剪枝】
>Linkluogu U137467>Description众所周知,飞行棋每个人会执不同颜色的飞行棋子,由于人数众多,牛牛的飞行棋盘和正常的有点不一样,是一个n*m大 小的棋盘,游戏开始时每个人可以在棋盘的任意位置放上自己的若干个棋子,也可以不放,当然每个位置只能放一 个,之后大家齐心协力填满这个棋盘,唯一的要求是在任意一条从左上角到右下角的路线上不能出现相同的棋子, 这里的路线只能向下和向右走,他们想知道总共有多少种方案数,很显然方案数可能有很多,所以只需要你告诉他们方案数对1000原创 2021-09-29 21:48:22 · 336 阅读 · 0 评论 -
数字【DFS】
>Linkluogu U137456>Description数字都只包含4、7两个数字,两个数字的数量需要相等。对于一个数字n,求出最小的不小于n的满足条件的数字。对于100%的数据,0<n<=10^100000,输入行数不超过100行。>解题思路直接暴力深搜每个位置填啥就行了,求最小的符合条件的数也是暴力判断剪枝:如果当前的数一定比n大的话,剩下的位置就可以直接先填完4,再填7(这样是当前状态下最优的)然后要注意一些小细节QAQ>代码#incl原创 2021-09-29 21:25:42 · 111 阅读 · 0 评论 -
破碎的饼干【暴力】
>Linkluogu U137897>Description对于100%的数据,n<=100。>解题思路没啥好讲的,直接按照题意暴力就可以通过此题>代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define N 210#define inf 1 << 30using namesp原创 2021-09-28 20:51:41 · 185 阅读 · 0 评论 -
年会小游戏【数论】【DFS】
>Linkluogu U137970>Description小A在公司年会上组织大家玩一个有奖小游戏,假设有n个人参加,随机选人顺次编号从1到n,然后每个人可以找可 以被自己整除的编号,比如6可以整除自己和1 2 3四个人,所以他能获得4分,得分最多的人赢得奖励,如果分数相 同,则编号最小的获胜。根据输入的n,输出获奖者的编号以及分数。对于100%的数据,1≤n≤1e18,1≤T≤1001≤n≤1e18,1≤T≤1001≤n≤1e18,1≤T≤100>解题思路其实就是反素数原创 2021-09-27 20:56:25 · 522 阅读 · 0 评论 -
[POI2001][HAOI2007]反素数【数论】【DFS】
>Linkluogu P1463>Description1≤n≤1091≤n≤10^91≤n≤109>解题思路题目大意:求在[1,n][1,n][1,n]内的一个数,这个数的约数最多且尽可能小我们知道xxx可以表示为 x=∏pikix=\prod p_i^{k_i}x=∏piki,pip_ipi都为质数那xxx的约数个数为 g(x)=∏(ki+1)g(x)=\prod (k_i+1)g(x)=∏(ki+1)对于所有的 pip_ipi(kik_iki可以为0原创 2021-09-27 20:51:34 · 215 阅读 · 0 评论 -
Comfortable Cows【BFS】【模拟】
>Linkluogu P7411>Description一个1000∗10001000*10001000∗1000的矩阵,每次在一个空格子上放一头牛,每时每刻询问最少还要放多少头牛,使得每一头牛上下左右相邻的牛的头数不等于3>解题思路直接模拟+广搜就可以了(感觉很多人写的是深搜)但是赛时我打的queue爆掉了才40分????????要用vector!>代码#include <iostream>#include <cstdio>#inc原创 2021-08-19 19:27:46 · 337 阅读 · 0 评论 -
Sum of Distances P【BFS】【数论】【容斥】
>Linkluogu P7293>Description∑Ni≤105,∑Mi≤2⋅105∑N_i≤10^5, ∑M_i≤2⋅10^5∑Ni≤105,∑Mi≤2⋅105>解题思路观察一个KKK元组的点,假设其中aia_iai在第iii个图中“先到达”了,那它可以在与它相连的一条边上跳来跳去,“等”其他图的点到达因为等的时间只能为偶数,所以(1,1,...,1)(1,1,...,1)(1,1,...,1)能否到达这个KKK元组的点,就与每个图中1到达aia_iai的原创 2021-08-18 14:43:55 · 159 阅读 · 0 评论 -
Maze Tac Toe【DFS】【状压】
>Linkluogu P7555jzoj7218>Description>解题思路暴力题,深搜处理,可以暴力判断井字棋盘是否获胜优化:用visi,j,kvis_{i,j,k}visi,j,k表示走到(i,j)(i,j)(i,j),井字棋状态为kkk的情况是否走过状态:3∗33*33∗3的棋盘,000表示没填数,111表示填MMM,222表示填OOO,暴力求出棋盘的状态注意答案的判重!!>代码#include <iostream>#incl原创 2021-08-15 19:10:08 · 244 阅读 · 0 评论 -
Do You Know Your ABCs?【暴力】【高斯消元】
>LinkluoguP7556jzoj7219>Description>解题思路直接暴力选择+高斯消元判断,暴力判重(我打的暴力判断+map判重才20分,暴力判断+暴力判重就70分了,果然暴力才是yyds????>代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath&g原创 2021-08-14 16:47:16 · 239 阅读 · 0 评论 -
[SHTSC2014]概率充电器【树形+期望DP】
>Linkluogu P4284jzoj 3661>Description一棵树上,每个节点有pip_ipi的概率发电,每条边有wi,jw_{i,j}wi,j的概率通电,问通上电的节点个数的期望值>解题思路我服了啊,这道题打了以后放在luogu上A了,但是jzoj有几个点RE,看了好久发现是深搜栈爆了…又打了一遍BFS版的,终于过了QAQ期望E(X)=∑pixiE(X)=\sum p_ix_iE(X)=∑pixi,因为每个节点对答案的贡献都是1,所以我们只用求E(原创 2021-07-20 11:46:39 · 216 阅读 · 0 评论 -
数独游戏【DFS】
>Linkybtoj数独游戏>解题思路完成数独。直接爆搜。一开始没有注意到“每一个小的九宫格”,然后就WA了……还是要认真审题>代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#define N 100using namespace std;int a[N][N];char c;bool h[N][N],原创 2021-05-14 11:24:40 · 103 阅读 · 0 评论 -
民生问题(特长生2011)【DFS+剪枝】
>Description一共有n个问题待解决,其中有m个专家,每个专家可以解决其中一些问题,问最少选择多少专家使得这些问题全部得以解决(n,m≤60)>解题思路考虑到数据范围很小,可以直接dfs+剪枝优化(考试的时候打了一个贪心暴力,tle了)优化:dfs每个问题,这样当当前问题已经被前面选择的专家解决时,可以直接跳过,速度更快如果一个问题只能由一个专家解决,就可以直接选择当前专家,不用进行选或不选如果一个专家能够解决的问题,被另一个专家能解决的问题包含,这个专家就可以直接原创 2021-05-14 09:07:39 · 84 阅读 · 0 评论 -
有趣的英语角(特长生2015)【DFS】
>Description接龙游戏给定一个字符为“头”和N个单词,求最长接龙长度1.前后两个最少收尾相同部分重合在一起2.可以自己连自己3.每个单词可以用两次>解题思路考试的时候,以为只出现小写字母+最多重叠部分重叠在一起,导致考炸了T-T说明以后写题的时候还是得细心点,题意不清晰的地方就要问>代码#include <iostream>#include <cstdio>#include <cstring>#include &l原创 2021-05-12 21:49:36 · 116 阅读 · 0 评论 -
Nightmare Ⅱ(逃离噩梦)【双向BFS】
>LinkHDOJ3085>解题思路由于有鬼的限制,我们需要开两个队列,一个记录男孩一个记录女孩,两个bfs同时进行,如果女孩走到了男孩走到过的地方,说明两个相遇了,这时所用时间就是答案注意男孩一次可以走三步,女孩走一步,所以一次bfs,男孩需要处理三层,女孩处理一层>代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>原创 2021-01-25 11:06:45 · 415 阅读 · 1 评论 -
Switch the Lamp On(电路维修)【BFS】【双端队列】
>Linkluogu P4667(ybt进不去,只能去洛谷做题)>解题思路>代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <deque>#include <utility>#define N 510#define inf 1 << 30using name原创 2021-01-23 15:10:16 · 387 阅读 · 0 评论 -
荆轲刺秦王【BFS】【差分】
>Linkybtoj荆轲刺秦王>解题思路又是一道BFS大模拟对荆轲的位置进行bfs,对于隐身、瞬移判断处理就可以了因为技能使用有限制,所以我们需要在bfs的过程中记录下技能还可以用几次,对于判断一个位置是否走过同时也要加上状态(技能剩余数),及当前位置并且为当前状态的这种情况是否走过,因为状态不同也会影响从这个点到达其他位置的距离,使得可以找到更优解这里有一个重要的地方就是预处理士兵侦查的范围(注意士兵在的位置和侦查范围是有区别的,荆轲任何时候都不可以去到士兵所在的坐标),暴力处理原创 2021-01-22 22:02:17 · 150 阅读 · 0 评论 -
立体推箱子【BFS】
>Linkybtoj立体推箱子>解题思路很感动因为一不小心memset里面写成了sizeof(0)拉着zzl和hky改了一个上午,后来还是hky发现的错误,一整个就很烦恼????跟普通的bfs差不多,但是转移到下一步的时候要特殊处理一下,这样才能处理不同的立体情况一共有三种状态:①立着 ②横着躺 ③竖着躺每个情况上下左右转动后的样子都不同,所以需要打一下表预处理如何转动>代码#include <iostream>#include <cstdio>原创 2021-01-22 15:17:26 · 285 阅读 · 0 评论 -
山峰与山谷【BFS】
>Linkybtoj山峰与山谷>解题思路BFS总体思路:对于每一个没有搜到过的点进行bfs,把遇到的四周相同高度的点加入队列,遇到不同的,用两个变量记录周围高的和低的的个数。最后如果周围没有高的,说明此区域是山峰,如果周围没有低的,说明是山谷,否则什么也不是(这样子处理更加方便)这里有一个小细节(又是zzl巨爷帮我改的),如果搜索过的在后面的bfs中就不用加入队列的,不然会tle>代码#include <iostream>#include <cstdio原创 2021-01-22 08:04:18 · 346 阅读 · 0 评论 -
走迷宫【BFS】
>Linkybtoj走迷宫>解题思路一道非常典型的bfs>代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#define N 2010using namespace std;const int xx[4] = {-1, 0, 0, 1}, yy[4] = {0, -1原创 2021-01-21 19:14:15 · 104 阅读 · 0 评论 -
虫食算【DFS】
>Linkybtoj虫食算>解题思路30分做法:暴搜每个字母所代表的数字,然后判断是否合法正解我们可以考虑如下剪枝:模拟加法的过程,记录当前位的加数j1j1j1、j2j2j2和和ppp如果当前位右边所有的数都确定了,那么也就可以确定进位为ggg,如果j1+j2+g≠pj1+j2+g≠pj1+j2+g=p的话,舍去如果当前位右边有数没有确定的话,那么当前进位ggg可能为1或者0,如果 j1+j2j1+j2j1+j2 和 j1+j2+1j1+j2+1j1+j2+1 均 ≠p≠原创 2021-01-21 16:47:52 · 169 阅读 · 0 评论 -
数独游戏【DFS】
>Linkybtoj数独游戏>解题思路这一道题据zzl大佬所说跟八皇后问题很像(找了一下发现我当时没有写八皇后的博客为了使每一行每一列每一宫每一个数字只存在一个,可以建一个变量hi,jh_{i,j}hi,j表示第iii行是否存在数字jjj,列和宫类似然后通过所在区域是否存在当前数字进行剪枝宫可以暴力进行判断✔>代码#include <iostream>#include <cstdio>#include <cstring>#in原创 2021-01-21 16:38:01 · 214 阅读 · 0 评论 -
拔河比赛【DFS】
>Linkybtoj拔河比赛>解题思路一道非常典型的DFS,通过维护人数不超过总人数的一半来剪枝为了方便,我DFS的时候用一个变量c来记录两队体重之差,左边队的就+,右边队的就-,最后取c的绝对值>代码#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#define N 30原创 2021-01-21 16:32:38 · 207 阅读 · 0 评论 -
牛半仙的妹子树【bfs】【树形dp】
>Link牛客1022普及T3>Description给出一棵大小为nnn,边权为1的树其中有mmm个节点拥有“超能力”在剩下无超能力的点中,离所有具有超能力的节点的最短距离在区间[l,r][l,r][l,r]中的点,被赋予“旪超能力”每一个“超能力”点iii,给其他所有点jjj添加 iii到jjj的最短路径的平方 的磁场强度每一个“旪超能力”点iii,给其他所有点jjj添加 iii到jjj的最短路径 的磁场强度现有kkk个询问,询问xxx点得到的磁场强度>解题思路原创 2020-10-28 18:36:23 · 235 阅读 · 0 评论 -
[USACO09NOV]Lights G(开关问题)【高斯消元】【DFS】
>Description给出一张 n 个点 m 条边的无向图,每个点的初始状态都为 0。你可以操作任意一个点,操作结束后所有相邻的端点的状态都会改变,由 0 变成 1 或由 1 变成 0。你需要求出最少的操作次数,使得在所有操作完成之后所有 n 个点的状态都是 1。>Input第一行两个整数 n, m。之后 m 行,每行两个整数 a, b,表示在点 a, b 之间有一条边。>Output一行一个整数,表示最少需要的操作次数。>Sample Input5 61原创 2020-08-26 11:54:18 · 571 阅读 · 0 评论 -
谷仓的安保【DFS】
>DescriptionFarmer John给谷仓安装了一个新的安全系统,并且要给牛群中的每一个奶牛分配一个有效的密码。一个有效的密码由L(3 <= L <= 15)个小写字母(来自传统的拉丁字母集’a’…‘z’)组成,至少有一个元音(‘a’, ‘e’, ‘i’, ‘o’, 或 ‘u’)和两个辅音(除去元音以外的音节),并且是按字母表顺序出现的(例如,'abc’是有效的,而’bac’不是) 。给定一个期望长度L和C个小写字母,写一个程序,打印出所有的长度为L、能由这给定的C个字母组成原创 2020-08-20 14:55:56 · 389 阅读 · 0 评论 -
开心小屋(smile)【DFS】【环】
>DescriptionKc来到开心小屋。开心小屋是用来提升心情的。在这个小屋中有n个房间,一些房间之间有门连通。从房间i到达房间j,心情值可以加上-10000<=Cij<=10000,当然Cij可能是负的。现在kc失恋了,所以他想要知道他是否可以在这个小屋中无限地增加他的心情值,也就是无限地绕着一个环走?请帮kc求出最小的环需要经过的房间数,来使他的心情无限增加。>Input第一行给出,1<=n<=300,1<=m<=5000。分别表示房间数及门的原创 2020-08-19 16:27:09 · 837 阅读 · 2 评论 -
KC看星(star)【DFS】【数论】
>Description“一闪一闪亮晶晶,满天都是小星星”Kc吟唱着歌谣,躺在草坪上边想着她边看起了星星。Kc刚刚结识了笛卡尔这位好基友,认为他的坐标系非常神奇。于是他随机地选出了8颗星星,并且给它们标上了坐标。Kc又不甘寂寞,于是思考起一个问题:这八个点能否恰好构成一个正方形和一个矩形呢?>Input输入文件包括1行16个数,表示8个星星的坐标,坐标绝对值不超过10000。>Output输出文件第一行是"YES"或者"NO"。表示是否有解。若有解则第二行依次输出正方形每个原创 2020-08-19 15:59:38 · 188 阅读 · 0 评论 -
送你一颗圣诞树【DP】【DFS】
>Description再过三个多月就是圣诞节了,小R 想送小Y 一棵圣诞树作为节日礼物。因为他想让这棵圣诞树越大越好,所以当然是买不到能够让他满意的树的,因此他打算自己把这棵树拼出来。现在,小R 开始画这棵树的设计图纸了。因为这棵树实在太大,所以他采用了一种比较方便的方法。首先他定义了m+ 1 棵树T0 到Tm。最开始他只画好了T0 的图纸:就只有一个点,编号为0。接着,对于每一棵树Ti,他在第Tai 棵树的第ci 个点和第Tbi 棵树的第di 个点之间连上了一条长度为li 的边。在Ti 中,原创 2020-08-16 19:07:49 · 512 阅读 · 0 评论 -
扩欧求逆元(模板)【逆元】【DFS】
>Description运用扩展欧几里得(扩欧)求a在模p的条件下的逆元。>Input输入a,p>Output输出逆元>解题思路之前学过但是又忘了TT所以重新学一遍(学了好久),主要是因为昨天晚上做的一道题只拿了20分,看了题解说正解需要用到逆元(然后逆元又要用到小费马和扩欧),所以又得学习一下,顺便把模板代码也打一下。我是看其他大佬的博客学会的orzorzorz:传送门太长了不想写了(还要做题)>代码#include <iostream>原创 2020-07-21 20:03:47 · 314 阅读 · 0 评论 -
聚会【树】【DFS】
>解题思路其实这道题就是把每个公司化成一个树形结构,然后找出最长的一条链的长度,就是最少组数。(因为同层并且同树的不能够放在一个组)>代码#include<iostream>#include<cstdio>using namespace std;int n,x,a[2005][2005],t[2005],ans;void ooo(int r...原创 2019-03-20 17:15:12 · 157 阅读 · 0 评论 -
机器选择【树】【DFS】
>Description机房有n台机器,且有局域网,所有机器通过一些网线连接起来,其整个布局是一个树形结构,即任意两台机器间都有且仅有一条路径。小T想在其中某一台机器上储存这个文件,需要的同学就可以直接通过局域网来下载这个文件。网络上信息传输是需要时间的,我们定义两台机器间数据传输的时间为连接这两台机器的路径所包含的网线数量。虽然机房里通过局域网传个文件是很快的,但对于急不可耐的同学们来...原创 2019-03-21 15:46:19 · 145 阅读 · 0 评论 -
马蹄印【深搜】
>Description奶牛贝里斯对序列提出了一个更高的要求,就是要求每个序列中必须是先一定数量的左括号然后是与左括号相同数量的右括号。例如:(((()))),就是一个完美的平衡序列。这个农场是一个NN的方格,每个小方格中都有一个马蹄印。贝里斯希望从方格的最左上角的地方开始出发,然后每次可以向上或者向下或者向左或者向右移动一步,使得他走过的每个小方格中的马蹄印能够组成一个完美的平衡序列。...原创 2019-04-27 12:46:46 · 392 阅读 · 0 评论 -
Chocolate【DFS】【记忆化搜索】
>DescriptionCharlie 有一块巧克力。这块巧克力是矩形的,有 n 行 m 列一共 n × m 个大小相同的小块,每一小块都有一个美味值 ai,j。Charlie 有 k 个朋友,他希望把巧克力分给这些朋友。Charlie 按如下方法分配巧克力:做 k-1 次分割,每次拿出一块巧克力,将它沿水平或竖直方向分成两块矩形的巧克力。分割完成后一共有 k 块巧克力,Charl...原创 2019-05-09 15:49:31 · 175 阅读 · 0 评论 -
I Like Matrix!【DFS】
>Description给定 k 种移动方式:从 (i, j) 移动到 (i + xk, j + yk)(xk, yk > 0)。询问在一个 n ∗ m 的矩阵中,从 (1, 1) 出发,可以到达多少个位置。>Input第一行包含三个整数 n,m 和 k。之后 k 行每行包含两个 xi 和 yi。>Output共一行包含一个整数 ans,表示可以到达的位置个...原创 2019-05-11 14:11:28 · 163 阅读 · 0 评论