大致翻译:nn个强盗去抢劫银行得到mm个金币,抢劫前他们先确定好了分

配方案,每个人按比例Xi/YXi/Y分配,X1+X2+..Xn=YX_1+X_2+..X_n = Y,mm可能不能

被YY整除,所以实际分配可能会有不公平,假设第ii个强盗分配到KiKi

个金币,定义不公平度为|Xi/Y−Ki/m||X_i/Y-K_i/m|,给出了n,m,Y,Xin,m,Y,X_i,求出

KiK_i,使得不公平度的总和最小

题解:

首先,我们保证Σ|Xi/Y−Ki/m|Σ|X_i/Y-K_i/m|最小,即Σ|Xi∗m−Ki∗Y|Σ|X_i*m-K_i*Y|最小。

那么,dpdp肯定是不行的。(可能是我太弱了…)

我们考虑先令Ki=m∗Xi/YK_i=m*X_i/Y,再考虑另外的m−ΣKim-ΣK_i个11。

因为我们由Ki=m∗Xi/YK_i=m*X_i/Y得KiK_i只要再增加11,KiK_i就要考虑绝对值了,

所以KiK_i的最终值肯定为m∗Xi/Y或m∗Xi/Y+1m*X_i/Y或m*X_i/Y+1。

我们再把所有的m∗Xi/Y+1m*X_i/Y+1从小到大排序,把没加的1<script type="math/tex" id="MathJax-Element-25">1</script>加上即可。

#include <cstdio>
#include <algorithm>
using namespace std;const int MAXN = 1009;int n, m, y;
int x[MAXN];
int k[MAXN];
int sum;
int a[MAXN];inline int iabs(int x){return x>0?x:-x;}inline bool cmp(int a, int b)
{int t1 = iabs(x[a]*m-(k[a]+1)*y), t2 = iabs(x[b]*m-(k[b]+1)*y);return t1 < t2 || (t1 == t2 && a > b);
}int main()
{scanf("%d%d%d", &n, &m, &y);for(int i = 1; i <= n; ++i){scanf("%d", x+i);k[i] = m*x[i]/y;sum += k[i];a[i] = i;}sort(a+1, a+n+1, cmp);for(int i = 1; i <= m-sum; ++i) k[a[i]]++;for(int i = 1; i <= n; ++i)printf("%d ", k[i]);return 0;
}

sgu207:Robbers(贪心)相关推荐

  1. ZOJ2343 Robbers(贪心)

    题目: Robbers Time Limit: 5 Seconds Memory Limit: 32768 KB Special Judge N robbers have robbed the ban ...

  2. ACdream 1224 Robbers (贪心)

    一道贪心题,很久前做的,代码是我以前写的. 题意:有n个抢劫者抢劫了m块金子,然后第i个人平分xi/y块金子,但是会有除不尽的情况而金子不可再分,那么每个人都有一个不满意度fabs(xi / y - ...

  3. sgu-207 Robbers

    题目大意: n个强盗抢银行共得到m个金币,抢劫前他们确定了分配方案,每个人按比例xi/Y分配,x1+x2+...+xn=Y,m不一定被Y整除,假设第i个强盗分配了ki个金币,那么不公平度为| xi/Y ...

  4. AC_Dream 1224 Robbers(贪心)

    题意:n个抢劫犯分别抢到的金钱是k1, k2, k3,...,一共得到的金钱是m, 但是在分钱的时候是按照x1/y, x2/y, x3/y,....的比例进行分配的!这样的话 一些抢劫犯就会觉得不公平 ...

  5. zoj 2343 Robbers 【贪心】

    题意: 给你n个金币,然后m个人,每个人有理论的分配份额.但是金币只能整Robbers个整个分. 问你怎么分才能让金币分配的最合理: 题解: 先按比例,把能分的先都分了,最后剩余的,往余数最大的上面补 ...

  6. UVA 1616 Caravan Robbers 【二分+贪心+枚举分母】

    题目链接 题意 给n个互不相包含的区间,求出一个长度的最大值,使得可以在每个区间中选出这样一个长度的子区间,这些子区间互不相交.结果用分数表示 分析 先考虑如果给定了区间长度能不能选出这样的区间.因为 ...

  7. zoj 2709 Lottery 组合数,概率,贪心 (8-F)

    题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2709 题解:  1   组合数的计算,用DP,速度又快又简洁. ...

  8. Grakn Forces 2020 D. Searchlights——贪心

    D. Searchlights Description There are n robbers at coordinates (a1,b1), (a2,b2), -, (an,bn) and m se ...

  9. 算法设计与分析第3章 贪心算法

    第4章 贪心算法 贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择. 贪心算法的基本要素 1.贪心选择性质 所谓贪心选择性质是指所 ...

最新文章

  1. 智能车竞赛技术报告 | 智能车视觉 - 山东大学(威海) - 山魂五队
  2. php 表单提交2次,微信开发之php表单微信中自动提交两次问题解决办法
  3. 来晚了--SALTSTACK要弄起
  4. javascript获取和设置URL中的参数
  5. 程序集强命名与GAC
  6. 记一次院赛CTF的Crypto和Re题(入门)
  7. 杀手级 AI 补代码工具问世,支持 23 种语言及 5 种主流编辑器,程序员沸腾了...
  8. java抓取新闻_【图片】【抓取】Java获取各大网站新闻【java吧】_百度贴吧
  9. Go中error类型的nil值和nil
  10. 八大远程控制软件排行,Teamviewer替代软件
  11. mysql 同比sql_mysql计算同比和环比的区别_【面试真题】Mysql实现计算同比、环比...
  12. mysql interval啥意思_MySQL interval()函数
  13. java日期计算天数_用Java计算两个日期之间的天数
  14. Gos: Armed Golang
  15. android手机返回桌面后,点击app图标,app重启
  16. 如何解决电脑C盘不能扩展问题
  17. excel怎么快速判断录入银行卡号是否正确?
  18. 兰州计算机非全日制硕士有哪些学校,兰州大学2018年非全日制热门学科专业有哪些...
  19. Arduino实验九——感光灯实验
  20. pythonnet调用python tsne算法

热门文章

  1. jme-再现虎式坦克
  2. 备份恢复Lesson 06.Performing Backups
  3. Dnguard旗舰版代加密加壳服务 20/次
  4. 投资高手三十年投资经验总结的18条真谛
  5. 电脑蓝屏错误代码0x0000007e的解决方法
  6. 重庆大学非全日制计算机专业,2018年重庆大学非全日制研究生招生专业目录
  7. Groovy脚本基础全攻略
  8. 美团 Robust 热更异常 haven‘t insert code by Robust.Cannot patch this method, method.signature
  9. 怎么在unity中测试游戏_Unity中的性能基准测试:如何开始
  10. 奇虎360scribe日志采集系统