ZOJ-2343-Robbers
题目链接
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的更多相关文章
- 训练赛第二场G题 ZOJ 2343
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2343 解题报告:首先我假设最后的正确的结果是a[1] , a[2 ...
- ZOJ People Counting
第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ 3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...
- ZOJ 3686 A Simple Tree Problem
A Simple Tree Problem Time Limit: 3 Seconds Memory Limit: 65536 KB Given a rooted tree, each no ...
- ZOJ Problem Set - 1394 Polar Explorer
这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...
- ZOJ Problem Set - 1392 The Hardest Problem Ever
放了一个长长的暑假,可能是这辈子最后一个这么长的暑假了吧,呵呵...今天来实验室了,先找了zoj上面简单的题目练练手直接贴代码了,不解释,就是一道简单的密文转换问题: #include <std ...
- ZOJ Problem Set - 1049 I Think I Need a Houseboat
这道题目说白了是一道平面几何的数学问题,重在理解题目的意思: 题目说,弗雷德想买地盖房养老,但是土地每年会被密西西比河淹掉一部分,而且经调查是以半圆形的方式淹没的,每年淹没50平方英里,以初始水岸线为 ...
- ZOJ Problem Set - 1006 Do the Untwist
今天在ZOJ上做了道很简单的题目是关于加密解密问题的,此题的关键点就在于求余的逆运算: 比如假设都是正整数 A=(B-C)%D 则 B - C = D*n + A 其中 A < D 移项 B = ...
- ZOJ Problem Set - 1001 A + B Problem
ZOJ ACM题集,编译环境VC6.0 #include <stdio.h> int main() { int a,b; while(scanf("%d%d",& ...
- zoj 1788 Quad Trees
zoj 1788 先输入初始化MAP ,然后要根据MAP 建立一个四分树,自下而上建立,先建立完整的一棵树,然后根据四个相邻的格 值相同则进行合并,(这又是递归的伟大),逐次向上递归 四分树建立完后, ...
- ZOJ 1958. Friends
题目链接: ZOJ 1958. Friends 题目简介: (1)题目中的集合由 A-Z 的大写字母组成,例如 "{ABC}" 的字符串表示 A,B,C 组成的集合. (2)用运算 ...
随机推荐
- jdb 调试
C:\Users\Reverse>adb shell am start -D -n lwf.lc.pncdd/lwf.lc.pncdd.MainC 查看内存情况: cat /proc/N/map ...
- ural1019 Line Painting
Line Painting Time limit: 2.0 secondMemory limit: 64 MB The segment of numerical axis from 0 to 109 ...
- 2016"百度之星" - 资格赛(Astar Round1) Problem B
规律题,斐波那契数列,数据有毒,0的时候输出换行.会爆longlong,写个大数模板或者Java搞. import java.io.BufferedInputStream; import java.m ...
- Ubuntu iptables 设置
在ubuntu中由于不存在 /etc/init.d/iptales文件,所以无法使用service等命令来启动iptables,需要用modprobe命令. 启动iptables modprobe i ...
- Oracle使用rowid删除重复记录
/**如何删除重复记录?*//*1. 先按重复字段分组 2. 在每组里找出最小的rowid 3. 把整个表中与上面查询出来的rowid不相等的记录删除掉*/delete from test_t ...
- hbuilder 手机app开发系列(一)
最佳答案好水啊,实在看不过眼,首先apicloud是一个框架,hbuidler是ide工具,两者没什么可比性.我来推荐一个国外免费开源的项目吧,Ionic framework,我之所以推荐它是因为它支 ...
- (译)Windsor入门教程---第四部分 整合
介绍: 目前为止,已经介绍了应用程序的各个部分.首先是添加了Windsor程序集,然后是添加了控制器工厂,还添加了installer类来注册控制器.虽然但是我们还没用在应用程序中调用他们.在这 ...
- linux 驱动入门6
看/sys目录经常看到bus device driver class. 这也是网上大量说的驱动驱动模型.这些的关系得熟悉得明白吧.是的.今天我先不整他们的关系.先逐个击破,然后再统一来理清楚他们之间的 ...
- jQuery中$.get、$.post、$.getJSON和$.ajax的用法
以下是本人原创,如若转载和使用请注明转载地址.本博客信息切勿用于商业,可以个人使用,若喜欢我的博客,请关注我,谢谢!博客地址 一.jQuery中调用ajax的4种方法:$.get.$.post.$ge ...
- Spring+struts+ibatis(一)环境准备工作
首先我们先了解几个jar包的作用和一些未曾见过的接口和类 xwork-2.0.7.jar XWork是一个标准的Command模式实现,并且完全从web层脱离出来.Xwork提供了很多核心功能:前端拦 ...