10 2015 档案

摘要:记忆化搜索,因为要求最小的,肯定是从小到大,依次添加,那么通过bfs,队列貌似是最好的选择。因为很可能那个数爆long long,所以采用字符串存储,并记录余数,通过模拟除法的方式来写。 剪枝:因为后面添加的数都是一样的,所以相同的余数后面的过程都是一样的,所以我们需要通过一个数组优化。 注意:string和char数组的相互转写和除数和被除数分别为0的情况。 #include #in... 阅读全文
posted @ 2015-10-28 17:17 acliang 阅读(579) 评论(0) 推荐(0)
摘要:给你每个物体两个参数,求最长的链要求第一个参数递增,第二个参数递减,要求输出任意最长路径。 首先第一反应根据第二个参数排个序,然后不就是最长上升子序列的问题吗? O(nlogn)的复杂度,当然这样可以写,写法也不难。 然后发现这个还是个DAG,也可以用拓扑排序来搞定,输出最长路径,复杂度O(n*n),更新的时候需要更新并记录每个点的前节点,最后倒序输出。 第二种就当练练手吧 先上第二种代... 阅读全文
posted @ 2015-10-21 14:35 acliang 阅读(197) 评论(0) 推荐(0)
摘要:这是一道记忆化搜索,也就是有记录的搜索。 注意点:一次走k步不能拐弯 int bfs(int x,int y) { int mm=0; if(ans[x][y]>=0) return ans[x][y]; for(int i=0;i #include #include #include #include #include #include #include... 阅读全文
posted @ 2015-10-21 14:25 acliang 阅读(206) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2015-10-18 09:49 acliang
摘要:写到现在,发现1025,1076之前写的都是同一种题型:关于DAG的最长路(最短路)。 首先要建立模型,根据关系,确定点和点之间的关系,构成一个DAG,前面几道题每个点之间距离默认为1,这一道题不同点之间距离不一样.然后进行拓扑(最基本,稳健方法)或者直接贪心乱搞,求出最长路或是最短路。 数据比较弱吧,都是0ms跑完的。 #include #include #include #incl... 阅读全文
posted @ 2015-10-16 22:09 acliang 阅读(221) 评论(0) 推荐(0)
摘要:这道和zoj1025一样,本质是贪心算法,首先要求任意最长的序列,我们只要保证最长就行,也就是在一幅图中找一个最长的链,首先我们需要根据y排序(输入为x,y),因为y大的肯定在y小的后面,然后就直接贪心,前面取不到后面就不可能取到那个数,证明了贪心的正确性。 #include #include #include #include #include #include using... 阅读全文
posted @ 2015-10-15 23:56 acliang 阅读(247) 评论(0) 推荐(0)
摘要:题目很简单,求一个连续的最大子矩阵的值. zoj上的数据非常弱。 首先爆搜是O(N^4),10^8的复杂度略高,那么我们可以处理一下其中一维的前缀和,降一阶,然后按照连续最大子序列来处理,因为可能为负数,所以基数不能取0. 上代码 #include #include #include #include #include #include using namespace std; in... 阅读全文
posted @ 2015-10-13 22:01 acliang 阅读(230) 评论(0) 推荐(0)
摘要:一道动态规划,两个串进行匹配,不同字母匹配的值不一样,也可以和空格匹配(空格不能与空格匹配),求最大的匹配值。 数据很弱,每个串都在100以内。 定义dp[i][j]为第一个串前i个数和第二个串前j个数已匹配的匹配值 有三种情况:1.第i个和第j个匹配 2.第i个和‘-’匹配 3.第j个和‘-’匹配 ... 阅读全文
posted @ 2015-10-12 15:36 acliang 阅读(524) 评论(0) 推荐(0)