搜索
JW_7066
这个作者很懒,什么都没留下…
展开
-
CSU 1569 Wet Tiles(水~~)
题目吓到我了,看到那么长就不想做了,后来发现挺简单的。。。。 其实就是裸的bfs 给定n*m的矩阵 时刻t L个起点 W个墙 下面给出L个点的坐标 下面每4个数字给出每个墙的起点终点(墙要么平行于轴,要么45°倾斜) 问每个点bfs出去t下后,整个图被遍历了多少点。 #include #include #include #include #include usi原创 2015-04-21 22:37:07 · 623 阅读 · 0 评论 -
CSU 1657 Ways(bfs)
题目链接:【CSU 1657】 有一个n*n的正整数矩阵,要你求一条从第一行第一列的格子到第n行第n列的路,使得你走过的格子里面的数乘起来的值末尾的零的个数最小。输出最小个数。 统计并记录每一格2的个数以及5的个数,搜索到第i行第j列时,记录以下四个数据: 1、dp[i][j][0][0]:2比较少时2的个数 2、dp[i][j][0][1]:2比较少时5的个数 3、dp[i][j][1原创 2016-02-28 16:23:46 · 444 阅读 · 0 评论 -
HDU 3220 Alice’s Cube(逆向搜索)
题目链接:【HDU 3220】 输入超立方体的16个点的状态,0表示灯是关着的,1表示灯是开着的,每一个点都连着3条边,如果一条边上的等的状态不同,那么可以将这两个状态对调,问最终变成前8个点是0,后8个点是1最少需要几步,小于等于3的直接输出,大于3的输出more 从前往后考虑比较烦,直接从后往前预处理,用二进制表示16个点的状态 最终的状态000000001111111,就是(1 从最原创 2016-02-23 22:47:47 · 477 阅读 · 0 评论 -
codeforces 618D Hamiltonian Spanning Tree(dfs)
题目链接:【codeforces 618D】 给出一个由n个节点和(n-1)条边组成的生成树,这棵生成树是从包含这n个节点的完全图中出来的,生成树上边的权值是x,在完全图中但是不在生成树上的边的权值是y,求将所有的几点遍历一遍的最短路径 最短路径中每个点最多连着两条边,分两类讨论: 1、x 使得最短路径中的边尽可能多的在生成树中 随便定义一个点作为起点,dfs跑一边,边跑边记录节点v还剩下原创 2016-01-30 22:58:01 · 1003 阅读 · 0 评论 -
codeforces 616C The Labyrinth(bfs)
题目链接:【codeforces 616C】 输入n*m的方格,有*和.组成,输出n*m的矩阵,如果str[i][j] = '.'直接输出'.',如果str[i][j] = '*',则假设str[i][j]='.',上下左右四个方向相连的'.'的个数 先预处理原先就有的'.'块,用vis[i][j]表示ij这个点属于第几个区块,用p[]这个数组储存每个区块所求点的个数,输出时将上下左右四个方向原创 2016-01-13 15:51:22 · 1104 阅读 · 0 评论 -
Codeforces Round 306 B Preparing Olympiad(简单dfs)
http://http://codeforces.com/contest/550/problem/B 题意: 输入n,l,r,x以及n个数 在这n个数中找出i(i>=2 && i)个数,使得它们的和>=l&&=x 解题思路: 用dfs一个一个搜过去 #include #include #include #include #include #include using原创 2015-06-05 20:20:42 · 673 阅读 · 0 评论 -
FZU 2124 吃豆人(BFS 坑有点多)
题目链接:【FZU 2124】 题目描述: 吃豆人是一款非常经典的游戏,游戏中玩家控制吃豆人在地图上吃光所有豆子,并且避免被怪物抓住。 这道题没有怪物,将游戏的画面分成n*m的格子,每格地形可能为空地或者障碍物,吃豆人可以在空地上移动,吃豆人每移动一格需要1s时间,并且只能朝上下左右四个方向移动,特别的是吃豆人还能吐出舌头,舌头每移动一格需要0.1s时间,舌头只可以走直线。不必考原创 2016-01-27 22:11:03 · 1067 阅读 · 0 评论 -
UVALive 4627 Islands(BFS+并查集)
题目链接:【UVALive 4627】 输入n*m的数字矩阵,矩阵上的数字表示的是水的深度,在第i年,水的深度应该是i,输入num个年份,输出每个年份里,水的深度高出的区块有几个 第二年,水的最高深度是2,超出的部分就是上述的阴影区域,是3块,输出3 先用优先队列,按水的深度排序,深度大的在前面,并查集是用来记录他们是不是属于同一个区块 #include #include #i原创 2016-01-27 10:31:30 · 430 阅读 · 0 评论 -
HDU 1560 DNA sequence(BFS+hash)
题目链接:【HDU 1560】 输入n个字符串,找出最短的序列(从前往后,这n个字符串均能在这个序列中找到,不要求连续) 枚举第i个位置的可能性,一共四个字母“ACGT”,我一开始直接记录前i个字符,结果MLE了 用哈希优化,has用来记录枚举到第i个位置时,所有的字符串已经匹配掉后得到的哈希值,v[]用来记录目前已经有多少个字母已经匹配掉了 看题目中的数据,ACGT、ATGC、CGTT、原创 2016-01-27 19:46:45 · 495 阅读 · 0 评论 -
UVALive 4622 Decision(bfs)
题目链接:【UVALive 4622】 ABCDEF代表着6种不同的 区块,输入n*m的由A~F组成的字符矩阵,问这个矩阵有几个阴影区块,有公共边的是相连的 从边入手,用结构体储存四条边,有阴影的边是1,无阴影的边是0,比如B这个图像,n.l=1, n.d=1, n.r=0,,n.f=0,bfs搜索,将公共边都是1的标记 #include #include #include #incl原创 2016-01-27 09:35:40 · 349 阅读 · 0 评论 -
POJ 3279 Fliptile(二进制+暴 力) UVALive 3953
题目链接:【POJ 3279】 n*m的棋盘,由每一格都是由0和1组成的,将ij这格翻转(就是0变1,1变0),相邻的四个方向也要翻转,即上下左右这四个方向 这题跟UVALive 3953几乎是一模一样的,UVALive 3953只是多了一步,将字符矩阵转化为01矩阵,剩下的做法一样 棋盘翻转是每一小格最多翻转一次,翻多次是没有意义的,因为每一格就只有两种状态,翻多次也就是这两种状态在变来变原创 2016-01-25 13:14:17 · 451 阅读 · 0 评论 -
POJ 1426 Find The Multiple(dfs)
题目链接:【POJ 1426】 输入n(1 深搜m,m的初始值是1,对于每一个m都朝两个方向找,一个是m*10,另一个是m*10+1 #include #include #include #include #include #include using namespace std; #define ll __int64 int n; ll ans; void dfsans(ll原创 2016-01-22 15:11:49 · 364 阅读 · 0 评论 -
UVA 11624 Fire!(两次bfs)
题目链接:【UVA 11624】 n*m的迷宫是由.跟#组成的,.表示这是路,#表示这是墙,一个人在迷宫里面,迷宫着火了,J表示这个人在迷宫中的位置,F表示着火的地方,J想逃出来,每一分钟,J只能往前后左右四个方向走,但是火却能同时往四个方向蔓延,问J能不能顺利逃出迷宫,如果能,输出逃出迷宫的最少时间,如果不能,输出IMPOSSIBLE 这个题目有点坑,迷宫中J这个位置有且仅有一个,但是F可以原创 2016-01-22 13:02:39 · 379 阅读 · 0 评论 -
hdu 1010 Tempter of the Bone(dfs)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010 题意: 在n*m的矩阵里面,走一步用去一秒 X表示墙,不能走过 S表示初始位置 D终点 如果从S走到D刚好用了T秒,输出YES,否则就输出NO 解题思路: 搜索求出从S到D的时间,与T比较 剪枝没弄好,TLE了很多次 剪枝一: 从当前位置到终点,如果已用时间+最短路原创 2015-07-17 22:49:26 · 386 阅读 · 0 评论 -
codeforces 339E Three Swaps (搜索 dfs)
题目链接:http://http://codeforces.com/problemset/problem/339/E 题意: 给出由1~n组成的序列,每次可将一个区间翻转 问如何从1~n的递增序列变成给出的序列,输出操作次数以及每次操作的区间 最多翻转3次,保证有解,输出的操作次数不一定是最小的 解题思路: 每次先翻转最长的连续区间 #include #in原创 2015-07-15 16:35:17 · 1450 阅读 · 3 评论 -
POJ 1088 滑雪 记忆化搜索(搜索 + dp)
解题思路: 先搜索,每访问一个点就用dp记录在这个点上能滑的最长距离,当下次再访问到它时,直接调用 #include #include #include using namespace std; int a[105][105],dp[105][105]; int f[4][2] = {0,1,1,0,0,-1,-1,0}; int r,c; int dfs(int j, int k) {原创 2015-03-31 16:28:15 · 591 阅读 · 0 评论 -
HDU 3085 Nightmare Ⅱ(双向BFS)
题目链接:【HDU 3085】 输入n*m的字符矩阵,矩阵中的M速度是3格/m,G的速度是1格/m,Z是鬼,初始有两个,每秒可以变出很多的分身Z(变出的分身在下一秒钟仍然可以变出无数个分身),占领跟Z距离是2的方格,直到占领所有的方格,每次都是鬼先占领方格,然后是M跟G走,M跟G可以同时都走,也可以有一个在原地不动,一个在走 一般先想到的是预处理Z,求出Z占领方格ij时的时间,但是,在这一题没原创 2016-01-28 23:16:59 · 1807 阅读 · 3 评论