摘要: 题目链接动态规划或者记忆化深搜。View Code 1 #include <stdio.h> 2 #define N 1005 3 char a[N],b[N],c[N][N]; 4 int n; 5 char dfs(int left,int right) 6 { 7 int k=right-left+1; 8 char f1=0,f2=0; 9 if(left==0&&right==n-1) return 1;10 if(c[left][right]!=-1) return c[left][right];11 if(left>0&&b[k] 阅读全文
posted @ 2012-04-19 22:46 BeatLJ 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 题目链接这题题目是A simple problem,但这题可谓A的不简单,不知道WA了多少次!题目大意:给定一个数列,求最长的连续子数列,使得最大值与最小值之差不超过给定值。由于数据量比较大,暴力法复杂度为O(N),肯定挂掉。我的做法如下:在扫描的过程中,当发现一段数的最大值与最小值之差大于给定值时,设最小值与最大值下标分别为i,j(无大小关系),下一次扫描时则从MIN(i,j)+1开始,这样可以避免很多不必要的计算。具体实现时要用到单调队列,纠结之处在于把下标移动和队列头指针移动搞混了!这题还有一点需要注意的地方就是最大值减最小值可能溢出。下面的代码提交时需改数据类型。View Code . 阅读全文
posted @ 2012-04-19 20:13 BeatLJ 阅读(421) 评论(0) 推荐(0) 编辑