
ACM/ICPC图论_BFS
just_sort
Acdream.
展开
-
NYOJ 82 迷宫寻宝
描述一个叫ACM的寻宝者找到了一个藏宝图,它根据藏宝图找到了一个迷宫,这是一个很特别的迷宫,迷宫里有N个编过号的门(N 输入输入可能会有多组测试数据(不超过10组)。每组测试数据的第一行包含了两个整数M,N(1.表示可以走的路S:表示ACM的出发点G表示宝藏的位置X表示这里有墙,ACM无法进入或者穿过。A,B,C,D,E表示这里是门,a,b,c,d,原创 2016-04-08 11:39:37 · 707 阅读 · 0 评论 -
CCPC 2015 部分题解
【A Secrete Master Plan】http://acm.uestc.edu.cn/#/problem/show/1215【题意】水题,题意就是给了两个2*2的矩形,判断通过旋转是否这两个矩形是否相同。【解题方法】水题。模拟一下,【AC 代码】#include using namespace std;typedef long long LL;int main原创 2016-09-22 21:15:50 · 1983 阅读 · 0 评论 -
2016弱校连萌十一专场10.3 部分题解
【比赛题目链接】https://www.bnuoj.com/v3/contest_show.php?cid=8504#info【A】找两个数乘积是连续上升并且最大的。模拟即可。【代码君】////Created by just_sort 2016/10/3//Copyright (c) 2016 just_sort.All Rights Reserved//#includ原创 2016-10-07 18:57:43 · 604 阅读 · 0 评论 -
【玩耍】一水
【训练赛地址】点击打开链接【PS】由于几乎是中文题目和题目比较短,就不说题意了。【A】中文题目,状压+BFS,没有什么坑点,上代码。【AC代码】////Created by just_sort 2016/12/1//Copyright (c) 2016 just_sort.All Rights Reserved//#include #include #incl原创 2016-12-02 14:43:10 · 544 阅读 · 0 评论 -
BZOJ 1054: [HAOI2008]移动玩具 BFS, Hash
Description 在一个4*4的方框内摆放了若干个相同的玩具,某人想将这些玩具重新摆放成为他心中理想的状态,规定移动 时只能将玩具向上下左右四个方向移动,并且移动的位置不能有玩具,请你用最少的移动次数将初始的玩具状态移 动到某人心中的目标状态。 Input 前4行表示玩具的初始状态,每行4个数字1或0,1表示方格中放置了玩具,0表示没有放置玩具。接着是一个空 行。接下来4行原创 2017-01-22 21:49:23 · 637 阅读 · 0 评论 -
BZOJ 1064: [Noi2008]假面舞会 图论, BFS, 脑洞
Description一年一度的假面舞会又开始了,栋栋也兴致勃勃的参加了今年的舞会。今年的面具都是主办方特别定制的。每个参加舞会的人都可以在入场时选择一 个自己喜欢的面具。每个面具都有一个编号,主办方会把此编号告诉拿该面具的人。为了使舞会更有神秘感,主办方把面具分为k (k≥3)类,并使用特殊的技术将每个面具的编号标在了面具上,只有戴第i 类面具的人才能看到戴第i+1 类面具的人的编号,戴第k 类面原创 2017-01-25 11:32:21 · 540 阅读 · 0 评论 -
Educational Codeforces Round 5 C. The Labyrinth BFS,并查集
题目链接:见这里 C. The Labyrinth time limit per test 1 second memory limit per test 256 megabytes input standard input output standard outputYou are given a rectangular field of n × m cells. Each cel原创 2017-03-04 09:18:08 · 492 阅读 · 0 评论 -
UVALive 6908 Electric Bike dp,BFS
题目链接:这里 题意:给了n段路,每段路长度不同,你有一辆车最多可以提供E的能量,你的车有四个档,最多换k次档 Assist Level 0 1 2 3 Assist Power 0 4 8 11 0档花费能量0,走的路程长度为0,1档花费1能量,走得最大路程为4…. ,每段路用一个档,如果这个档不能使你走完这段路,那么只能自己蹬,如果超过这段路长度,超过部分不计算到下一原创 2017-03-17 14:50:22 · 488 阅读 · 0 评论 -
CF 489D Unbearable Controversy of Being BFS
题目链接:这里 题意:给了一个有向图,问有多少个点对(a, b, c, d)满足a->b->d并且a->c->d,求组成这样的菱形的个数。 解法:水题,对每个点aBFS标记,最后那些对于每个点来说标记了2次以上的肯定就是d点。 复杂度O(n*m)//CF 489D#include <bits/stdc++.h>using namespace std;const int maxn = 301原创 2017-03-10 14:00:38 · 355 阅读 · 0 评论 -
CF 789E BFS
题目链接:http://codeforces.com/contest/789/problem/E 题意:给你一个数n,一个数k,再给k个数字,每个数字可以选择任意个数,最后问你最少使用“几个次”数字使得平均数为n。(0 ≤ n ≤ 1000, 1 ≤ k ≤ 1e6) ,(0 ≤ ai ≤ 1000)解法:先统一一下度量,这k个数字ai,对最后结果的贡献应该是ai-n吧,所以先这么处理一下。然后b原创 2017-03-31 19:56:03 · 1029 阅读 · 0 评论 -
信息新生训练 BFS,DFS 小朋友的专题作业
A,题目链接https://www.oj.swust.edu.cn/problem/show/1378 解法:DFS,经典的FloodFilld填充,找个点开始DFS,把这个点可以扩展到的点标记,然后答案加1,然后继续DFS其他没有被访问的点。#include<stdio.h>#include<queue>#include<iostream>#include<cstring>using n原创 2017-04-01 10:15:31 · 761 阅读 · 0 评论 -
BZOJ 1294: [SCOI2009]围豆豆Bean 状压DP,SPFA,计算集合射线法
Input 第一行两个整数N和M,为矩阵的边长。 第二行一个整数D,为豆子的总个数。 第三行包含D个整数V1到VD,分别为每颗豆子的分值。 接着N行有一个N×M的字符矩阵来描述游戏矩阵状态,0表示空格,#表示障碍物。而数字1到9分别表示对应编号的豆子。 Output 仅包含一个整数,为最高可能获得的分值。 Sample Input 3 8330 -100 3000000000010203#原创 2017-04-21 16:41:57 · 976 阅读 · 0 评论 -
美团CODEM 最长树链 枚举质因数,DFS或者直接BFS
题意:树链是指树里的一条路径。美团外卖的形象代言人袋鼠先生最近在研究一个特殊的最长树链问题。现在树中的每个点都有一个正整数值,他想在树中找出最长的树链,使得这条树链上所有对应点的值的最大公约数大于1。请求出这条树链的长度。解法:枚举每个约数,保留对应的边,做一次最长路径。因为一个数的约数个数可以保证,所以复杂度符合要求。 下面是官方题解给的代码:#include <cstdio>#include原创 2017-06-28 20:18:52 · 761 阅读 · 0 评论 -
SCU4498 RunningPhoton's Nightmare
【题目】点击打开链接【解题思路】bfs,结构体中存放当前位置x,y以及走了dis的时间,全局变量dis[][]代表在(i,j)这个点的炸弹剩余时间。如果这题直接用结构体来存放位置,走了dis的时间以及炸弹爆炸的时间的话,会MLE(雾),这题还有一个迷之T++==。还可以预处理起点,终点,R点的最小距离,跑最短路也可以。【AC代码】#pragma comment(linker, "/原创 2016-07-14 19:01:27 · 434 阅读 · 0 评论 -
HDU 3085
【题意】一个迷宫里面有两个人,一个是M,一个是G,里面还有两个鬼,给出这个迷宫的状态。现在M每一秒可以走3步,G每一秒只能走一步。鬼每一秒可以走两步,鬼走过的地方人不能走,不然会死的很惨。现在问你M和G能不能相遇?如果能的话,输出需要走的时间。不能的话,输出-1.【分析&解题思路】题目给的迷宫是800*800,所以考虑一般的bfs是过不了的,这里才用双向的bfs。但是题目里面还是包含一个坑点的原创 2016-05-16 16:09:12 · 829 阅读 · 0 评论 -
POJ 3278 Catch That Cow
【分析】简单bfs,来不及解释了,快上车。【AC代码】#include#include#include#includeusing namespace std;const int maxn=100001;bool vis[maxn];int step[maxn];queue q;int bfs(int n,int k){ int head,next; q.p原创 2016-04-10 10:05:31 · 406 阅读 · 0 评论 -
FZU 2150 Fire Game
【题意】给出一个m*n的图,‘#’表示草坪,‘ . ’表示空地,然后可以选择在任意的两个草坪格子点火,火每 1 s会向周围四个格子扩散,问选择那两个点使得燃烧所有的草坪花费时间最小?【分析】这个题目如果考虑技巧的话有点难度,但是鉴于数据范围比较小,我们可以暴力枚举任意的草坪所在的点,然后两个点压进队列里面BFS,去一个满足条件的最小值即可。【总结】此题就是简单bfs,然而两个点同在相同原创 2016-04-10 18:45:33 · 359 阅读 · 0 评论 -
POJ 1465 Multiple
【题意】给了n个数字,和一个数m,其中m的范围在5000以内,现在问你能否用这n个数字拼成一个数,使得数是m的倍数,并且要保证这个数最小!【分析】由于要最小,排序是必要的,然后就是搜索了。想了很久都不能搞定这个问题,网查大牛博客了。才发现这个题真的劲啊,用了一个同于剪枝!具体如下:A=MX+R B=NX+R 假设A,B对于X的余数相同 那么 (10*A+d[i])%x (10*B+d[i]原创 2016-04-10 20:09:03 · 341 阅读 · 0 评论 -
POJ 3279 Fliptile
【题意】一个m*n的01矩阵,每次点击(x,y),那么她的上下左右以及本身就会0变1,1变0,问把矩阵变成全0的,最小需要点击多少步。【分析】只需要枚举第一行的状态即可,后面的状态都可以根据第一行直接推出来,还要注意这题还有不存在的情况,详见代码!【AC代码】#include #include #include #include #include #include us原创 2016-05-10 11:02:54 · 872 阅读 · 0 评论 -
POJ 3126 Prime Path
【题意】给定两个4位的质数a和b,从a开始每次只能改变a的一个数字,并且改完后的a还是质数,求a最少经过几次变换能得到b..... 比如1033变到8179最少需要6次,过程如下1033173337333739377987798179【分析】简单40入口bfs。【AC代码】#include #include #include #include #原创 2016-05-10 18:54:02 · 743 阅读 · 0 评论 -
POJ 3414 Pots
【题意】有两个水壶,对水壶有三种操作,1)FILL(i),将i水壶的水填满,2)DROP(i),将水壶i中的水全部倒掉,3)POUR(i,j)将水壶i中的水倒到水壶j中,若水壶 j 满了,则 i 剩下的就不倒了,问进行多少步操作,并且怎么操作,输出操作的步骤,两个水壶中的水可以达到C这个水量。如果不可能则输出impossible。初始时两个水壶是空的,没有水。【分析】对于A,B两个瓶子一共原创 2016-05-10 20:44:55 · 1079 阅读 · 0 评论 -
UVA 11624 Fire!
【题意】一个平面迷宫中有一个人,迷宫中有些点起火了,火和人每个单位时间只能向相邻的格子移动, 其中有一些空间被墙壁占据,问这个人在不背或烧到的情况下,离开迷宫的最快时间。【分析】如果没有火,那么本题是一个标准的迷宫问题,可以用BFS解决。加上了火,难度增加了多少呢?其实没多少。注意,火是不能自动熄灭的,因此只要某个格子在某时刻起火了,以后将一直如此。所以只需要预处理每原创 2016-05-11 19:03:37 · 531 阅读 · 0 评论 -
POJ 3984 迷宫问题
【题意】中文题。。。【思路】简单bfs加路径记录。【AC代码】#include #include #include #include #include #include #include #include #include using namespace std;struct node{ int x,y; node(){} node(int原创 2016-05-11 21:08:03 · 331 阅读 · 0 评论 -
HDU 1495 非常可乐
【题意】大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为。因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多。但seeyou的手中只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S【分析】仔细分析一下,这题也不过就仅仅是6种情况,1->2,1->3,2->1,2->3,3->2,3原创 2016-05-12 15:17:16 · 454 阅读 · 0 评论 -
HDU 2181 哈密顿绕行世界问题
【题意】中文题面。【分析&解题思路】简单回溯,排序之后回溯。【AC代码】#include #include #include #include #include #include #include using namespace std;vectorG[21];int v[3];bool vis[21];int ans[21];int cnt;void pri原创 2016-05-13 11:30:11 · 411 阅读 · 0 评论 -
Codeforces Round #354 (Div. 2) D. Theseus and labyrinth
【题链接】点击打开链接【题意】一个迷宫,每个位置都有一个字符,除了*(这个代表墙,不能通过)其他的字符都代表了一种性质,在这种字符上下一步能走到哪些方向。然后还有一种操作是花费1s的时间来旋转这个矩阵(旋转90度)!让矩阵里面的每个字符旋转到对应的字符。然后给出了一个人的初始位置和目的地位置,问你这个人能不能走到目的位置,如果能,输出走到目的位置的最短时间。如果不能的话,输出-1.原创 2016-05-26 16:52:43 · 507 阅读 · 0 评论 -
HDU 2102 A计划
【题意】中文题面。【分析&解题思路】简单BFS。【AC代码】#include #include #include #include #include using namespace std;struct node{ int x,y,z,time;}now,nex;int dir[4][2]={{0,1},{0,-1},{-1,0},{1,0}};int n,m原创 2016-05-13 18:04:44 · 491 阅读 · 0 评论 -
美团CODEM 送外卖
时间限制:1秒空间限制:32768K n 个小区排成一列,编号为从 0 到 n-1 。一开始,美团外卖员在第0号小区,目标为位于第 n-1 个小区的配送站。 给定两个整数数列 a[0]~a[n-1] 和 b[0]~b[n-1] ,在每个小区 i 里你有两种选择: 1) 选择a:向前 a[i] 个小区。 2) 选择b:向前 b[i] 个小区。把每步的选择写成一个关于字符 ‘a’ 和 ‘b’ 的原创 2017-07-03 11:13:05 · 1136 阅读 · 0 评论