
搜索专题
文章平均质量分 57
dpy95
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
zoj 1649(bfs+二次入队列)
题意:最短时间内被伙伴找到,因为有多个伙伴,所以可以公主找伙伴,守卫需要2s,遇到守卫二次入队列就行了.#include #include #define MAX 300 #define Max(a,b) a>b?a:b #define Min(a,b) a<b?a:b char map[MAX][MAX]; int n,m; int visit[MAX][MAX]; int to[4][2原创 2015-11-03 12:02:35 · 397 阅读 · 0 评论 -
hdu 5256 最长不递减子序列(二分查找)
分析:因为要改变最少的数,使得数组a,成为严格递增,也就是使得a[i+1]>=a[i]+1,即a[i+1]-(i+1)>=a[i]-i。所以令a[i]=a[i]-1,原题就变成了改变最少的数,使得新数组a[i]-=i,不递减,即a[i+1]>=a[i],那么我们只需找出最多已满足条件的元素(即最长不递减子序列),再用总的个数减一下就能得出答案。如何求最长不递减子序列呢?我们用数组b[i]来表示:不原创 2015-11-01 23:58:48 · 659 阅读 · 0 评论 -
poj 3009(dfs)
题意: 给定一个N*M的矩阵(注意N和M的关系),其中0,1,2,3分别代表了不同的意义,现在一个小球从2出发,要到3那个点去,问最少的滚动次数是多少?小球的滚动遵循以下规则,初始位置视为静止状态,只要在静止状态,那么小球可能选择上下左右四个方向相邻没有1(且没有超出整个棋盘的边界)的位置进行移动,一旦选择一个方向,那么就暂时不能够更改方向,直到有一个1挡住了小球。当小球碰撞到了1,那么1变成0原创 2015-11-02 00:15:07 · 346 阅读 · 0 评论 -
hdu 1016(dfs+dp)
(1)这道题非常类似于N皇后问题,使用的是深度优先搜索方法 (2)虽然说打印要求是按照顺时针和逆时针顺序打印,其实按照从小到大的搜索顺序搜索后的结果就是符合输出顺序的。 (3)由于是20以内的数字,所以判断质数的方法是直接打表后一个简单的循环判断一下是否为质数 (4)程序中mark数组是为了标记某个数字是否使用过了,num数组存储的是数字链表的存储顺序。 #include #include原创 2015-11-02 00:28:17 · 354 阅读 · 0 评论 -
hdu 1078(dfs+dp)
题意:可以向任何方向最多走k步,求最大价值。 代码如下: #include #include #define MAX 110 #define Min(a,b) a<b?a:b #define Max(a,b) a>b?a:b int n,k; int map[MAX][MAX]; int dp[MAX][MAX]; int to[4][2] = {1,0,-1,0,0,1,0,-1}; in原创 2015-11-02 00:37:20 · 376 阅读 · 0 评论 -
hdu 1010(dfs+剪枝)
思路:规定时刻到达终点,dfs即可,注意走过消失即可#include #include #define MAX 10 int n,m,k; char map[MAX][MAX]; int visit[MAX][MAX]; int dfs(int x,int y,int num){ visit[x][y]=1; if(xn||ym||map[x][y]=='X'){return 0;} i原创 2015-11-02 00:08:49 · 300 阅读 · 0 评论 -
hdu 2446(二分查找)
题解:第n个球在第几堆第几行第几个 思路:a[i]保存第i堆个数,b[i]表示前i堆个数,再二分查找对应位置.#include #include #define MAX 2000000 long long a[MAX]; long long b[MAX]; long long n,x; void Init(){ int i; a[1]=1; b[1]=1; for(i=2;i<MAX原创 2015-11-02 00:25:16 · 543 阅读 · 0 评论 -
poj 1579(记忆化搜索)
思路:用数组w[a][b][c]保存,减少重复搜索#include #include #define MAX 25 int x[MAX][MAX][MAX]; int w(int a,int b,int c){ if(a<=0||b<=0||c<=0)return 1; if(a>20||b>20||c>20)return w(20,20,20); if(x[a][b][c]!=0)原创 2015-11-02 00:41:25 · 364 阅读 · 0 评论