zoukankan      html  css  js  c++  java
  • bzoj2048 书堆

    Description

    Input

    第一行正整数 N M

    Output

    一行(有换行符),L,表示水平延伸最远的整数距离 (不大于答案的最大整数)

    贪心地把最高的书尽量向右放可以得到最优解,因而最高的书的重心在次高的书边缘,最上面两本书的重心在第三本书边缘...

    可以发现ans=m/2+m/4+m/6+...+m/2n

    答案为小于 调和级数前n项和乘m除以2 的最大整数,因此可以用调和级数的近似前缀和公式求,当n较小时由于公式误差较大可以暴力求。

    #include<cstdio>
    #include<cmath>
    int main(){
        long long n;
        int m;
        double s=0;
        scanf("%lld%d",&n,&m);
        if(n<100)for(int i=1;i<=n;i++)s+=1.0/i;
        else s=log(n)+1.0/(2*n+exp(-1))+0.5772156649;
        printf("%d",(int)(m*s/2-1e-5));
        return 0;
    }
  • 相关阅读:
    dota监测
    R0:前瞻
    Python基础
    c++成员函数
    异步IO简介
    使用自定义类型做qmap,qhash的key
    c++ primer 7 函数
    c++ primer 6 语句
    c++ primer 5 表达式
    c++ primer 4 数组和指针
  • 原文地址:https://www.cnblogs.com/ccz181078/p/5297298.html
Copyright © 2011-2022 走看看