摘要: 还是给你石头n枚,每一枚石头有两个值a和b,每取一个石头,除了这块石头其余所有的石头的a就都减去这个石头的b,问你取了的石头的a的总和最大可以为多少? 先按B从大到小排序 然后DP: 取的话:dp[i][j]=dp[i-1][j-1]+a[i]-b[i]*(j-1) 注意是j-1 不取的话:dp[i 阅读全文
posted @ 2017-09-14 17:00 Aragaki 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 1.’&’符号,x&y,会将两个十进制数在二进制下进行与运算,然后返回其十进制下的值。例如3(11)&2(10)=2(10)。 2.’|’符号,x|y,会将两个十进制数在二进制下进行或运算,然后返回其十进制下的值。例如3(11)|2(10)=3(11)。 3.’^’符号,x^y,会将两个十进制数在二 阅读全文
posted @ 2017-09-14 16:10 Aragaki 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 使用动态规划方法解题,对于不少问题之所以具有较高的时间效率,关键在于它减少了“冗余”。所谓“冗余”,就是指不必要的计算或重复计算部分,算法的冗余程度是决定算法效率的关键。动态规划在将问题规模不断缩小的同时,记录已经求解过的子问题的解,充分利用求解结果,避免了反复求解同一子问题的现象,从而减少了冗余。 阅读全文
posted @ 2017-09-14 14:45 Aragaki 阅读(241) 评论(0) 推荐(0) 编辑
摘要: 最长路: 设置一个虚拟起点和虚拟终点,每个点与起点间一条负边,值为这个点书的价值的相反数(代表买书花钱),每个点与终点连一条正边,值为这个点的书的价格(代表卖书赚钱)。 然后按照图中给的边建无向边,权值为负(代表路费)。跑最长路,spfa改一下松弛条件就行 树形DP: 设1为根节点,假设一开始一个人 阅读全文
posted @ 2017-09-14 14:18 Aragaki 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 2、最大子矩阵和问题 (1)问题描述:给定一个m行n列的整数矩阵A,试求A的一个子矩阵,时期各元素之和为最大。 (2)问题分析: 用二维数组a[1:m][1:n]表示给定的m行n列的整数矩阵。子数组a[i1:i2][j1:j2]表示左上角和右下角行列坐标分别为(i1,j1)和(i2,j2)的子矩阵, 阅读全文
posted @ 2017-09-14 13:43 Aragaki 阅读(423) 评论(0) 推荐(0) 编辑
摘要: 最大字段和 O(N) 阅读全文
posted @ 2017-09-14 13:37 Aragaki 阅读(160) 评论(0) 推荐(0) 编辑