![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dfs
goto_1600
我何来寂寞,哪有寂寞可言。
展开
-
小G的GLS图 tarjan割点 虚点
链接思路:原来n^2暴力建边取割点肯定可以,就是太慢了,我们思考对于每个不同的质因数建立新的虚点,连向存在质因数的点,这样最多只有nlogn条边,然后想了想对于原图的性质确实是不变的。但是要注意一些细节,质因数只有1个度数的点没必要连,不然例如6 向2 3连边,2和3只有1度,那么6是割点,但其实不是,我们在建边的时候特判一下即可,还有就是质因数显然是割点,我们别把它算进去即可。复杂度nsqrt(1e7)+O(tarjan)nsqrt(1e7)+O(tarjan)nsqrt(1e7)+O(tarjan)原创 2022-05-16 16:45:06 · 146 阅读 · 0 评论 -
CF1131F Asya And Kittens并查集,暴力,新颖建图思维
题意:要求给出一个排列,给定n,有n-1对x,y要求每次x和y相邻,并且要保证他俩没有合并,并且将他俩所在的联通块合并。输出一种方案即可,n<=2e5n<=2e5n<=2e5思路:看到了一个比较新颖的做法,类似克鲁斯卡尔重构树,每次合并两个点,新开一个点,然后用并查集去维护,把这两个点的根和点连边,维护并查集数组,然后求前序遍历就可以了。看上去好像挺对,因为每个联通块是独立的,我们每一次合并就是维护了他俩之间的顺序,也不影响他们内部的顺序#include<bits/stdc+原创 2021-10-04 21:41:48 · 180 阅读 · 0 评论 -
牛客练习赛88 D都市的柏油路太硬
题意:给定一个图,每两个点之间的距离是他们所有路径中最大值的最小值,求这样的图的最小生成树。有q次询问,求该生成树的a,b之间的最大值。n<=1e5 m<=5e5 q<=1e7思路:是一颗克鲁斯卡尔重构树,求lca,倍增过不去,要么就树剖要么就欧拉序,这里讲一下欧拉序,欧拉序就是遍历一次把他该点存进遍历序列里,dfs遍历的伪代码大概是这样void dfs(int u,int fa){ id[++cnt]=u; in[u]=cnt; dep[u]=dep[fa]+1; for原创 2021-09-16 00:02:33 · 221 阅读 · 0 评论 -
练习赛牛客
这题讲讲思路吧,告诉你两个数,算出他们俩能组成哪些数,其实就是裴蜀定理的应用,他们gcd的倍数都可以组成,只要判断奇偶性就行了。dfs题,我卡了太久了,按照不同辆小车dfs就行啦。#include<iostream>#include<cstring>#include<queue>#include<map>using namespace std;typedef pair<int,int> pii;int n,m,k;int dx.原创 2020-05-11 20:38:13 · 256 阅读 · 0 评论 -
莫名的弱,dfs都写不出
解题报告:这种水题。我竟然想不到了,,直接dfs有炸弹的点,++cnt,然后一系列循环爆炸就行了。然后想想是最优解,其实无论怎么引爆答案都是固定的,这个和先后次序无关的。#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<cma...原创 2020-04-24 14:31:46 · 281 阅读 · 0 评论 -
AcWing 166. 数独
解题报告:其实这题我以前做过,但是我给忘记了怎么剪枝,刚好蓝桥杯训练到了这题,那就补一补吧,主要是要把行、列、3x3小矩阵这三个信息的状态压缩,然后某点x,y可选的值在他们状态相与的情况下才满足,然后每次搜索,搜索分支最小的搜索,还有个小优化就是lowbit运算,返回二进制最近的1的数值,然后还要预处理出来1<<i的值就可以了。#include<iostream>usi...原创 2020-04-22 19:11:02 · 207 阅读 · 0 评论 -
蓝桥杯 dfs 平方组合数
把0~9这10个数字,分成多个组,每个组恰好是一个平方数,这是能够办到的。比如:0, 36, 5948721再比如:10985247361, 25, 63907840, 4, 289, 15376等等…注意,0可以作为独立的数字,但不能作为多位数字的开始。分组时,必须用完所有的数字,不能重复,不能遗漏。如果不计较小组内数据的先后顺序,请问有多少种不同的分组方案?注意:需要提交的...原创 2020-04-06 10:54:02 · 261 阅读 · 0 评论 -
问题 1441: [蓝桥杯][2013年第四届真题]幸运数
时间限制: 1Sec 内存限制: 128MB 提交: 856 解决: 393题目描述幸运数是波兰数学家乌拉姆命名的。它采用与生成素数类似的“筛法”生成。首先从1开始写出自然数1,2,3,4,5,6,…1 就是第一个幸运数。我们从2这个数开始。把所有序号能被2整除的项删除,变为:1 _ 3 _ 5 _ 7 _ 9 …把它们缩紧,重新记序,为:1 3 5 7...原创 2020-04-05 10:57:53 · 599 阅读 · 0 评论 -
蓝桥训练 ,判断两个点是否连通
#include<iostream>#include<algorithm>#include<cstdio>#include<cstring>#include<cmath>#include<map>#include<vector>#include<queue>#include<set...原创 2020-04-03 21:50:42 · 927 阅读 · 0 评论 -
蓝桥训练 分考场
n个人参加某项特殊考试。为了公平,要求任何两个认识的人不能分在同一个考场。求是少需要分几个考场才能满足条件。输入第一行,一个整数n(1<n<100),表示参加考试的人数。第二行,一个整数m,表示接下来有m行数据以下m行每行的格式为:两个整数a,b,用空格分开 (1<=a,b<=n) 表示第a个人与第b个人认识。输出一行一个整数,表示最少分几个考场。样例输入...原创 2020-04-03 20:28:20 · 261 阅读 · 0 评论 -
蓝桥备战
标题:方格分割【第八届蓝桥杯C/C++ B组省赛第4题】6x6的方格,沿着格子的边线剪开成两部分。要求这两部分的形状完全相同。如图:p1.png, p2.png, p3.png 就是可行的分割法。试计算:包括这3种分法在内,一共有多少种不同的分割方法。注意:旋转对称的属于同一种分割法。请提交该整数,不要填写任何多余的内容或说明文字。解题报告:我们可以发现这道题是dfs题,因为要分...原创 2020-03-31 23:19:39 · 265 阅读 · 0 评论 -
思维题 连通块dfs
Pavel loves grid mazes. A grid maze is an n × m rectangle maze where each cell is either empty, or is a wall. You can go from one cell to another only if both cells are empty and have a common side....原创 2020-03-30 22:47:07 · 274 阅读 · 0 评论 -
记忆性搜索 滑雪(第二次写)
Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12...原创 2020-03-29 21:25:39 · 205 阅读 · 0 评论 -
dfs 剪枝 排书问题
给定n本书,编号为1-n。在初始状态下,书是任意排列的。在每一次操作中,可以抽取其中连续的一段,再把这段插入到其他某个位置。我们的目标状态是把书按照1-n的顺序依次排列。求最少需要多少次操作。输入格式第一行包含整数T,表示共有T组测试数据。每组数据包含两行,第一行为整数n,表示书的数量。第二行为n个整数,表示1-n的一种任意排列。同行数之间用空格隔开。输出格式每组数据输出一个...原创 2020-03-28 10:50:48 · 293 阅读 · 0 评论 -
dfs 二分,双向dfs
达达帮翰翰给女生送礼物,翰翰一共准备了N个礼物,其中第i个礼物的重量是G[i]。达达的力气很大,他一次可以搬动重量之和不超过W的任意多个物品。达达希望一次搬掉尽量重的一些物品,请你告诉达达在他的力气范围内一次性能搬动的最大重量是多少。输入格式第一行两个整数,分别代表W和N。以后N行,每行一个正整数表示G[i]。输出格式仅一个整数,表示达达在他的力气范围内一次性能搬动的最大重量。数据...原创 2020-03-26 22:47:02 · 372 阅读 · 0 评论 -
dfs迭代加深
满足如下条件的序列X(序列中元素被标号为1、2、3…m)被称为“加成序列”:1、X[1]=12、X[m]=n3、X[1]<X[2]<…<X[m-1]<X[m]4、对于每个 k(2≤k≤m)都存在两个整数 i 和 j (1≤i,j≤k−1,i 和 j可相等),使得X[k]=X[i]+X[j]。你的任务是:给定一个整数n,找出符合上述条件的长度m最小的“加成序列”...原创 2020-03-25 22:45:07 · 300 阅读 · 0 评论 -
acwing. 木棒
乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过50个长度单位。然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。请你设计一个程序,帮助乔治计算木棒的可能最小长度。每一节木棍的长度都用大于零的整数表示。输入格式输入包含多组数据,每组数据包括两行。第一行是一个不超过64的整数,表示砍断之后共有多少节木棍。第二行是截断以后,所得到...原创 2020-03-25 18:14:08 · 897 阅读 · 3 评论 -
暴力模拟
A common pastime for poker players at a poker table is to shuffle stacks of chips. Shuffling chips is performed by starting with two stacks of poker chips, S1 and S2, each stack containing C chips. Ea...原创 2020-03-23 23:30:46 · 340 阅读 · 0 评论 -
不规则棋盘问题
在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。 Input输入含有多组测试数据。每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <= n...原创 2020-03-23 23:26:01 · 911 阅读 · 0 评论 -
dfs find the multiple
Given a positive integer n, write a program to find out a nonzero multiple m of n whose decimal representation contains only the digits 0 and 1. You may assume that n is not greater than 200 and there...原创 2020-03-23 09:31:01 · 209 阅读 · 0 评论 -
dfs 剪枝
dfs在剪枝的时候需要先确定搜索的顺序,为了减少复杂度我们选择叶节点较少的点。可行性剪枝优化,需要满足题目的意思,最优性剪枝,如果该节点的值比已有搜索的最优解要差那么直接返回。翰翰和达达饲养了N只小猫,这天,小猫们要去爬山。经历了千辛万苦,小猫们终于爬上了山顶,但是疲倦的它们再也不想徒步走下山了(呜咕>_<)。翰翰和达达只好花钱让它们坐索道下山。索道上的缆车最大承重量为W,而N...原创 2020-03-22 21:59:19 · 330 阅读 · 0 评论 -
蓝桥训练 李白打酒
话说大诗人李白,一生好饮。幸好他从不开车。一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱: 无事街上走,提壶去打酒。 逢店加一倍,遇花喝一斗。这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabbbb 就是合理的次序。像这样的答案一共有多少呢?请你计算...原创 2020-03-19 23:30:37 · 203 阅读 · 0 评论 -
蓝桥训练~温故而知新 2n皇后问题
解题报告:先放黑皇后再放白皇后。#include<iostream>using namespace std;const int N=22;int col[N],col2[N];int a[N][N];int n;int ans;bool check(int t,int u){ for(int i=0;i<u;i++) if(col[i]==t||abs(t-...原创 2020-03-18 22:13:06 · 191 阅读 · 0 评论 -
滑雪 dp 记忆化搜索
给定一个R行C列的矩阵,表示一个矩形网格滑雪场。矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。下面给出一个矩阵作为例子:1 2 3 4 516 17 18 19 615 24 25 20 7...原创 2020-03-14 13:53:35 · 213 阅读 · 0 评论 -
蓝桥训练·糖果 状态压缩+dfs
糖果店的老板一共有 M种口味的糖果出售。为了方便描述,我们将 M种口味编号 1∼M。小明希望能品尝到所有口味的糖果。遗憾的是老板并不单独出售糖果,而是 K颗一包整包出售。幸好糖果包装上注明了其中 K颗糖果的口味,所以小明可以在买之前就知道每包内的糖果口味。给定 N包糖果,请你计算小明最少买几包,就可以品尝到所有口味的糖果。输入格式第一行包含三个整数 N,M,K。接下来...原创 2020-03-08 23:28:27 · 296 阅读 · 0 评论 -
dfs 填数游戏
这道题用dfs做,建一个3x4的矩阵,注意一下搜索的顺序。#include <iostream>#include <cstdio>#include <cstring>#include <cmath>using namespace std;int a[3][4] = {-20};// 必须要初始化!!!!int vis[10];int...原创 2020-03-06 11:17:18 · 267 阅读 · 0 评论 -
蓝桥训练 dp和dfs
标题:激光样式x星球的盛大节日为增加气氛,用30台机光器一字排开,向太空中打出光柱。安装调试的时候才发现,不知什么原因,相邻的两台激光器不能同时打开!国王很想知道,在目前这种bug存在的情况下,一共能打出多少种激光效果?显然,如果只有3台机器,一共可以成5种样式,即:全都关上(sorry, 此时无声胜有声,这也算一种)开一台,共3种开两台,只1种30台就不好算了,国王只好请你帮忙了...原创 2020-03-06 11:13:01 · 252 阅读 · 0 评论 -
对称迷宫dfs
I. 试题I:对称迷宫 25’描述用EXCEL求解迷宫真香~wlxsq有一个N∗NN*NN∗N的网格迷宫,每一个网格都有一个字母编号。他要从左上角(1,1)(1,1)(1,1)出发,走到右下角(n,n)(n,n)(n,n),由于wlxsq很懒,所以他每次只会往右或者往下走一格。由于最后到终点的路径方案太多太多了,所以wlxsq想让你计算出所有不同的对称的路径个数。例如:N=3N = 3...原创 2020-03-02 14:22:05 · 371 阅读 · 0 评论 -
2n皇后问题 dfs
问题描述 给定一个n*n的棋盘,棋盘中有一些位置不能放皇后。现在要向棋盘中放入n个黑皇后和n个白皇后,使任意的两个黑皇后都不在同一行、同一列或同一条对角线上,任意的两个白皇后都不在同一行、同一列或同一条对角线上。问总共有多少种放法?n小于等于8。输入格式 输入的第一行为一个整数n,表示棋盘的大小。 接下来n行,每行n个0或1的整数,如果一个整数为1,表示对应的位置可以放皇后,如果一个...原创 2020-02-28 22:19:06 · 256 阅读 · 0 评论 -
dfs 输出回形矩阵
用dir记录一下方向,方向有讲究优先是先往下,往右,往上,最后往左。dfs的出口就是出个个数等于矩阵个数了。#include<bits/stdc++.h>using namespace std;const int N=1000;int a[N][N];bool st[N][N]; int n,m;int cnt;int dxy[4][2]={{1,0},{0,1},{...原创 2020-02-28 14:58:38 · 267 阅读 · 0 评论 -
递归
题目#include<iostream>#include<cstring>using namespace std;const int N=20;// N太大会超时bool st[N];bool back[N];int cnt; int n;bool check(int a,int c){ int x=n*c-a*c; if(!a...原创 2020-02-22 16:28:19 · 180 阅读 · 0 评论 -
树与图的深度优先遍历dfs
#include<iostream>#include<algorithm>#include<string.h>using namespace std;const int N=200010;int e[N],h[N],idx,ne[N];void add(int a,int b){ e[idx]=b,ne[idx]=h[a],h[a]=...原创 2020-02-12 14:16:01 · 243 阅读 · 0 评论 -
dfs剪枝
Ignatius had a nightmare last night. He found himself in a labyrinth with a time bomb on him. The labyrinth has an exit, Ignatius should get out of the labyrinth before the bomb explodes. The initial ...原创 2020-01-26 20:31:01 · 189 阅读 · 0 评论 -
dfs
On Planet MM-21, after their Olympic games this year, curling is getting popular. But the rules are somewhat different from ours. The game is played on an ice game board on which a square mesh is mark...原创 2020-01-24 13:06:50 · 206 阅读 · 0 评论 -
走马 dfs输出
BackgroundThe knight is getting bored of seeing the same black and white squares again and again and has decided to make a journeyaround the world. Whenever a knight moves, it is two squares in one ...原创 2020-01-23 21:23:58 · 244 阅读 · 0 评论 -
n皇后问题
在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。你的任务是,对于给定的N,求出有多少种合法的放置方法。Input共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。Output共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。Sample Input18...原创 2020-01-23 15:31:40 · 225 阅读 · 0 评论 -
dfs走迷宫 算迷宫最小路径
输入m行n列的迷宫矩阵 0代表可以走 1代表围墙不能走 输入起点和终点,输出最短路径。#include<stdio.h>int a[51][51],book[51][51];int ex,ey;//终点坐标int min=9999;int m,n;void dfs(int startx,int starty,int step){ int tx,ty,k; int wa...原创 2020-01-17 22:41:44 · 424 阅读 · 0 评论