关闭

Gym 100197G Robbers (卡精度)

标签: acm-icpcc++codeforces
106人阅读 评论(0) 收藏 举报
分类:

Robbers (题目链接)


这题有两个坑。。

1是卡精度

2是读入文件不是题面的名字


/*************************************************************************
     File Name: G.cpp
     ID: obsoles1
     PROG: 
     LANG: C++ 
     Mail: 384099319@qq.com 
     Created Time: 一  8/29 17:41:20 2016
 ************************************************************************/
#define ABS(x,y) ((x)>(y)?((x)-(y)):((y)-(x)))
#include<cstdio>
#include<queue>
const int N=1010;
const double eps=1e-6;
struct node{
  int x,id,k;
  double diff;
  bool operator < (const node &rhs) const {
    return diff-rhs.diff<eps || (ABS(diff,rhs.diff)<eps && id<rhs.id);
  }
}x;
int ans[N];

int main() {
  int n,m,y,i;
  freopen("input.txt","r",stdin);
  freopen("output.txt","w",stdout);//坑!!!
  scanf("%d%d%d",&n,&m,&y);
  int per=m/y,left=m-per*y;
  double per1=(double)m/y;
  std::priority_queue<node> q;
  for (i=0; i<n; ++i) {
    scanf("%d",&x.x);
    x.id=i;
    x.k=per*x.x;
    x.diff=per1*x.x-x.k*1.0;
    q.push(x);
  }
  while (left) {
    x=q.top(),q.pop();
    x.diff-=1.0;
    x.k++;
    left--;
    q.push(x);
  }
  while (!q.empty()) {
    x=q.top(),q.pop();
    ans[x.id]=x.k;
  }
  for (i=0; i<n; ++i)
    printf("%d%c",ans[i]," \n"[i==n-1]);
}


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:8127次
    • 积分:670
    • 等级:
    • 排名:千里之外
    • 原创:61篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    友情链接
    文章分类