上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 23 下一页
摘要: 题目链接动态规划题。题目大意:给定一个二维数组,数组中每个数代表一个高度,每次只能向相邻且高度下降的方向移动,求最长的移动距离。View Code 1 #include <stdio.h> 2 #include <memory.h> 3 #define MAX(a,b) ((a)>(b)?(a):(b)) 4 #define N 100 5 int dx[4]={0,0,1,-1}; 6 int dy[4]={1,-1,0,0}; 7 int h[N][N],n,m; 8 int c[N][N]; 9 int dp(int i,int j)10 {11 int n 阅读全文
posted @ 2012-04-25 13:52 BeatLJ 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 题目链接优先队列的题。进行队列弹出操作时要注意判空,如果有多case,记得清空队列。View Code 1 #include <stdio.h> 2 #include <queue> 3 #define N 30000 4 using namespace std; 5 6 priority_queue<int,vector<int>,greater<int> >qmin; 7 priority_queue<int,vector<int>,less<int> >qmax; 8 9 int a[N];1 阅读全文
posted @ 2012-04-25 09:42 BeatLJ 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给定一个n*m的只含0和1的矩阵,从矩阵的最后一行中的某个1出发,每步只能走到相邻的且是1的格子中,求能达到的最大高度(最小行数)。这题直接DFS即可,复杂度为O(N*M)。View Code 1 #include <stdio.h> 2 #define MAX(a,b) ((a)>(b)?(a):(b)) 3 #define N 100 4 int dx[4]={0,0,1,-1}; 5 int dy[4]={1,-1,0,0}; 6 char g[N][N]; 7 int n,m,ans; 8 void dfs(int i,int j) 9 {10 int d, 阅读全文
posted @ 2012-04-24 20:17 BeatLJ 阅读(287) 评论(2) 推荐(0) 编辑
摘要: 题目链接贪心题,也是训练优先队列的好题。题目大意:给一块长木板,现要将其锯成n段,共需锯n-1次,每次锯的代价为所锯木板的长度,求最小总代价。其实也可以看成是把n段木板拼成一块,每次拼的代价为所拼木板的长度和。这就跟哈夫曼编码一样,每次选取两个最小的来拼。具体实现时用优先队列。View Code 1 #include <stdio.h> 2 #include <queue> 3 using namespace std; 4 #define INF 0x7fffffff 5 priority_queue<int,vector<int>,greater&l 阅读全文
posted @ 2012-04-24 15:05 BeatLJ 阅读(742) 评论(0) 推荐(0) 编辑
摘要: 题目链接有限制的单源最短路。题目大意:给定一个图,图中的每条边有一个长度和一个费用,给出最大费用,求在不超过最大费用的前提下的最短路(从s到e)。我的解法是BFS+优先队列,我们可以把<d,t,i>看成状态,i为结点编号,d为结点到源点的距离,t为目前剩余的费用,每次BFS时都选取d最小的状态进行扩展,直到到达目标结点。一开始,我还担心内存会爆掉,但是一下也没想到其他方法,就照这个想法写了,结果居然AC了。由于要用到优先队列,所以只好临时学了一点STL,第一次提交是忘改用c++提交,CE了一次。View Code 1 #include <stdio.h> 2 #incl 阅读全文
posted @ 2012-04-24 13:54 BeatLJ 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 题目链接递推题,A[i]=A[i-1]+2*A[i-2]。需要注意的是要用long long型。View Code 1 #include <stdio.h> 2 #define N 64 3 long long a[N]; 4 int main() 5 { 6 int i; 7 a[0]=a[1]=1; 8 for(i=2;i<N;i++) a[i]=a[i-1]+(a[i-2]<<1); 9 while(~scanf("%d",&i)) printf("%lld\n",a[i-1]);10 return 0;11 阅读全文
posted @ 2012-04-23 17:07 BeatLJ 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 题目链接单源最短路的变形,需要很好的理解dijkstra最短路算法的思想。View Code 1 #include <stdio.h> 2 #include <memory.h> 3 #define MIN(a,b) ((a)<(b)?(a):(b)) 4 #define MAX(a,b) ((a)>(b)?(a):(b)) 5 #define N 1000 6 int g[N][N],w[N],n,m; 7 char vis[N]; 8 void dijkstra() 9 {10 int i,v,k,max;11 memset(vis,0,sizeof(v 阅读全文
posted @ 2012-04-23 16:32 BeatLJ 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 题目链接最短路,直接dijkstra水之,注意重边。View Code 1 #include <stdio.h> 2 #include <string.h> 3 #define MIN(a,b) ((a)<(b)?(a):(b)) 4 #define N 1000 5 #define INF 100000 6 int g[N][N],dist[N],n,m; 7 char vis[N]; 8 void dijkstra() 9 {10 int i,v,k,min;11 memset(vis,0,sizeof(vis));12 for(i=0;i<n;i++) 阅读全文
posted @ 2012-04-22 17:21 BeatLJ 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 题目链接最短路的题,这题时间限制较严,第一次用dijkstra果断挂掉,后来改用SPFA写,由于我用的数据结构是动态链表,所以还是TLE,改为静态链表后就AC了。在这个过程中还贡献了一次WA,因为最后结果用32位会溢出,题中说的总价格不会超过1000000000是单个最短路不会超,而最后的结果是n-1个结点的最短路之和。View Code 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <memory.h> 4 #define INF 1000000001 5 #define N 1000001 6 阅读全文
posted @ 2012-04-22 16:13 BeatLJ 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 题目链接最短路的题,直接用dijkstra即可。此题比较有技巧性的地方在数据读入的处理,题中给出的是邻接矩阵的下三角,其中不直接邻接的边用字符x表示,其他地方用整数表示边长。具体做法见代码(参考了discuss)。View Code 1 #include <stdio.h> 2 #include <string.h> 3 #define MIN(a,b) ((a)<(b)?(a):(b)) 4 #define MAX(a,b) ((a)>(b)?(a):(b)) 5 #define N 101 6 #define INF 0x7ffffff 7 int g[ 阅读全文
posted @ 2012-04-22 14:09 BeatLJ 阅读(988) 评论(0) 推荐(0) 编辑
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 23 下一页