https://codility.com/demo/take-sample-test/delta2011/

0-1背包问题的应用。我自己一开始没想出来。“首先对数组做处理,负数转换成对应正数,零去掉,计数排序统计有多少个不同元素及其对应个数,并累加所有数的和sum,不妨记b=sum/2,不同元素个数为m,则目标转换为在m个不同元素中挑出若干个元素(每个元素可以重复多次,但少于它们的出现次数),使得它们的和不大于b并尽量接近。到了这里,应该有点熟悉的感觉了吧。对了,其实这就是0-1背包问题!” 参考http://phiphy618.blogspot.jp/2013/05/codility-delta-2011-minabssum.html

第一次的代码并未完全通过,75分,大数据全挂。原因是这里一个元素可以出现多次,是多重背包问题。

// you can also use imports, for example:
// import java.math.*;
class Solution {public int solution(int[] A) {// write your code here...if (A.length == 0) return 0;int sum = 0;int max = 0;for (int i = 0; i < A.length; i++) {if (A[i] < 0) A[i] = -A[i];sum += A[i];}int target = sum / 2;int dp[][] = new int[A.length][target];for (int i = 0; i < A.length; i++) {for (int j = 0; j < target; j++) {// j+1 is the weight limitif (i == 0){if (A[i] <= (j+1)) {dp[i][j] = A[i];}else{dp[i][j] = 0;}}else // i != 0{int w1 = dp[i-1][j];int w2 = 0;if (j-A[i] >=0 ) {w2 = dp[i][j-A[i]] + A[i];}dp[i][j] = w1 > w2 ? w1 : w2;}}}max = dp[A.length - 1][target - 1];return (sum - max * 2);}
}

第二次参考了cp博士的文章,处理了多重背包的优化,并用了滚动数组:http://blog.csdn.net/caopengcs/article/details/10028269

// you can also use includes, for example:
// #include <algorithm>
int solution(const vector<int> &A) {// write your code in C++98int len = A.size();int sum = 0;int M = 0;for (int i = 0; i < len; i++) {int x = 0;x = A[i] > 0 ? A[i] : -A[i];sum += x;if (x > M)M = x;}vector<int> count;count.resize(M+1);for (int i = 0; i < len; i++) {int x = 0;x = A[i] > 0 ? A[i] : - A[i];count[x]++;}int target = sum / 2;int largest = 0;vector<int> dp(target+1, -1);for (int i = 0; i <= M; i++) {if (count[i] > 0) {for (int j = 0; j <= target; j++) {if (j == 0) dp[j] = count[i];if (dp[j] >= 0) {dp[j] = count[i];if (j > largest)largest = j;}else if (j - i >= 0 && dp[j - i] > 0) {dp[j] = dp[j - i] - 1;if (j > largest)largest = j;}else {dp[j] = -1;}}}}return abs(sum - 2 * largest);
}

  

  

转载于:https://www.cnblogs.com/lautsie/p/3228644.html

[codility]Min-abs-sum相关推荐

  1. [云炬python学习笔记]Numpy中内置函数min(),max(),sum()与Python中内置函数min(),max(),sum()性能对比分析

    众所周知,Python有许多内置函数(例如min(),max(),sum()),Numpy也有自己的内置函数(np.min(),np.max(),np.sum()).由于Numpy的函数是在编译码中执 ...

  2. 详解Python的max、min和sum函数用法

    max().min().sum()这三个内置函数分别用于计算列表.元组或其他可迭代对象中所有元素最大值.最小值以及所有元素之和,sum()只支持数值型元素的序列或可迭代对象,max()和min()则要 ...

  3. MySQL数据库聚合函数(count、max、min、sum、avg)

    1. 聚合函数的介绍 聚合函数又叫组函数,通常是对表中的数据进行统计和计算,一般结合分组(group by)来使用,用于统计和计算分组数据. 常用的聚合函数: count(col): 表示求指定列的总 ...

  4. AtCoder AGC039F Min Product Sum (容斥原理、组合计数、DP)

    题目链接 https://atcoder.jp/contests/agc039/tasks/agc039_f 题解 又是很简单的F题我不会... 考虑先给每行每列钦定一个最小值\(a_i,b_j\), ...

  5. python中常用的内置方法(min,max,sum,梅举,zip)

  6. 寒假每日一题(提高组)【Week 2 完结】

    目录 1230. K倍区间[思维 前缀和] 1613. 数独简单版[dfs] 122. 糖果传递[贪心] 125. 耍杂技的牛[贪心] 499. 聪明的质监员[二分+前缀和] 503. 借教室[二分+ ...

  7. 【w3cschool】python3语法复习

    1.语法 程序板子: 中文编码一般需要在最前面加上声明:#-*- coding:UTF-8 -*- 或 #coding=UTF-8. 输出:print('Hello world!'), 单行注释以#开 ...

  8. 牛客网语法篇练习函数类型(全)

    1.小乐乐学会了自定义函数,BoBo老师给他出了个问题,根据以下公式计算m的值.m = max3(a+b,b,c) / max3(a,b+c,c)+max3(a,b,b+c),其中 max3函数为计算 ...

  9. HDU - 2242 考研路茫茫――空调教室(树形DP+强连通分量)

    题目大意:众所周知,HDU的考研教室是没有空调的,于是就苦了不少不去图书馆的考研仔们.Lele也是其中一个.而某教室旁边又摆着两个未装上的空调,更是引起人们无限YY. 一个炎热的下午,Lele照例在教 ...

最新文章

  1. 爱上MVC3系列~开发一个站点地图(俗称面包屑)
  2. 360金融沈赟:只有适配实践的技术才能实现价值掘金
  3. php rdp,小猿圈linux下使用FreeRDP 连接 Windows 远程桌面
  4. 几个比较好用的Windows API在C#中的用法。
  5. Linux生产环境CPU占用过高排查步骤
  6. javascript --- 编程风格
  7. linux卸载minicoda2,MiniConda2下载 MiniConda python 2.7 v4.3.30.2 Linux 64位 官方免费版(附安装步骤) 下载-脚本之家...
  8. python saltstack web_saltstack web uiweb平台界面
  9. 解决 QtCreator 3.5(4.0)无法输入中文的问题
  10. python中利用字典加密字符串_python 数字字典加密非汉字
  11. 手机价格要上涨?小米和Realme确认芯片短缺:高通交付延长至30周以上
  12. eclipse下的tomcat内存设置大小(转)
  13. secureCRT连接Linux虚拟机
  14. Duang~ Golang 学习初探
  15. TI官网注册账号一直卡人机识别问题
  16. ❤️Java中经纬度换算❤️
  17. android和ios测试环境搭建,iOS自动化测试环境搭建
  18. 目标竞赛省队,寒假如何备考生物竞赛联赛?
  19. 大雁塔,青龙寺,樱花舞,落尘香
  20. 老男孩python培训靠谱吗

热门文章

  1. [react] react父子组件如何通信?
  2. [react] 装饰器(Decorator)在React中有什么应用?
  3. [html] iframe可以使用父页面中的资源吗(如:css、js等)?
  4. [html] 如何实现标题栏闪烁、滚动的效果
  5. [vue] vue首页白屏是什么问题引起的?如何解决呢?
  6. [css] css常用的布局方式有哪些?
  7. 前端学习(2694):重读vue电商网站15之阻止页签tabs切换
  8. 前端学习(2531):Vuex中getter
  9. 工作32:get之前打印
  10. 前端学习(1318):同步api和异步api