题解

1 条题解

  • 0
    @ 2018-02-23 10:50:55
    #include<bits/stdc++.h>
    using namespace std;
    #define xs 1e-10
    
    int n,m,x,y,ans;
    double tar,a[10010];
    
    void dfs(int x,int y,double sum) {
        if(sum+a[x+(m-y)-1]-a[x-1]-tar<-xs||sum+a[n]-a[n-(m-y)]-tar>xs)return;//精度卡死人啊!
        if(y==m){
            ans++;
            return;
        }
        dfs(x+1,y+1,sum+1.0/x);dfs(x+1,y,sum);
    }
    int read()
    {
        int k=0;
        char f=1;
        char c=getchar();
        while(c>'9'||c<'0')
            if(c=='-')
            {
                f=-1;
                c=getchar();
            }
        while(c<='9'&&c>='0')
        {
            k=k*10+c-'0';
            c=getchar();
        }
        return k*f;
    }//模板快读
    int main()
    {
        m=read(),n=read(),x=read(),y=read();
        tar=1.0*x/y;
        for(int i=1;i<=n;++i) a[i]=a[i-1]+1.0/i;
        dfs(1,0,0.0);
        printf("%d\n",ans);
        return 0;
    }
    
    
  • 1

信息

难度
9
分类
(无)
标签
递交数
5
已通过
4
通过率
80%
上传者