上一页 1 2 3 4 5 6 7 ··· 28 下一页

2012年8月22日

或许你从小就一直在思考的两个算术问题

摘要: 你是否很小就注意到了下面这两个有趣的算术现象?这两个简单的算术谜题是否一直都困扰着你?今天,大家终于有机会解开谜团了。问题一: 2 加 2 等于 4 , 2 乘 2 也等于 4 。还有其它的整数对,它们的和与积也相等吗?我们要求的就是 mn = m+n 的整数解。方程可以变为mn - m - n + 1 = 1也就是(m - 1)(n - 1) = 1由于 m 、 n 都是整数,因此 m - 1 和 n - 1 也都是整数。两个整数之积为 1 ,只有两种情况——这两个数都是 1,或者这两个数都是 -1 。前者对应了 m = 2, n = 2 ,后者解出来则是 m = 0, n = 0 。如果把 阅读全文

posted @ 2012-08-22 21:03 mycapple 阅读(416) 评论(0) 推荐(1) 编辑

最长上升子序列LIS算法实现

摘要: 介绍一:LIS(Longest Increasing Subsequence)最长上升(不下降)子序列,有两种算法复杂度为O(n*logn)和O(n^2)。在上述算法中,若使用朴素的顺序查找在D1..Dlen查找,由于共有O(n)个元素需要计算,每次计算时的复杂度是O(n),则整个算法的时间复杂度为O(n^2),与原来算法相比没有任何进步。但是由于D的特点(2),在D中查找时,可以使用二分查找高效地完成,则整个算法时间复杂度下降为O(nlogn),有了非常显著的提高。需要注意的是,D在算法结束后记录的并不是一个符合题意的最长上升子序列!算法还可以扩展到整个最长子序列系列问题。 有两种算法复杂度 阅读全文

posted @ 2012-08-22 21:00 mycapple 阅读(7102) 评论(0) 推荐(0) 编辑

NYOJ 17 单调递增最长子序列(经典dp)

摘要: 地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=17题目分析:同NYOJ 79拦截导弹先解释下什么叫子序列。若a序列删去其中若干个元素后与b序列完全相同,则称b是a的子序列。我们假定存在一个单调序列{An}(以递增序列为例),现在在其后面添加一个元素a(n+1),有两种情况:1.a(n+1)>a(n) 。此时,a(n+1)可以添加到An序列的尾部,形成一个新的单调序列,并且此序列长度大于之前An的长度;2.a(n+1)<=a(n)。此时,a(n+1)当然不可以添加到An序列的尾部。经过分析,我们可以得出这样的结论:一个单调序列 阅读全文

posted @ 2012-08-22 20:54 mycapple 阅读(5779) 评论(0) 推荐(2) 编辑

HDU 2159 FATE (动态规划dp之二维完全背包问题)

摘要: 地址:http://acm.hdu.edu.cn/showproblem.php?pid=2159思路:动态规划dp之二维完全背包问题状态方程是关键。。。。。/*dp[j][l] = Max(dp[j][l],dp[j-1][l-b[i]]+a[i])它表示 用掉了l点的忍耐度,并且杀了j个怪后,所获得的最大经验数。*/ 题目分析:二维费用的背包问题是指:对于每件物品,具有两种不同的费用;选择这件物品必须同时付出这两种代价;对于每种代价都有 一个可付出的最大值(背包容量)。问怎样选择物品可以得到最大的价值。设这两种代价分别为代价1和代价2,第i件物品所需的两种代价分别为a[i]和 b[i]。两 阅读全文

posted @ 2012-08-22 18:33 mycapple 阅读(2409) 评论(0) 推荐(0) 编辑

HDU 1114 Piggy-Bank (dp问题之完全背包问题)

摘要: 地址:http://acm.hdu.edu.cn/showproblem.php?pid=1114思路:动态规划之完全背包问题题目分析:给出了钱罐开始的重量e和装满后的重量f,然后给你n种硬币,每个价值为p,重量为w,求出最小的价值使钱罐的重量恰好为w如果不存在 输出This is impossible.状态转移方程:f[v]=min{f[v],f[v-w[i]]+p[i]}注意:一道简单的完全背包题(于0-1背包就是第二个for循环倒过来就行了),要求做的仅仅是求最小值,而不是最大值,那么只要对初始化进行一些改变就可以了。把f[0]赋值为0,其他赋值为无穷大。这个题目的意思是有一只存钱的小猪 阅读全文

posted @ 2012-08-22 16:15 mycapple 阅读(1001) 评论(0) 推荐(0) 编辑

动态规划小结

摘要: 一般步骤确定决策序列(Decision sequences)明确问题状态(Problem states)验证优化原理(Principle of optimal)构造、求解优化值递归方程(Recurrence equation)回溯(traceback)构造优化解(Optimal solution)算法复杂性动态规划递归方程往往不能直接用递归实现, 会引发大量重复计算,算法的计算量将非常可观。最好是用迭代法求解动态规划法列出的递归方程迭代实现需要存贮所有子问题的优化解的值,因此动态规划法设计的算法往往需要较大的存储空间算法的复杂性来自子问题的数目,通常子问题的数目往往很大 阅读全文

posted @ 2012-08-22 14:59 mycapple 阅读(308) 评论(0) 推荐(0) 编辑

NYOJ 18 The Triangle (dp问题)

摘要: 地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=18思路:dp问题代码如下: 1 #include<iostream> 2 using namespace std; 3 int a[105][105]; 4 int main() 5 { 6 int n,m,i,j; 7 while(cin>>n) 8 { 9 for(i=0;i<n;i++)10 for(j=0;j<=i;j++)11 cin>>a[i][j];12 for(i=n-2;i>=0;i-... 阅读全文

posted @ 2012-08-22 12:21 mycapple 阅读(217) 评论(0) 推荐(0) 编辑

NYOJ 484 The Famous Clock

摘要: 地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=484代码如下: 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int main() 6 { 7 int n=0,k; 8 string a; 9 while(cin>>a)10 {11 printf("Case %d: ",++n);12 if(a=="I")cout<< 阅读全文

posted @ 2012-08-22 11:51 mycapple 阅读(218) 评论(0) 推荐(0) 编辑

NYOJ 171 聪明的kk (dp问题)

摘要: 地址:http://acm.nyist.net/JudgeOnline/problem.php?pid=171思路:dp问题,不过要注意开始的时候下表要考虑好,我是让d[][] 的四周空出一行,这样就不会出错了代码如下: 1 #include<stdio.h> 2 #include<stdlib.h> 3 #include<string.h> 4 int i,j,N,M; 5 int map[25][25],d[25][25]; 6 int dp(int N,int M) 7 { 8 memset(d,0,sizeof(d)); 9 for(i=0;i< 阅读全文

posted @ 2012-08-22 11:37 mycapple 阅读(521) 评论(0) 推荐(0) 编辑

HDU 2066 一个人的旅行 (floyd算法)

摘要: 地址:http://acm.hdu.edu.cn/showproblem.php?pid=2066思路:求有多个起点和多个终点,找出从其中任意一个起点到任意一个终点的距离最短,用floyd算法,但是要注意很多细节的优化,要不会超时借鉴代码如下: 1 #include<cstdio> 2 #include<cstring> 3 #include<cstdlib> 4 #define inf 0x3fffffff 5 int map[1001][1001],max; 6 bool start[1001],end[1001]; 7 int floyd() 8 { 阅读全文

posted @ 2012-08-22 10:30 mycapple 阅读(1858) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 ··· 28 下一页

导航