上一页 1 2 3 4 5 6 7 ··· 9 下一页
摘要: 题意:输入n,然后输入n行n列的矩阵,找出这个矩阵中的子矩阵最大值。 阅读全文
posted @ 2016-04-28 17:16 梦中。。 阅读(76) 评论(0) 推荐(0) 编辑
摘要: 题意:输入n,k 表示方格的长宽为n,每次能够走的最大格子为k,然后输入n行n列个数,起点在(0,0),每次可以上下左右移动,每次移动的格子要比当前格子数目大,而且移动的单位不能超过k,求最后能够得到的最大值。 分析:从起点开始搜,搜索那些点可以走,然后找最大值(记忆化搜索) 阅读全文
posted @ 2016-04-26 20:10 梦中。。 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 题意:从起点走到地面的最短时间 分析:每一层只能由上面的掉下来,可能是上面的任何一层,那么反过来,上面的每一层只能由左端或者右端往下掉,掉到下面的某一层的左右端点包含上面这一层的左端或者右端,那么将这n个台阶按照从下往上排序。 dp[i][0]表示从下面到达第i层的左端花费最短的时间,dp[i][1 阅读全文
posted @ 2016-04-25 20:48 梦中。。 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 题意:输入n,k,然后输入n个数,这n个数表示距离起点的距离,现在要选取k个点,使得距离和最小。 分析:我们求的是从n个点中选取k个点使得距离最小,即dp[n][k],那么dp[n][k]为dp[n-1][k-1]+sum[n][n],dp[n-2][k-1]+sum[n-1][n],dp[n-3] 阅读全文
posted @ 2016-04-20 19:55 梦中。。 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 题意:输入n,然后输入n个数,然后从这n个数中,每次只能从头或者从尾选一个数,第x次选,则让这个数乘以x,求能够得到的最大和。 分析:dp[i][j]表示选了i次,从左侧选了j个数,得到的最大值,那么得到递推式dp[i][j]=max(dp[i-1][j-1]+a[j]*i, dp[i-1][j]+ 阅读全文
posted @ 2016-04-19 14:05 梦中。。 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 比赛时没写出来,结束后听ccx学长讲,才知道有多线程DP,感觉自己菜成dog,之前就没听过,还是太弱。 dp: 记忆化搜索 阅读全文
posted @ 2016-04-18 13:26 梦中。。 阅读(433) 评论(0) 推荐(1) 编辑
摘要: #include #include #include #include #include #include using namespace std; #define maxn 120 class DividedByZeroException {}; class BigInteger { private: vector digits; bool sign; ... 阅读全文
posted @ 2016-04-16 19:50 梦中。。 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 时隔一年再次尝试写了这道题,终于a了,了解了错了十次的痛。 啥都不说了上代码!!! 阅读全文
posted @ 2016-04-14 20:10 梦中。。 阅读(160) 评论(0) 推荐(0) 编辑
摘要: #include #include #include #include #include using namespace std; const int maxn = 222; const int oo = 1e9; int d[222]; int p[222]; int dp[30][1000];//dp[i][j]选出i个人,d,p差为j的 d, p和最大。 int ... 阅读全文
posted @ 2016-04-11 14:02 梦中。。 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 题意:输入若干对数,直到文件结束,每对数字有 w s, 找出最长的一个序列满足W[m[1]] < W[m[2]] < ... < W[m[n]] ,S[m[1]] > S[m[2]] > ... > S[m[n]] ,输出长度,且任意输出一条即可。 分析, 先按照w进行排序,然后找最长下降子序列,保 阅读全文
posted @ 2016-04-07 10:32 梦中。。 阅读(124) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 ··· 9 下一页