摘要: 寻找串与其逆串的最长公共子序列。 因为此子序列必是回文串,剩下的字符就是需要插入的。 1 #include 2 #include 3 #include 4 #include 5 6 #define Max(a,b) a > b ? a : b 7 8 using namespace std; 9 10 char s1[5010],s2[5010];11 12 short int CountLen[5010][5010];13 14 int main()15 {16 int len;17 while(~scanf("%d",&len))18 {19 ... 阅读全文
posted @ 2013-08-27 15:48 好小孩 阅读(159) 评论(0) 推荐(0)
摘要: 简单的DFS。一开始把DFS里面的一个变量弄成 全局变量了,调试了半个小时才发现...... 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 int MinStep; 10 11 int map[25][25]; 12 13 int h,w; 14 15 struct Point 16 { 17 int h,w; 18 }sp,ep,np; 19 20 int jh[] = { 0,-1, 1, 0}; 21 int j... 阅读全文
posted @ 2013-08-23 16:05 好小孩 阅读(139) 评论(0) 推荐(0)
摘要: 枚举了所有状态 1800+ms过了...... 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 int c[25][25];10 11 int MaxSum;12 13 bool MarkSubSet[25];14 15 void dfs(int cur,int ans,int Sum,int n)16 {17 if(cur > n)18 {19 int i,j,sum;20 for(i = 1,sum =... 阅读全文
posted @ 2013-08-23 10:09 好小孩 阅读(154) 评论(0) 推荐(0)
摘要: 给出一个Max 和一串数字。将这一串数字分割成若干个数,其和为sum。求最接近但不超过Max的sum。。。 将这个sum及这若干个数输出来。 DFS + 打印路径 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 char SNum[10]; 10 11 struct N 12 { 13 int data,ans,pre; 14 N *l,*r; 15 }*root; 16 17 N *creat() 18 { 1... 阅读全文
posted @ 2013-08-22 19:44 好小孩 阅读(135) 评论(0) 推荐(0)
摘要: 在一个区域内,有许多电台,如果覆盖有交集的话可能会互相干扰,唯一的解决方案就是使用不同的频道。 但是频道这种资源非常珍贵,所以应使用尽量少的频道。 感觉是模拟题,不知道为啥放在了搜索里面。Discuss里面有大牛说用四色定理,作为一名离散只考了70+的选手也没有去看......也可能是后台比较水,我的这种方法竟然也是0ms。 解题思路都写在了注释里。 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 struct N10 {11 char dat... 阅读全文
posted @ 2013-08-22 10:52 好小孩 阅读(192) 评论(0) 推荐(0)
摘要: 数独问题。给定其中的几个数,找出其他符合规则的数。保证所给数据合法。典型的DFS。 又是1A真爽。 首先用三个数组标记每列每行每个九宫格出现过的数字。然后DFS寻找可能的状态。跑了400+ms。 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 int sudoku[10][10]; 10 11 bool MarkDfs,hr[10][10],hc[10][10],hs[10][10]; 12 13 int JudgeS(int i,i... 阅读全文
posted @ 2013-08-22 09:27 好小孩 阅读(145) 评论(0) 推荐(0)
摘要: 题意:有两个杯子 容量分别为 A,B;每次可以将其中一杯杯子倒满或倒空,或者将一个杯子中的水倒入另外一个杯子(必须将其中一个杯子倒空或倒满)。 这样每种状态就有可能衍生出六种新的状态。 典型的BFS。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 8 using namespace std; 9 10 int n,m; 11 12 bool sta[110][110]; 13 14 struct Q 15 { 16 int n,m,step,mar... 阅读全文
posted @ 2013-08-21 16:40 好小孩 阅读(167) 评论(0) 推荐(0)
摘要: 赤裸裸的模拟题。。 给出字符串 s1,s2,s12;判断s1,s2能够通过题目中所给的规则到达 s12。每次只会产生一种新的状态,还BFS个毛线-- s1的首位新生成的字符串的首,s2的尾为新生成字符串的尾。中间的字符依次交叉排列。 再将新生成的字符串的前一半给s1,后一半给s2。 重复上述两步 直到到达 s12 或者 新生成的字符串已经出现过。 前者输出步数,后者输出 -1。 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 struct N1... 阅读全文
posted @ 2013-08-21 16:35 好小孩 阅读(167) 评论(0) 推荐(0)
摘要: 简单的RMQ 约等于模板题.....第一次敲 给自己留个参考 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 #define Max(a,b) a > b ? a : b 8 9 using namespace std;10 11 int Num[100010];12 13 int MaxNum[100010][15];14 15 int value[100010],Count[100010],Left[100010],Right[100010];16 17 int divide(int Num,int... 阅读全文
posted @ 2013-08-20 21:21 好小孩 阅读(123) 评论(0) 推荐(0)
摘要: 简单的BFS + 素数筛。。。。。手残把素数筛敲错了 调试了大半年......不过终于迎来了久违的 1A 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 8 using namespace std; 9 10 bool HashPrime[10010]; 11 bool Mark[10010]; 12 13 struct N 14 { 15 int p,s; 16 }t,nt; 17 18 void bfs(int n,int m) 19 { 20 ... 阅读全文
posted @ 2013-08-20 16:06 好小孩 阅读(196) 评论(0) 推荐(0)