什么网站是php,火车头采集网站,企业网站数据库表设计,工程建设造价信息网站题意#xff1a;n个抢劫犯分别抢到的金钱是k1, k2, k3,...#xff0c;一共得到的金钱是m#xff0c; 但是在分钱的时候是按照x1/y, x2/y, x3/y,....的比例进行分配的#xff01;这样的话 一些抢劫犯就会觉得不公平#xff0c;不公平度为|xi/y - ki/m|(浮点运算)#xff0… 题意n个抢劫犯分别抢到的金钱是k1, k2, k3,...一共得到的金钱是m 但是在分钱的时候是按照x1/y, x2/y, x3/y,....的比例进行分配的这样的话 一些抢劫犯就会觉得不公平不公平度为|xi/y - ki/m|(浮点运算) 输出一个序列ki使得 总的不公平度最小..... 思路很明显的贪心 首先按照 [xi/y](取整)的比例将每一个人得到的钱求出来(ni)然后会得到 剩下的钱数, 最后在所有人中找到谁分配的相对比例少了也就是xi/y*m - ni的最大值找到这个人 之后将他得到的钱数加 1 1 #includeiostream2 #includecstdio3 #includecstring4 #define N 10065 using namespace std;6 7 int num[N];8 int x[N];9 bool flag[N];
10
11 int main(){
12 int n, m, y;
13 while(scanf(%d%d%d, n, m, y) ! EOF){
14 memset(flag, 0, sizeof(flag));
15 int left 0;
16 for(int i1; in; i){
17 scanf(%d, x[i]);
18 num[i] x[i]*m/y;
19 left num[i];
20 if( x[i]%y 0 ) flag[i] true;
21 }
22 left m - left;
23 while(left 0){
24 double tmp 0.0;
25 int p 0;
26 for(int i1; in; i)
27 if(tmp x[i]*1.0/y * m - num[i]){
28 tmp x[i]*1.0/y * m - num[i];
29 p i;
30 }
31 --left;
32 num[p];
33 }
34 printf(%d, num[1]);
35 for(int i2; in; i)
36 printf( %d, num[i]);
37 printf(\n);
38 }
39 return 0;
40 } View Code 转载于:https://www.cnblogs.com/hujunzheng/p/4005517.html