Gym 100197G Robbers (卡精度)

来源:互联网 发布:淘宝买家如何快速升钻 编辑:程序博客网 时间:2024/05/16 10:35

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
原创粉丝点击