zoukankan      html  css  js  c++  java
  • BZOJ1024: [SCOI2009]生日快乐

    这题上来看以为是dp,其实是搜索,我顺便把搜索的路径存下来了(这样才看明白样例......)。 —— by VANE

    #include<bits/stdc++.h>
    #define MP make_pair
    #define xx first
    #define yy second
    using namespace std;
    double a,b;
    int n;
    typedef pair<pair<double,double>,int> pa;
    map<pa,pa>pre;
    double dfs(double x,double y,int k)
    {
        if(k==1)
        return max(x/y,y/x);
        double ans=1e9;
        for(int i=1;i<=k/2;++i)
        {
            double nx=x/k*i,ny=y/k*i;
            double t=max(dfs(nx,y,i),dfs(x-nx,y,k-i));
            if(t<ans)
            {
                ans=t;
                pre[MP(MP(x,y),k)]=MP(MP(nx,y),i);
            }
            t=max(dfs(x,ny,i),dfs(x,y-ny,k-i));
            if(t<ans)
            {
                ans=t;
                pre[MP(MP(x,y),k)]=MP(MP(x,ny),i);
            }
        }
        return ans;
    }
    void print(double x,double y,int k)
    {
        double na,nb;
        int nn;
        if(k<=1) return;
        pa p=MP(MP(x,y),k);
        na=pre[p].xx.xx;
        nb=pre[p].xx.yy;
        nn=pre[p].yy;
        printf("%.2lf %.2lf %d
    ",na,nb,nn);
        print(na,nb,nn);
        if(nb==y)
        {
            printf("%.2lf %.2lf %d
    ",x-na,nb,k-nn);
            print(x-na,nb,k-nn);
        }
        else 
        {
            printf("%.2lf %.2lf %d
    ",x,y-nb,k-nn);
            print(na,y-nb,k-nn);
        }
    }
    int main()
    {
        scanf("%lf%lf%d",&a,&b,&n);
        printf("%.6lf
    ",dfs(a,b,n));
        print(a,b,n);
    }
  • 相关阅读:
    ZooKeeper Java例子(六)
    css盒模型
    竖直方向三栏布局
    水平方向三栏布局
    js判断一个字符串是以某个字符串开头
    js防止重复点击
    升级 AngularJS 至 Angular
    js实现大文件分片上传的方法
    使用svn进行本地代码管理
    angular使用代理解决跨域
  • 原文地址:https://www.cnblogs.com/nbwzyzngyl/p/8302161.html
Copyright © 2011-2022 走看看