题目链接

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1398

题意:

输入t 有t个测试用例每个测试用例第一行输入三个数n,m,y;第二行输入n个数x1,x2....xn。

要求输出看k1,k2....kn。使得 |Xi/Y - Ki/M|. 最小,x1+x2+...+xn=y;  k1+k2+...+kn=m;

这个题目是应该做出来的,基础搞好,做什么都好

每个人开始得到  ki=m*xi/y     这样使得m可能还有剩余把|Xi/Y - Ki/M|. 假设把多余的加一个一到上面相减再排序,小的优先加一

如:

sum=m-sum;
for(i=0;i<n;i++)
{
a[i].num=i;
a[i].x=abs((c[i]+1.0)/m-b[i]*1.0/y)-abs(c[i]*1.0/m-b[i]*1.0/y);
}
sort(a,a+n,cmp);
for(i=0;i<sum;i++)
{
c[a[i].num]++;
}

只要有一定的算法基础,这个题就很容易:

代码

#include<stdio.h>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;

struct node
{
int num;
double x;
}a[1005];

bool cmp(node a,node b)
{
return a.x<b.x;
}

int main(void)
{
int t;
int i,j,k;
int n,m,y;
int b[1005];
int c[1005];
scanf("%d",&t);
while(t--)
{
int sum=0;
scanf("%d%d%d",&n,&m,&y);
for(i=0;i<n;i++)
{
scanf("%d",b+i);
c[i]=b[i]*m/y;
sum=sum+c[i];
}
sum=m-sum;
for(i=0;i<n;i++)
{
a[i].num=i;
a[i].x=abs((c[i]+1.0)/m-b[i]*1.0/y)-abs(c[i]*1.0/m-b[i]*1.0/y);
}
sort(a,a+n,cmp);
for(i=0;i<sum;i++)
{
c[a[i].num]++;
}
for(i=0;i<n-1;i++)
printf("%d ",c[i]);
printf("%d\n",c[i]);
if(t)
printf("\n");
}
return 0;
}

这个题应注意别改变它相应的次序:

ZOJ-2343-Robbers的更多相关文章

  1. 训练赛第二场G题 ZOJ 2343

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2343 解题报告:首先我假设最后的正确的结果是a[1] , a[2 ...

  2. ZOJ People Counting

    第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ  3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...

  3. ZOJ 3686 A Simple Tree Problem

    A Simple Tree Problem Time Limit: 3 Seconds      Memory Limit: 65536 KB Given a rooted tree, each no ...

  4. ZOJ Problem Set - 1394 Polar Explorer

    这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...

  5. ZOJ Problem Set - 1392 The Hardest Problem Ever

    放了一个长长的暑假,可能是这辈子最后一个这么长的暑假了吧,呵呵...今天来实验室了,先找了zoj上面简单的题目练练手直接贴代码了,不解释,就是一道简单的密文转换问题: #include <std ...

  6. ZOJ Problem Set - 1049 I Think I Need a Houseboat

    这道题目说白了是一道平面几何的数学问题,重在理解题目的意思: 题目说,弗雷德想买地盖房养老,但是土地每年会被密西西比河淹掉一部分,而且经调查是以半圆形的方式淹没的,每年淹没50平方英里,以初始水岸线为 ...

  7. ZOJ Problem Set - 1006 Do the Untwist

    今天在ZOJ上做了道很简单的题目是关于加密解密问题的,此题的关键点就在于求余的逆运算: 比如假设都是正整数 A=(B-C)%D 则 B - C = D*n + A 其中 A < D 移项 B = ...

  8. ZOJ Problem Set - 1001 A + B Problem

    ZOJ ACM题集,编译环境VC6.0 #include <stdio.h> int main() { int a,b; while(scanf("%d%d",& ...

  9. zoj 1788 Quad Trees

    zoj 1788 先输入初始化MAP ,然后要根据MAP 建立一个四分树,自下而上建立,先建立完整的一棵树,然后根据四个相邻的格 值相同则进行合并,(这又是递归的伟大),逐次向上递归 四分树建立完后, ...

  10. ZOJ 1958. Friends

    题目链接: ZOJ 1958. Friends 题目简介: (1)题目中的集合由 A-Z 的大写字母组成,例如 "{ABC}" 的字符串表示 A,B,C 组成的集合. (2)用运算 ...

随机推荐

  1. HDU 2485 Destroying the bus stations

    2015 ACM / ICPC 北京站 热身赛 C题 #include<cstdio> #include<cstring> #include<cmath> #inc ...

  2. HTML基本

    a标签的四种状态 a:link;  /* 未访问的链接 */ a:visited;  /* 已访问的链接 */ a:hover; /* 当有鼠标悬停在链接上 */ a:hover 必须位于 a:lin ...

  3. cron expr

    api docs说的很清楚,不需要去搜索, org.quartz 类 CronExpression java.lang.Object org.quartz.CronExpression 所有已实现的接 ...

  4. Golang学习笔记:包制作

    golang的包跟java as js之类的大不一样,一定要存在GOPATH里面,GOPATH是专门用于存放golang第三方的库,里面有两个文件夹, src:源代码目录 pkg:编译后的第三方包,这 ...

  5. 浏览器兼容问题 chrome iframe location href

    报了个错 var dt2=new Date(d2Arr[0],d2Arr[1],d2Arr[2]); if(dt1>dt2){//比较日期 alert("开始日期不能晚于结束日期!&q ...

  6. php登录

    if ($name && $passowrd){ $sql = "SELECT * FROM liuyanban WHERE name = '$name' and passw ...

  7. IT人常用的网站

    一.网页设计类 蓝色理想 http://www.blueidea.com 网页设计师联盟 http://www.68design.net 网页设计大本营 http://www.code-123.com ...

  8. Mysql update语句赋值嵌套与在表列中数据后面增加数据

    1.Mysql update语句赋值嵌套select  点击(此处)折叠或打开 update a set col=(select col from a where id='5') where id&g ...

  9. TweenLite JS版

    今早逛网站看到下面这个帖子: 译~GreenSock动画平台(GSAP)的JavaScript版本入门 这个就是做ActionScript 的时候用得最多的第三方缓动包TweenLite了, 就此标记 ...

  10. openstack controller ha测试环境搭建记录(十)——配置neutron(控制节点)

    创建neutron用户:mysql -u root -p CREATE DATABASE neutron;GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@ ...