12 2012 档案

摘要:当数组长度p,q范围高达10000所以O(pq)的算法会超时。注意到序列中所有元素各不相同,因此可以把A串重新编号为1~p,例如:A={1754832},B={14356287} 把A重新编号后:A={1234567},B={14630752}其中0表示在A中没有出现过,因为没有出现过所以就不用考虑了,肯定不在最长公共子序列中。对于新的A,B序列只需求B的最长递增子序列即可。因为n的范围较大,所以需要用到O(nlogn)的方法求最长递增子序列(二分)。 1 #include<stdio.h> 2 #include<string.h> 3 4 const int MAX 阅读全文
posted @ 2012-12-10 22:28 尔滨之夏 阅读(279) 评论(0) 推荐(0)
摘要:与修路的那个题一样,只不过是需要将青蛙每次跳的重新存到数组里面。 青蛙过河Time Limit: 1000 MSMemory Limit: 65536 KTotal Submit: 14(10 users)Total Accepted: 11(10 users)Rating:Special Judge:NoDescription青蛙王国一年一度的游戏又开始了,这个游戏要求青蛙必须跳过河。河的宽度是L。河里有n块石头,这n块石头从河的一边笔直的连到另一边。青蛙只能踩着石头过河,如果它们掉... 阅读全文
posted @ 2012-12-07 18:58 尔滨之夏 阅读(460) 评论(0) 推荐(0)
摘要:动态规划的关键就是找到状态转移方程。本题的当前状态有三种情况,map[i-1][j], map[i][j-1], 以及行上能被改行整除的,判断一下就行。写的有点复杂了,还可以再优化的。 圈套Time Limit: 1000 MSMemory Limit: 32768 KTotal Submit: 5(4 users)Total Accepted: 5(4 users)Rating:Special Judge:NoDescriptionWd在回答了使者的问题之后,使者告诉他... 阅读全文
posted @ 2012-12-07 12:11 尔滨之夏 阅读(316) 评论(0) 推荐(0)
摘要:刚开始看这道题时感觉有很多的嵌套,(试了其他的方法不行后来才决定用递归)那就是递归了。本题关键是找到递归的关键点。由于当遇到“()”时"()"里面很可能还有“()”说明“()”这个括号有文章。对就是在“(”这个地方递归。以前递归只接触过数学方面的和深搜一类的,这种类型的递归还没想过,看来学一样东西还是要灵活的用,而灵活的用只能是多做题了。 1 #include<stdio.h> 2 #include<string.h> 3 4 void Change(int left, int right, char p[])//递归函数 5 { 6 for (in 阅读全文
posted @ 2012-12-06 12:24 尔滨之夏 阅读(278) 评论(0) 推荐(0)