搜索
文章平均质量分 65
Anonymous-邦
阿里巴巴家种芝麻的
展开
-
NYOJ_58最少步数(queue+BFS)
经典迷宫问题。。。STL~queue+BFS实现,给正在学习使用queue和BFS的童鞋提供一个比较好理解的模板~=w=~原创 2014-05-09 00:09:18 · 1104 阅读 · 0 评论 -
POJ 2785 4 Values whose Sum is 0(双向搜索+二分)
题意:给4个数组,从每个数组中选一个数,求出4个数和为0的方案数。分析:暴力时间复杂度为N^3,肯定不行。所以考虑先把ab、cd的和分别求出来。-(a+b)=c+d即满足条件,求和复杂度为N*N。ab数组为-(a+b),cd数组为(c+d)。从cd数组里找等于ab数组的即可。这里可以先给数组排序 ,然后用二分搜索找。复杂度为O(N*N*logN)。#include#include#原创 2015-04-04 21:33:00 · 476 阅读 · 0 评论 -
HDU 1175 连连看(BFS)
题意解析:其实就是判断起始点能否到达终止点。如果起始点和终止点值不同,直接输出NO。bfs,dfs都行。附加条件:①不能出边界 ②不能走值为0的点 ③路径不能转向两次以上节点需要记录该点的坐标,方向,转向次数。下面是BFS代码(注意剪枝:超过两次的就不要再加入队列了)#include#include#inc原创 2015-03-10 16:58:51 · 1043 阅读 · 0 评论 -
POJ3061 Subsequence(二分前缀和法+尺取法)
二分+前缀和法满足条件的子序列长度在(0,n)之间,sum[x+i]-sum[i]为从从第i个元素开始序列长度为x的元素的和。前缀和可在O(n)的时间内统计sum[i]的值。再用二分找出满足条件的最小的子序列长度。#include#include#include#include#include#include#include#include#include#inclu原创 2014-10-14 21:39:52 · 980 阅读 · 0 评论 -
POJ2456 Aggressive cows(二分+贪心)
假设C(d)为满足所有牛之间的距离都不小于d。先对牛舍的位置排序,然后二分枚举d,寻找满足条件的d。#include#include#include#include#include#include#include#include#include#include#define ll __int64#define INF 0x3fffffffusing namespace原创 2014-10-13 19:58:50 · 1129 阅读 · 0 评论 -
POJ1064 Cable master(二分)
本题用二分搜索可以很容易的求出答案。设条件C(X)为可以得到K条长度为X的绳子,C(x)=(floor(L(i)/x))。X的初始范围为(0,Max(L(i))+1)。#include#include#include#include#includeusing namespace std;double a[10005];int n,k;void solve(double l,原创 2014-10-12 10:52:01 · 864 阅读 · 0 评论 -
POJ3187 Backward Digit Sums
给出杨辉三角的顶点值,求底边各个数的值。直接DFS就好了#include#include#include#include#include#include#include#include#include#include#define ll __int64#define INF 0x3fffffff#define rep(i,n) for(int (i)=0;(i)<n;(原创 2014-10-08 23:49:56 · 873 阅读 · 0 评论 -
POJ2386 Lake Counting(DFS)
从任意的W开始,不停地把邻接的部分用'.'代替。1次DFS后与初始的这个W连接的所有W就都被替换成了'.',因此直到图中不再存在W为止,总共进行DFS的次数就是答案了。8个方向共对应了8种状态转移,每个格子作为DFS的参数至多被调用一次,所以复杂度为O(8×N×M)=O(N×M)。#include#include#include#includeusing namespace std;原创 2014-09-29 22:46:55 · 715 阅读 · 0 评论 -
POJ3669 Meteor Shower(BFS)
题意解析:在平面坐标系中,从原点出发,上下左右四个方向可走,一些点在T[i]秒后会有炸弹降落。在T秒包括T秒后这些点(包括周围四个方向的点)都不能到达,求如何在最短时间内到达安全地点。#include#include#include#include#include#include#include#include#define ll __int64#define INF 0x3原创 2014-10-06 20:35:05 · 703 阅读 · 0 评论 -
POJ3009 Curling 2.0(DFS)
迷宫问题求最短路。略有不同的是如果不碰到石头的话会沿着一个方向一直前进,出界就算输了。碰到石头,前方石头会消失,冰壶停在原地。把这个当作状态的转移。DFS可以求出其最小操作数。#include#include#include#include#include#include#include#include#define ll __int64#define INF 0x3f3f3原创 2014-10-06 16:49:08 · 746 阅读 · 0 评论 -
POJ3414 Pots(BFS)
倒水问题。题意:给两个杯子,容积分别为A和B。通过从水龙头接水(每次都接满),把杯里水全倒掉,把一个杯子里的水倒到另一个杯子里面三种操作使其中一个杯子里的水为C。解题思路:6入口的BFS。难点在如何保存路径。#include#include#include#include#includeusing namespace std;bool vis[110][110];str原创 2014-09-24 07:25:54 · 878 阅读 · 0 评论 -
POJ1426 Find The Multiple
模拟BFS解法+DFS解法原创 2014-08-30 00:04:03 · 484 阅读 · 0 评论 -
POJ3083 Children of the Candy Corn(BFS+DFS水题)
#include#include#include#include#includeusing namespace std;char map[50][50];bool vis[50][50];int ldir[4][2]={{0,1},{1,0},{0,-1},{-1,0}};int rdir[4][2]={{0,-1},{1,0},{0,1},{-1,0}};int n,m,a原创 2014-08-29 18:39:40 · 447 阅读 · 0 评论 -
POJ2488 A Knight's Journey(DFS)
#include#include#include#includeusing namespace std;int p,q;bool chess['Z'+1][27];int dis[8][2]= {{-1,-2},{1,-2},{-2,-1},{2,-1},{-2,1},{2,1},{-1,2},{1,2}};struct Node{ int x; char y;原创 2014-08-28 21:59:11 · 450 阅读 · 0 评论 -
BFS/DFS算法介绍与实现
广度优先搜索(Breadth-First-Search)和深度优先搜索(Deep-First-Search)是搜索策略中最经常用到的两种方法,特别常用于图的搜索.其中有很多的算法都用到了这两种思想,比如:Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。BFS的思想:从一个图的某一个顶点V0出发,首先访问和V0相邻的且未被访问过的顶点V1、V2、转载 2014-05-08 21:40:53 · 4295 阅读 · 0 评论 -
坐标离散化技巧
题目:w*h的格子上画了n条垂直或水平的宽度为1的直线。求出这些线将格子划分成了多少个区域。1<=w,h<=1000000. 1<=n<=500思路:首先,一般会想到直接进行dfs或bfs,但w,h过大,无法直接搜索。坐标离散化的思想就是把有用的坐标提取出来,再建一个坐标系,把这些坐标按照顺序放在这个坐标系中。本题只需存储直线的x,y坐标和直线前后的。所以大小6n*6n就够了。原创 2015-04-24 18:03:00 · 4725 阅读 · 13 评论