zoukankan      html  css  js  c++  java
  • Codeforces 680D

    680D - Bear and Tower of Cubes

    思路:dfs+贪心,设剩余的体积为res,存在a,使得a≤ res,每次取边长为a的立方体或者边长为a-1的立方体(这时体积上限变成a-1)。

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    #define pb push_back
    #define mem(a,b) memset((a),(b),sizeof(a))
    #define pil pair<int,ll>
    #define mp make_pair
    const int N=1e5+5;
    ll mm[N];
    
    pil dfs(int cur,ll res,ll x)
    {
        //cout<<res<<endl;
        if(res==0)
        {
            //cout<<cur<<' '<<x<<endl;
            return mp(cur,x);
        }
        int a=upper_bound(mm+1,mm+N,res)-mm;
        a--;
        pil ans=dfs(cur+1,res-mm[a],x+mm[a]);
        if(a>1)ans=max(ans,dfs(cur+1,mm[a]-1-mm[a-1],x+mm[a-1]));
        return ans;
    }
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        ll m;
        cin>>m;
        for(int i=1;i<N;i++)mm[i]=(ll)i*i*i;
        
        int a=upper_bound(mm+1,mm+N,m)-mm;
        a--;
        pil ans=dfs(1,m-mm[a],mm[a]);
        if(a>1)ans=max(ans,dfs(1,mm[a]-1-mm[a-1],mm[a-1]));
        cout<<ans.first<<' '<<ans.second<<endl;
        return 0;
    }
  • 相关阅读:
    odoo action方法
    linux命令
    删除方法odoo
    odoo权限
    odoo方法
    odoo自动更新表中数据
    odoo
    odoo之recoed.append()方法
    odoo明细表汇总数据
    假期周进度报告1
  • 原文地址:https://www.cnblogs.com/widsom/p/7371581.html
Copyright © 2011-2022 走看看