• Jeff and Rounding(Codeforces Round #204 (Div. 2))


    题目链接:http://codeforces.com/contest/352/problem/C

    题意:给予N*2个数字,改变其中的N个向上进位,N个向下进位,使最后得到得数与原来数的差的绝对值最小

    思路:2n个数(设小数部分都看做x),n个向下取整,相对原来的数-x,n个向下取整,相对原来的数+(1-x),从两个式子中可以看出x的前面都是负号,所以可以统一处理,那么剩下来的就是统计1的个数cnt了。如果不出现a.000的情况的话,那么cnt=n,因为a.000如果向上取整的话是不需要+1的,所以统计出现a.000的次数num,那么+1的个数就在(max(0,n-num),n)之间了,取最佳ans就够了。
     

    #include <bits/stdc++.h>
    #define maxn 100005
    #define MAXN 100005
    #define mod 1000000007
    #define INF 0x3f3f3f3f
    using namespace std;
     
    typedef long long ll;
    int n,m,cnt;
    double ans,sum;
     
    int main()
    {
        int i,j,mi;
        ll t;
        double s,tmp;
        while(~scanf("%d",&n))
        {
            m=2*n;
            cnt=0;
            sum=0;
            for(i=1;i<=m;i++)
            {
                scanf("%lf",&s);
                t=ll(s);
                if(t==s) cnt++;
                else
                {
                    tmp=s-t;
                    sum+=tmp;
                }
            }
            mi=min(n,cnt);
            ans=INF;
            for(i=0;i<=mi;i++)
            {
                ans=min(ans,fabs(n-i-sum));
            }
            printf("%.3f
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    搭建DHCP服务
    sshd免密登陆
    加密类型以及数据加密解密过程
    搭建私有CA并实现证书颁发
    CentOS 7 启动流程
    Linux命令:tcpdump命令
    Linux命令:ping命令
    Linux命令:ss命令
    Linux命令:ip命令
    Linux命令:netstat命令
  • 原文地址:https://www.cnblogs.com/shmilky/p/14089013.html
Copyright © 2020-2023  润新知