![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
搜索
以dfs和bfs为主的简单搜索
~KIKI~
这个作者很懒,什么都没留下…
展开
-
C 涂墙
题目链接:2021年广东工业大学第十五届文远知行杯程序设计竞赛(同步赛)C 题目大意 问你能否找到5个数使得这五个数的完全平方和等于n? 1<=n<=1e6 思路 有返回值的搜索。层数大于5直接返回false,下一个值 t*t找大于n的最小完全平方数。 ac代码 #include<bits/stdc++.h> using namespace std; mt19937_64 rng(time(0)); #define io cin.tie(0);ios::sync_wit原创 2021-03-29 19:14:16 · 179 阅读 · 0 评论 -
2021年度训练联盟热身训练赛第四场 Connect3
题目链接:训练联盟4 B 题目大意 有一个4*4的棋盘,可以看成他是竖着的,下棋的时候其实是从下到上堆上去的,也就是说要想下到(3,1)位置,前提是(2,1)和(1,1)已经有棋子填着,所以说显然,刚开始下棋,只能在第一行下,也就是说(1,1),(1,2),(1,3),(1,4)。如果说场上出现同一行或者同一列挥着对角线上相邻的三个棋子同色,则结束游戏,那中颜色的玩家获胜。然后给你一个x表示黑棋先下的位置是(1,x),然后是a,b,表示白棋最后下的位置,问当白棋下最后一步赢了时,最后棋盘上棋子的所有可能原创 2021-03-28 21:00:25 · 84 阅读 · 1 评论 -
Hanjo
题目链接:abc_196d 题目大意 一个房间大小是h*w,有两种板砖,a块1*1的,b块2*1的。用完所有板砖可以铺满整个房间,问你有几种铺的方案。h*w<=16 思路 看到16,就可以二进制记录状态了嘛,然后二维转一维进行搜索,5(101)表示1,3位置已经砖覆盖,具体看代码。 ac代码 #include<bits/stdc++.h> using namespace std; mt19937_64 rng(time(0)); #define io cin.tie(0);i原创 2021-03-22 21:43:59 · 250 阅读 · 0 评论 -
牛客训练营G 机器人(状压dp||记忆化搜索)
题目链接:点这里~ 题目大意 n个机器人,每个机器人会读入一个x,并返回ax+b。现在有一个x,想让你合理安排机器人顺序,使得最终返回得到的x尽可能大,输出最大值。(1<=n,x,ai,bi<=20) 思路 给的范围很小才20,那么就可以考虑到状压dp。 dp[i][t]表示第i次循环在状态t的情况下出的最大值。t在二进制状态下1的位置表示该位置的机器人已经取过,比如5(101)表示1和3位置的机器人已经使用过。所以第i次循环中就枚举状态t中0的位置j,然后使用该机器人j,那么使用过机原创 2021-02-26 22:57:54 · 95 阅读 · 0 评论 -
2021牛客寒假算法基础集训营2 I-牛牛的“质因数”
题目链接:点这里~ 题目大意 F(x)表示将x做质因数分解后得到的数字从小到大升序排列,然后将其“拼接”成一个大整数。例如F(12)=223 求%(1e9+7) 1<=n<=4e6 思路 训练赛有打表的,有dfs的,我这里是bfs广搜,深度最大是7,不会超时 用线性筛筛出n内所有质因子,然后是字符串拼接,取模求和 ac代码 #include<bits/stdc++.h> using namespace std; #define ll long long #define原创 2021-02-03 22:37:46 · 178 阅读 · 0 评论 -
2021牛客寒假算法基础集训营1 C-红和蓝(二分图染色)
题目链接:点这里~ 题目大意 你拿到了一棵树,请你给每个顶点染成红色或蓝色。 要求:每个红点周围有且仅有一个红点,每个蓝点周围有且仅有一个蓝点。 最后输出每个点的颜色,R/B,如果不可以输出-1 范围1≤n≤100000 思路 红a1边上只有一个红a2,那么红a2边上也只有一个红a1,两者可以绑定到成一个点,蓝点同理,所以点数一定是偶数。 那么问题就转换成二分图染色,只有两种颜色,相邻的颜色不同。那么可以从叶节点往上绑定,因为每个叶节点只有一个父亲,如果这个父亲已经绑定过了,那么就不存在这样的原创 2021-02-02 13:51:27 · 1575 阅读 · 1 评论 -
非常可乐
题目链接:hdu 1495 题目大意 一瓶可乐容量是S,只有两个没有刻度的杯子,容量分别是a和b,可乐杯子之间可以相互倒 由于没有刻度,那么就肯定是要么倒完,要么倒满 问是否能平分这一瓶可乐,如果可以输出最少倒的次数,否则输出"NO" 思路 bfs 用广搜模拟六种情况,就是s->a,s->b,a->s,a->b,b->s,b->a这六种情况,s->a表示拿s往a中倒可乐,然后记录步数 当三个容器中出现两个容量是s/2,另外一个是0的情况,说明可以平分,原创 2021-01-31 23:52:11 · 173 阅读 · 0 评论 -
zcmu1342: Two Semiknights Meet
题目链接:https://acm.zcmu.edu.cn/JudgeOnline/problem.php?id=1342 题目大意 两个骑士,只能田字格走路,两个人在长为n,宽为m的平面上同时走,问他俩能否相遇。 平面包含三个元素: "." "#" "K",点表示好的平地,井号表示坏的平地,K表示骑士。 思路 跑两个bfs,记录两个骑士到ij平面需要的步数,如果他俩没有重复的地区,那肯定不会相遇。 然后如果两个能走到这块平地还不能说明他俩会相遇,也可能前脚出后脚进的情况。 所以还需要判断两个骑原创 2021-01-28 14:22:44 · 135 阅读 · 0 评论 -
zcmu1374: Greatest Naruto Army(递归)
题目链接:https://acm.zcmu.edu.cn/JudgeOnline/problem.php?id=1374 题目大意 忍者影分身。忍者有n点脉轮,当脉轮数量超过1的时候可以进行影分身,制造幻象,并且分他ai点脉轮,剩下bi点脉轮,同时主体疲劳值增加|ai-bi|,幻象和主体还能继续影分身,直到脉轮数等于1。问在幻象最多的情况下使得疲劳值最小,求这个最小疲劳值。 范围:(0 < N < 1e7) 思路 dfs递归求解。首先他一共有n-1个幻象这个毋庸置疑,那么现在就要降低疲原创 2021-01-29 20:33:47 · 371 阅读 · 1 评论 -
zcmu1369: Graph Theory(求树的直径)
题目链接:https://acm.zcmu.edu.cn/JudgeOnline/problem.php?id=1369 题目大意 给你一棵有N个结点的树,请找出这棵树上相距最远两点的距离(树的直径)。树上结点编号从0-(N-1)。所有相邻结点间的距离都为1。 思路 首先随便那个点为根节点建树跑dfs,我取了0,然后取深度最深的那个节点t,然后再以t为根建树跑dfs,最大深度就是树的直径了。 ac代码 #include<bits/stdc++.h> using namespace原创 2021-01-29 19:12:01 · 117 阅读 · 0 评论 -
zcmu1275: Seeding
题目链接:https://acm.zcmu.edu.cn/JudgeOnline/problem.php?id=1275 题目大意 长为n宽为m的草坪,“.”表示杂草,”S“表示石头,现在从(1,1)位置开始除草,每次可以上下左右移动,但是石头作为障碍物阻挡你前进,你应该选择绕路。问你最后能不能清理掉所有的杂草。 思路 从(1,1)位置开始跑dfs,看最大深度是不是n*m-cnt,cnt是石头个数。还要特判(1,1)位置是不是石头。 ac代码 #include<bits/stdc++.h原创 2021-01-27 23:02:36 · 124 阅读 · 0 评论 -
牛客巅峰赛--牛牛打怪兽(搜索)
题目链接:https://ac.nowcoder.com/acm/contest/6631/A 根节点为1的树,每个结点上最多有1只怪兽,牛牛最多只能打败两只,问从根结点开始,能走到叶结点的路径数 dfs直接暴搜,搜到叶结点的时候判断路上有多少怪兽,如果小于等于2,那么ans++ /** * struct Point { * int x; * int y; * }; */ const int N = 1e5+5; class Solution { public: /** .原创 2020-07-31 14:04:04 · 289 阅读 · 0 评论 -
牛客编程巅峰赛S1第3场 -黄金&钻石(解题报告)
题目链接:https://ac.nowcoder.com/acm/contest/6383 A-找卧底 题意:原本有n个人,现在多了一个卧底,找出排列中个数超过1的数 hint:用vis标记一下已经存在的人,如果已经存在了,那么当前这个人就是卧底 AC代码: class Solution { public: /** * * @param n int整型 * @param a int整型vector * @return in...原创 2020-07-25 11:00:09 · 130 阅读 · 0 评论 -
牛客算法周周练15 解题报告
A-数列下标 题意:给你一个序列A,求出一个数列B. 其中Bi表示数列A中Ai右边第一个比Ai大的数的下标(从1开始计数),没有找到这一个下标Bi 就为0 样例输入: 6 3 2 6 1 1 2 输出: 3 3 0 6 6 0 题意解读: 从当前下标开始数 第一个比3大的数是6,B为3 第一个比2大的数是6,B为3 没有比6大的数, B为0 第一个比1大的数为2,B为6 第一个比1大的数为2,B为6 没有比2大的数 B为...原创 2020-07-17 21:08:03 · 420 阅读 · 0 评论