![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
搜索
dfs题目
crazy morning
去西之西处,驾驭长风
展开
-
P7151 [USACO20DEC] Replication G
题目题目思路利用2次bfs求出每个点最早到达时间和扩展半径,然后用一个优先队列套BFS求答案code:#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<queue>using namespace std;inline long long read(){ long long ret,c,f=1; whil原创 2021-08-19 21:38:07 · 116 阅读 · 0 评论 -
P7338 『MdOI R4』Color
题目题目思路抽象来说,可以理解为在一个2∗n2*n2∗n的棋盘上,放着许多1∗1∗21*1*21∗1∗2的立着的长方体,现在要把它们全部放平,能不能做到一种类似于bfs的做法,首先统计出所有1位置周围0的个数,如果周围无0,显然无法完成,输出++把所有周围只有1个0的1的坐标存起来,因为它周围只有一个地方可以倒(相当于是处理了这个1),然后,把剩下的没有处理过的1周围0的个数-1,如果周围未处理的1没有地方可以倒了,显然是++,如果它只有一个地方倒,显然可以倒下去,所以把它存起来剩下的1显然要么原创 2021-02-10 16:22:40 · 139 阅读 · 0 评论 -
P2960 [USACO09OCT]Invasion of the Milkweed G
题目题目思路这道题考查我们的英文阅读理解能力,我们只要算准了起点,以及棋盘究竟是个什么鬼样就可以直接bfs计算。code:#include<cstdio>#include<algorithm>#include<iostream>using namespace std;char a[1005][1005];int n,m,x1,x2,l,r,s=1,w,sum;int q[8][2]={{0,1},{1,1},{1,0},{1,-1},{0,-1},{原创 2021-02-08 11:00:44 · 91 阅读 · 0 评论 -
SSLOJ1692 USACO 3.2 Magic Squares 魔板&P2730
Description在成功地发明了魔方之后,拉比克先生发明了它的二维版本,称作魔板。这是一张有8个大小相同的格子的魔板:1 2 3 48 7 6 5我们知道魔板的每一个方格都有一种颜色。这8种颜色用前8个正整数来表示。可以用颜色的序列来表示一种魔板状态,规定从魔板的左上角开始,沿顺时针方向依次取出整数,构成一个颜色序列。对于上图的魔板状态,我们用序列(1,2,3,4,5,6,7,8)来表示。这是基本状态。这里提供三种基本操作,分别用大写字母“A”,“B”,“C”来表示(可以通过这些操原创 2021-01-21 14:33:49 · 101 阅读 · 0 评论 -
《ybtoj高效进阶》第一部分第五章例题5 机器维修
题目大意给地图,求从左上角到右下角需要旋转的路是条数。思路bfs,注意初值和边界code:#include <iostream>#include <cstring>#include <deque>using namespace std;char a[501][501];int n, m, t, q[4][4] = { { -1, -1, -1, -1 }, { 1, 1, 0, 0 }, { -1, 1, -1, 0 }, { 1, -1, 0, -1原创 2020-12-26 11:34:49 · 119 阅读 · 0 评论 -
《ybtoj高效进阶》第一部分第五章例题3 立体推箱子
题目大意你的任务是操作一个 1 *1 *2 的长方体。把它从x挪到o,每一次操作4个方向,沿棱滚90°,有#地不能走,E地不能立着,x可能有2个即开始时可以为横着或竖着,但o只有一个,多组数据,给出棋盘大小和棋盘.思路如果是立着的,以0表示状态,x,y为坐标,横着的,以1表示,x,y为左边的坐标,竖着的,以2表示,x,y为上面坐标,bfs(某度优先搜索)完成。code:#include<iostream>#include<cstring>#include<que原创 2020-12-26 08:54:24 · 101 阅读 · 1 评论 -
SSLOJ 1104 城堡&P1457
Description以一个几乎超乎想像的运气,农民约翰在他的生日收到了一张爱尔兰博彩的奖券。这一张奖券成为了唯一中奖的奖券。农民约翰嬴得爱尔兰的乡下地方的一个传说中的城堡。吹牛在他们威斯康辛州不算什么,农民约翰想告诉他的牛所有有关城堡的事。他想知道城堡有多少房间,而且最大的房间有多大。事实上,他想去掉一面墙来制造一个更大的房间。你的任务是帮助农民约翰去了解正确房间数目和大小。城堡的平面图被分为 M(wide)*N(1 <=M,N<=50)个小正方形。每个这样的小正方形有0到4原创 2020-12-24 16:17:23 · 68 阅读 · 1 评论 -
SSLOJ1786 麻将游戏
Description在一种"麻将"游戏中,游戏是在一个有W*H格子的矩形平板上进行的。每个格子可以放置一个麻将牌,也可以不放(如图所示)。玩家的目标是将平板上的所有可通过一条路径相连的两张相同的麻将牌,从平板上移去。最后如果能将所有牌移出平板,则算过关。这个游戏中的一个关键问题是:两张牌之间是否可以被一条路径所连接,该路径满足以下两个特性:1. 它由若干条线段组成,每条线段要么是水平方向,要么是垂直方向。2. 这条路径不能横穿任何一个麻将牌 (但允许路径暂时离开平板)。这是一个例子:在(1,3原创 2020-12-23 20:34:24 · 139 阅读 · 0 评论 -
《ybtoj高效进阶》第一部分第五章例题1 走迷宫&SSLOJ2278 Oliver的救援
Description在你的帮助下,Oliver终于追到小X了,可有一天,坏人把小X抓走了。这正是Oliver英雄救美的时候。所以,Oliver又找到哆啦A梦,借了一个机器,机器显示出一幅方格地图,它告诉Oliver哪里能走,哪里不能走,。并且Oliver在这个地图的右下角,而小X在左上角。时间紧急,Oliver想知道,最少要走多少个格子,才能找到小X。(只能直走)。Input共N+1行,第一行为N,以下N行N列0-1矩阵,1表示不能通过,0表示可以通过(左上角和右下角为0). N<30.Ou原创 2020-12-23 14:01:27 · 132 阅读 · 0 评论 -
SSLOJ2325 最小转弯问题
Description给出一张地图,这张地图被分为 n×m(n,m<=100)个方块,任何一个方块不是平地就是高山。平地可以通过,高山则不能。现在你处在地图的(x1,y1)这块平地,问:你至少需要拐几个弯才能到达目的地(x2,y2)?你只能沿着水平和垂直方向的平地上行进,拐弯次数就等于行进方向的改变(从水平到垂直或从垂直到水平)的次数。例如:如样例,最少的拐弯次数为5。Input第 1行:n m 第 2至n+1行:整个地图地形描述(0:空地;1:高山), 如图,第2行地形描述为:1 0 0原创 2020-12-23 13:34:56 · 280 阅读 · 0 评论 -
SSLOJ2324 细胞问题&P1451
Description一矩形阵列由数字0到9组成,数字1到9代表细胞,细胞的定义为沿细胞数字上下左右还是细胞数字则为同一细胞,求给定矩形阵列的细胞个数。如:阵列0234500067103456050020456006710000000089有4个细胞。Input输入共m+1行第一行有两个数据,分别表示总行数和总列数以下的m行,每行有n个0-9之间的数Output细胞个数Sample Input40234500067103456050020456006710000000089原创 2020-12-23 13:22:20 · 394 阅读 · 0 评论 -
SSLOJ1194 最优换乘&P5767
DescriptionH城是一个旅游胜地,每年都有成千上万的人前来观光。为方便游客,巴士公司在各个旅游景点及宾馆,饭店等地都设置了巴士站并开通了一些单程巴上线路。每条单程巴士线路从某个巴士站出发,依次途经若干个巴士站,最终到达终点巴士站。一名旅客最近到H城旅游,他很想去S公园游玩,但如果从他所在的饭店没有一路已士可以直接到达S公园,则他可能要先乘某一路巴士坐几站,再下来换乘同一站台的另一路巴士, 这样换乘几次后到达S公园。现在用整数1,2,…N 给H城的所有的巴士站编号,约定这名旅客所在饭店的巴士站编原创 2020-12-22 21:13:13 · 104 阅读 · 0 评论 -
SSLOJ 1457 翻币问题
Description有N个硬币(6<=N<=20000)全部正面朝上排成一排,每次将其中5个硬币翻过来放在原位置,直到最后全部硬币翻成反面朝上为止。试编程找出步数最少的翻法,输出最少步数及翻法。Input从键盘输入一个正整数N(6<=N<=20000),表示硬币的数量。Output第1行:一个整数,表示最少步数第2行至最后一行:先是一个整数,表示步骤序号(从0开始编号),后接一个":",再接当前硬币的状态(用一个整数表示正面朝上的硬币的个数)Sample Input原创 2020-12-19 16:53:15 · 116 阅读 · 1 评论 -
SSLOJ 1456 骑士旅行
Description在一个n m 格子的棋盘上,有一只国际象棋的骑士在棋盘的左下角 (1;1)(如图1),骑士只能根据象棋的规则进行移动,要么横向跳动一格纵向跳动两格,要么纵向跳动一格横向跳动两格。 例如, n=4,m=3 时,若骑士在格子(2;1) (如图2), 则骑士只能移入下面格子:(1;3),(3;3) 或 (4;2);对于给定正整数n,m,I,j值 (m,n<=50,I<=n,j<=m) ,你要测算出从初始位置(1;1) 到格子(i;j)最少需要多少次移动。如果不可能到达目标原创 2020-12-19 16:01:56 · 62 阅读 · 1 评论 -
SSLOJ1455电子老鼠闯迷宫
Description如下图12×12方格图,找出一条自入口(2,9)到出口(11,8)的最短路径。InputOutputSample Input12 //迷宫大小2 9 11 8 //起点和终点1 1 1 1 1 1 1 1 1 1 1 1 //邻接矩阵,0表示通,1表示不通1 0 0 0 0 0 0 1 0 1 1 11 0 1 0 1 1 0 0 0 0 0 11 0 1 0 1 1 0 1 1 1 0 11 0 1 0 0 0 0 0 1 0 0 11 0 1 0 1 1原创 2020-12-19 15:52:53 · 63 阅读 · 1 评论 -
P1077 [NOIP2012 普及组] 摆花
题目题目思路显然我们会想到dfs,但是会TLE,所以我们用记忆化搜索完成。code:#include<iostream>#include<cmath>#include<algorithm>#include<cstdio>#include<cstring>using namespace std;int n,m,a[101],u[101][101];int dfs(int x,int y){ if (y>m) retu原创 2021-02-20 10:07:49 · 75 阅读 · 0 评论 -
P1874 快速求和
题目题目思路这道题目其实挺有意思,一个1年+的OIer第一眼就能想到dfs并在20mins以内打出暴力,但是我们发现……TLE了,所以我们需要剪枝。首先显然如果一开始不要+号就相等,直接一个0,退出,(10pts,不要dfs)接下来我们发现,如果全部加起来(设长度为m,用m-1个加号)都>n,显然无解同理,用上面的方法,可以进行剪枝:当前dfs到第x位,若前面的和+后面的所有数之和>n,可以直接回溯。由数据范围可知,每一个加数长度必须<6。好了,这就够了,上code:#i原创 2021-02-18 11:08:15 · 279 阅读 · 0 评论 -
P1817 棋盘染色
题目题目思路额,显然这破题打表啊!7*8打表出奇迹啊!打表代码见这玩意啊!code:#include<cstring>#include<iostream>#include<cmath>#include<queue>#include<algorithm>using namespace std;long long s[7][8]={{0,2,4,6,8,10,12,14},{2,12,30,56,90,132,182,240},{原创 2021-02-15 14:16:31 · 402 阅读 · 0 评论 -
P1790 矩形分割
题目题目思路额,其实仔细研究就会发现只要确定了分割的方法(分割线)那么结果就已经确定了,那么我们要枚举起点,而且只需要枚举2条边,当然,这是因为从另一边开始搜索显然一定是与前2边重复的。使用此方法可ACP4537code:#include<cstring>#include<iostream>#include<cmath>#include<queue>#include<algorithm>using namespace std;原创 2021-02-15 14:04:13 · 149 阅读 · 0 评论 -
P1784 数独
题目描述数独是根据 9×99 \times 99×9 盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫内的数字均含 1−91 - 91−9 ,不重复。每一道合格的数独谜题都有且仅有唯一答案,推理方法也以此为基础,任何无解或多解的题目都是不合格的。芬兰一位数学家号称设计出全球最难的“数独游戏”,并刊登在报纸上,让大家去挑战。这位数学家说,他相信只有“智慧最顶尖”的人才有可能破解这个“数独之谜”。据介绍,目前数独游戏的难度的等级有一到五级,一是入门等级,五则比较难。不过这位原创 2021-01-22 16:33:22 · 155 阅读 · 0 评论 -
SSLOJ1127 方程的解数&P5691
Description已知一个 n 元高次方程:∑i=1nkixipi=0\sum\limits_{i=1}^n k_ix_i^{p_i} = 0i=1∑nkixipi=0其中:x1,x2,…,xnx1,x2,…,xnx1,x2,…,xn是未知数,k1,k2,…,knk1,k2,…,knk1,k2,…,kn 是系数,p1,p2,…pnp1,p2,…pnp1,p2,…pn是指数。且方程中的所有数均为整数。假设未知数 xi∈[1,m] (i∈[1,n])x_i \in [1,m]原创 2021-01-21 17:56:59 · 177 阅读 · 0 评论 -
P4017 最大食物链计数
题目背景你知道食物链吗?Delia 生物考试的时候,数食物链条数的题目全都错了,因为她总是重复数了几条或漏掉了几条。于是她来就来求助你,然而你也不会啊!写一个程序来帮帮她吧。题目描述给你一个食物网,你要求出这个食物网中最大食物链的数量。(这里的“最大食物链”,指的是生物学意义上的食物链,即最左端是不会捕食其他生物的生产者,最右端是不会被其他生物捕食的消费者。)Delia 非常急,所以你只有 1 秒的时间。由于这个结果可能过大,你只需要输出总数模上 80112002 的结果。输入格式第一行,两原创 2021-01-09 09:26:12 · 123 阅读 · 0 评论 -
ZOJ Prime Ring Problem
A ring is compose of n circles as shown in diagram. Put naturalnumber 1, 2, …, n into each circle separately, and the sum of numbers in twoadjacent circles should be a prime.Note: the number of first circle should always be 1.Inputn (0 < n < 20)原创 2020-12-25 18:28:05 · 100 阅读 · 0 评论 -
SSLOJ1438 骑马修栅栏&P2731
Description农民John每年有很多栅栏要修理。他总是骑着马穿过每一个栅栏并修复它破损的地方。John是一个与其他农民一样懒的人。他讨厌骑马,因此从来不两次经过一个一个栅栏。你必须编一个程序,读入栅栏网络的描述,并计算出一条修栅栏的路径,使每个栅栏都恰好被经过一次。John能从任何一个顶点(即两个栅栏的交点)开始骑马,在任意一个顶点结束。每一个栅栏连接两个顶点,顶点用1到500标号(虽然有的农场并没有500个顶点)。一个顶点上可连接任意多(>=1)个栅栏。所有栅栏都是连通的(也就是你可以原创 2020-12-19 14:41:40 · 83 阅读 · 1 评论 -
SSLOJ 1116 控制公司&&P1475
Description有些公司是其他公司的部分拥有者,因为他们获得了其他公司发行的股票的一部分。例如,福特公司拥有马自达公司12%的股票。据说,如果至少满足了以下条件之一,公司A就可以控制公司B了:• 公司A = 公司B。• 公司A拥有大于50%的公司B的股票。• 公司A控制K(K >= 1)个公司,记为C1, …, CK,每个公司Ci拥有xi%的公司B的股票,并且x1+ … + xK > 50%。你将被给予一系列的三对数(i,j,p),表明公司i享有公司j的p%的股票。计算所有的数对原创 2020-12-18 19:58:52 · 95 阅读 · 1 评论 -
SSLOJ 1493 货员的难题
Description某乡有 n 个村庄( 1 < n <40 ),有一个售货员,他要到各个村庄去售货,各村庄之间的路程 s(0<s<1000) 是已知的,且 A 村与 B 村与 B 村与 A 村的路大多不同,为了提高效率,他从商店出发到每个村庄一次,然后返回商店所在的村,假设商店所在的村庄为 1 ,他不知道选择什么样的路才能使所走的路程最短,请你帮助他选择一条路径。Input村庄数 n 和各村之间的路程(均是整数)Output最短路程Sample Input3 // 村庄数量0 2 1 /原创 2020-12-18 19:52:38 · 88 阅读 · 1 评论 -
2020牛客NOIP赛前集训营-普及组(第六场)全部解析
目录A 七七七七(水题)B 平面旅行(枚举)C 小球下落(dfs暴力)D 自由世界(spfa打脸正解)A 七七七七题目链接来源:牛客网牛牛最近对7很感兴趣,他想到了一个问题。牛牛想存n元钱,他决定第1天存1元,第2天存7元,第3天存49元,以此类推,每天存的钱是前一天的7倍。牛牛想知道几天后,存款的总额能大于等于n元钱。不会吧不会吧,这都不会思路被我吃了直接暴力code:#include<iostream>#include<cstdio>#i原创 2020-10-30 22:00:05 · 537 阅读 · 0 评论 -
SSL维修店
题目描述A公司想在N个城市中选择M个来开维修店,而购买了A公司产品的人如果要维修,可以送到最近的维修店。A公司想知道,选择哪些城市开维修店可以使得离维修店最远的那个城市离维修店的距离尽量小。给出N个城市的坐标(城市的坐标是唯一的),你能帮A公司求出这个最小的距离吗?输入repair.in的第一行包含两个整数,分别是城市数N以及维修店数M。接下来的N行各包含两个数,分别是每个城市的X坐标和Y坐标。输出repair.out只有一行,包含一个小数,为所求的最小距离,保留2位有效数字。思路这道题先预原创 2020-09-12 14:18:55 · 143 阅读 · 0 评论 -
P1434滑雪&&PKU1088&&SSL1202
DescriptionMichael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9一个人以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在上面的例子中,一原创 2020-08-23 14:34:25 · 124 阅读 · 0 评论 -
【SSL】1644
Description给定M*N的矩阵,其中的每个元素都是-10到10之间的整数。你的任务是从左上角(1,1)走到右下角(M,N),每一步只能向右或向下,并且不能走出矩阵的范围。你所经过的方格里面的数字都必须被选取,请找出一条最合适的道路,使得在路上被选取的数字之和是尽可能小的正整数。Input第一行两个整数M,N,(2<=M,N<=10),分别表示矩阵的行和列的数目。接下来的M行,每行包括N个整数,就是矩阵中的每一行的N个元素。Output仅一行一个整数,表示所选道路上数字之和所能原创 2020-08-23 07:56:56 · 104 阅读 · 0 评论 -
SSL1250计算e值
Description问题描述:由数学公式可知:e=1+1/1!+1/2!+…+1/n!+…,精确到小数点后的如1000位。N由键盘输入。Sample Input500Sample Output2.71828182845904523536028747135266249775724709369995957496696762772407663035354759457138217852516642742746639193200305992181741359662904357290033429526059原创 2020-08-17 16:40:17 · 105 阅读 · 0 评论 -
SSLOJ1197 质数和分解
Description任何大于 1 的自然数 n,都可以写成若干个大于等于 2 ,且小于等于 n 的质数之和表达式(包括只有一个数构成的和表达式的情况),并且可能有不止一种质数和的形式。例如9 的质数和表达式就有四种本质不同的形式:9 = 2+5+2 = 2+3+2+2 = 3+3+3 = 2+7 。这里所谓两个本质相同的表达式是指可以通过交换其中一个表达式中参加和运算的各个数的位置而直接得到另一个表达式。试编程求解自然数 n 可以写成多少种本质不同的质数和表达式。Input每一行存放一个自然数原创 2020-08-17 16:28:46 · 145 阅读 · 0 评论 -
SSLOJ1114 和为0
Description请考虑一个由1到N(N=3, 4, 5 … 9)的数字组成的递增数列:1 2 3 … N。现在请在数列中插入“+”表示加,或者“-”表示减,抑或是“ ”表示空白,来将每一对数字组合在一起(请不在第一个数字前插入符号)。计算该表达式的结果并注意你是否得到了和为零。请你写一个程序找出所有产生和为零的长度为N的数列。Input单独的一行表示整数N (3 <= N <= 9)。Output按照ASCII码的顺序,输出所有在每对数字间插入“+”, “-”, 或 “ ”原创 2020-08-17 16:23:37 · 87 阅读 · 0 评论 -
SSL1284压岁钱
压岁钱概述给你n个人名和这n个人得到的压岁钱(一个人可以有好几笔)求谁得的钱最多输入样例3xiaoming 100 50 888daxiong 88 166 1000 8888 8xiaoy 8输出样例daxiong思路1.读入字符串和其后的n笔钱,累计钱数和(话说我为什么没有这么多钱)2.排序(结构体排序)(当然直接求最大值方便快捷)3.输出上代码:#include<cstring>#include<algorithm>#include<c原创 2020-08-17 15:48:09 · 112 阅读 · 0 评论 -
SSL1286恶作剧
恶作剧概述给定一个数字字符串,用最少次数的加法让字符串等于一个给定的目标数字。每次加法就是在字符串的某个位置插入一个加号。在需要的所有加号都插入后,就象做普通加法那样来求值。例如,考虑字符串"12",做 0 次加法,我们得到数字 12。如果插入 1 个加号,我们得到 3。因此,这个例子中,最少用 1 次加法就得到数字 3。再举一例,考虑字符串"303"和目标数字 6,最佳方法不是"3+0+3",而是"3+03"。能这样做是因为 1 个数的前导 0 不会改变它的大小。输入样例2222 8输出样原创 2020-08-17 15:38:34 · 176 阅读 · 0 评论 -
SSL1377编码2
编码概述给你一个排列,求序号(如1 2 3 4为1,5 4 3 2 1为120)输入样例3 2 1 4输出样例15思路就是一个康托展开,但是要加高精度,而且康托展开是从0开始编,所以错了3次555康托展开:公式如下:s=a[n]∗(n−1)!+a[n−1]∗(n−2)!……a[1]∗(n−n)!s=a[n]*(n-1)!+a[n-1]*(n-2)!……a[1]*(n-n)!s=a[n]∗(n−1)!+a[n−1]∗(n−2)!……a[1]∗(n−n)!上正确代码:#include原创 2020-08-17 15:21:15 · 74 阅读 · 0 评论