codeforces 679B Bear and Tower of Cubes(贪心+dfs)

单细胞测序数据读取实战指南:从入门到精通 本文提供了单细胞测序数据读取的实战指南,涵盖从标准10X Genomics格式到通用表达矩阵及RDS文件的读取方法。文章重点解析了数据读取的核心步骤、常见问题解决方案及进阶技巧,旨在帮助用户夯实数据分析基础,确保后续分析流程的准确性。 阅读详情

参考http://blog.youkuaiyun.com/sinat_34263473/article/details/51620773
http://www.cnblogs.com/macinchang/p/5572070.html

Bear and Tower of Cubes
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Limak is a little polar bear. He plays by building towers from blocks. Every block is a cube with positive integer length of side. Limak has infinitely many blocks of each side length.

A block with side a has volume a3. A tower consisting of blocks with sides a1, a2, …, ak has the total volume a13 + a23 + … + ak3.

Limak is going to build a tower. First, he asks you to tell him a positive integer X — the required total volume of the tower. Then, Limak adds new blocks greedily, one by one. Each time he adds the biggest block such that the total volume doesn’t exceed X.

Limak asks you to choose X not greater than m. Also, he wants to maximize the number of blocks in the tower at the end (however, he still behaves greedily). Secondarily, he wants to maximize X.

Can you help Limak? Find the maximum number of blocks his tower can have and the maximum X ≤ m that results this number of blocks.
Input

The only line of the input contains one integer m (1 ≤ m ≤ 1015), meaning that Limak wants you to choose X between 1 and m, inclusive.
Output

Print two integers — the maximum number of blocks in the tower and the maximum required total volume X, resulting in the maximum number of blocks.
Examples
input

48

output

9 42

input

6

output

6 6

Note

In the first sample test, there will be 9 blocks if you choose X = 23 or X = 42. Limak wants to maximize X secondarily so you should choose 42.

In more detail, after choosing X = 42 the process of building a tower is:

Limak takes a block with side 3 because it's the biggest block with volume not greater than 42. The remaining volume is42 - 27 = 15.
The second added block has side 2, so the remaining volume is 15 - 8 = 7.
Finally, Limak adds 7 blocks with side 1, one by one.

So, there are 9 blocks in the tower. The total volume is is 33 + 23 + 7·13 = 27 + 8 + 7 = 42.

题意:要你将一个体积为m的塔,用正方形方块尽可能的堆满,要求选取尽可能大的方块堆,其次使堆的方块数目尽可能的多!

思路:

对于每一次选择,首先要保证选完后的剩余体积最大,这样就保证了能选最多个数。然后在这基础上保证   最大。
考虑对于最大的  ,使得    .
如果当前选择的是  ,则剩余体积就是    
如果当前选择的是  , 则剩余体积就是      . 要保证   是可选的最大的,对   的上限有要求
如果当前选择的是  , 则剩余体积就是      .
所以可以发现在   的情况下,   恒不小于  , 所以就不用考虑   了
这样对于每一个状态,只要考虑   和  . 时间复杂度是       

别人有注释的代码:


LL jpow(LL x)    //立方根的计算
{
    return x*x*x;
}
pair<LL,LL> ans;    //first是方块的数目,second 是方块堆的总体积
void dfs(LL m,LL num, LL x)
{
    if(m==0){              //所堆的体积不能超过m
        ans = max(ans,make_pair(num,x));
        return ;
    }
    LL tpx = 1;
    while(jpow(tpx+1)<=m)  //贪心,选取最大的m,但不超过m个正方形方块
        tpx++;
    dfs(m - jpow(tpx),num+1,x+jpow(tpx));  //在此基础上,DFS寻找次大于剩下体积的方块
    if(tpx - 1 >= 0)                //找到能填充的方块后,尝试寻找能够代替这个方块的小方块
        dfs(jpow(tpx)-1-jpow(tpx - 1),num+1,x+jpow(tpx-1));
}
int main()
{
    LL m;
    scanf("%I64d",&m);
    dfs(m,0,0);
    printf("%I64d %I64d\n",ans.first,ans.second);
    return 0;
}
树莓派4B:控制步进电机 文章目录准备阶段接线阶段树莓派程序 准备阶段 准备以下物品,淘宝都可以买到: 57步进电机 电源开关(220v转24v,3A,72W) 步进电机驱动器 电源线 电线 杜邦线 树莓派4B一套 具体型号如下: 接线阶段 整体:接线效果如下图 电源开关起220v转24v作用,很好接线,输出24v接入步进电机驱动器 步进电机驱动器的 A+ A- B+ B- 按提示接步进电机四线,步进电机上就会有说... 阅读详情

相关推荐

Python入门之机器学习(非常详细)篇幅拉满,一般人看不完!

什么是机器学习?监督学习 supervised learning;非监督学习 unsupervised learning;半监督学习 semi-supervised learning;强化学习 reinforcement learning;监督学习是不断向计算机提供数据(特征),并告诉计算机对应的值(标签),最后通过大量的数据,让计算机自己学会判断和识别。例如Google Photo,你在APP中输入狗,这时就会弹出与狗相关的图片,这背后使用的算法就是监督学习。

xiaolinyui的博客 2万+

codeforces 679 B

只有2种情况,一直搜索下去就行了 ,一个是剩余的数,一个是答案一,即block,一个是增加的用到的答案#include <bits/stdc++.h> using namespace std; #define ll long long const int maxn=1e5+10; ll fac[maxn];ll bcnt , bsum; void dfs(ll remain , ll cnt , l

yp_2013的博客 742

从零玩转显示屏:手把手教你用Arduino驱动SPI屏幕(附引脚定义图)

本文提供了一份详尽的Arduino驱动SPI屏幕的入门指南。从SPI接口的核心引脚定义(如DC、RESET)与RGB接口的区别讲起,手把手指导硬件连接与软件库配置,并最终通过一个天气显示器实战项目,帮助读者掌握驱动SPI屏幕、显示RGB色彩内容的核心技能。

weixin_29189987的博客 131

CodeForces - 679B(dfs)

#include &lt;algorithm&gt; #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;cstring&gt; #include &lt;cstdio&gt; #include &lt;string&gt; #include &lt;vector&gt; #include

yanhu6955的博客 284

VASP+机器学习快速收敛AIMD

本文介绍了如何利用VASP结合机器学习技术快速收敛AIMD(从头算分子动力学)模拟。首先,通过训练机器学习力场,生成关键文件如ML_ABN(包含结构数据集)、ML_FFN(存储回归结果)和ML_LOGFILE(记录训练日志)。接着,配置INCAR文件以设置计算参数,包括并行化、分子动力学和机器学习相关参数。KPOINTS文件用于定义K点网格。计算完成后,备份CONTCAR文件作为后续模拟的初始结构。最后,利用训练好的力场文件进行纯机器学习力场分子动力学模拟,并提交任务执行。

qq_44812865的博客 1406

从开通VPS到搭建宝塔面板全教程

你在输入域名(此时我们可能没有类似aaa.com这样的域名,所以要输入VPS的IP地址)的时候,下面的根目录也会跟着变动,等输入完成后,你可以把根目录再改回成/www/wwwroot/dq。这时,在你的浏览器中,输入外网面板地址的URL,输入username和password,即可登陆宝塔面板。第一次登陆,需要绑定你的宝塔账号,你可以到宝塔的注册界面,用手机注册一个,然后绑定,首先看一下你的VPS操作系统是什么类型的(其实你在选择VPS的时候,就已经选定了,我选择的事Centos系统)。

kxltsuperr的专栏 3734

Codeforces 679B Bear and Tower of Cubes 【贪心】

题目链接:Codeforces 679B Bear and Tower of Cubes B. Bear and Tower of Cubes time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output Limak is a littl

世界很大 1272

Java写一条吃满屏幕的贪吃蛇(A*自动寻路算法和一些简单的策略) 二

上一篇文章介绍了一条贪吃蛇的简单实现,这一篇介绍贪吃蛇的自动寻路算法 ,说是自动寻路其实也就是一种遍历地图的算法,如果玩过游戏肯定知道游戏里面一般会有自动寻路功能,贪吃蛇的自动寻路算法也就是实现这个功能。下面慢慢介绍这种算法吧。    最开始,我没有在网上找资料的时候,我对于设计寻路算法的看法是遍历整个地图,将障碍物做上标记,然后找一条能够到达目的地的线路就可以了。所以最开始我用了特别暴力的方式来...

Sober_yang的博客 3632

CodeForces 679B - Bear and Tower of Cubes

题意:有各种棱长a(a>=1)的正方体,体积为a*a*a,一个物体的体积由各个正方体的体积相加而成             现求一个体积不超过m的物体,使其使用的正方体数量最多(若一样多则使体积尽量大)             但每次用正方体垒物体时,必须选不超过目前可使用的剩余体积的最大正方体。                最后输出使用的正方体数量和物体的体积。 思路:设此时剩

TianTengtt的博客 593

金融学习之十三——数据去极值和标准化处理

拿到数据后,数据中可能会存在一些超大或极小的值,这些值与其他的值离得较远,显得格格不入,我们称其为离群点,有时也称为异常点。对于这些值,它的存在会导致影响最终的分析结果,带偏我们的分析。举个简单的例子,10个人的收入分别为2000,2500,2300,2425,2512,2375,2700,2265,2345,10000000,只算前9个,平均值就是2380,但加上最后一个,平均值就是1002144.2,就可能严重带偏最后分析的结果。因此,对于这样的数据,我们需要将其去除或修改。 (一)数据去极值 数据去极

ryo007gnnu的博客 7168

图解联合概率密度、边缘概率密度、条件概率密度之间的关系

简要图解联合概率密度、边缘概率密度、条件概率密度之间的关系

一个搬运知识的笨小孩 2万+

CodeForces 679B(Bear and Tower of Cubes)

题意:Limak要垒一座由立方体垒成的塔。现有无穷多个不同棱长(a>=1)的立方体。要求:1、塔的体积为X(X<=m).2、在小于X的前提下,每次都选体积最大的砖块。3、在砖块数最多的前提下,使X尽可能大。求最终垒成塔所用的最大砖块数和塔可能的最大体积(在砖块数最多的前提下)。 思路:首先找到一个体积最大的砖块first_block(a3 ≤ m)。现在first_blo...

Cherrychan2014的博客 204

自动识别象棋棋子的OpenCV应用

在计算机视觉领域,OpenCV是一个广泛应用的开源计算机视觉库,它提供了丰富的图像处理和分析工具。本文将介绍如何使用OpenCV实现自动识别象棋棋子的功能,并提供相应的源代码。通过以上代码,我们可以实现对棋盘图像中棋子的自动识别。需要注意的是,以上代码只是一个简单的示例,实际应用中可能需要根据具体情况进行参数调整和算法优化,以获得更好的识别效果。函数利用预处理后的图像,寻找图像中的轮廓,并根据轮廓的面积筛选出可能的棋子轮廓,最后在原图像中提取棋子区域。在主程序中,我们读取输入图像,并调用。

WzisTypescript的博客 908

codeforces_679B. Bear and Tower of Cubes(贪心+二分+dfs)

B. Bear and Tower of Cubes time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Limak is a little polar bear. He

凳子 582

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【CodeForces】679 B. Bear and Tower of Cubes

【题目】B. Bear and Tower of Cubes 【题意】有若干积木体积为1^3,2^3,...k^3,对于一个总体积X要求每次贪心地取<=X的最大积木拼上去(每个只能取一次)最后总体积恰好为X,求给定的1~m内使积木数量最大的X,相同取X较大者。m<=10^15。 【题解】对于一个给定的限制m,考虑最大那块积木的选择,设最大的<=m的积木是a^3。 1.取a^...

weixin_33909059的博客 175

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Codeforces 679B Bear and Tower of Cubes

题意:给定不超过1e15的数m,每次贪心地取不超过m的最大的立方数ak,求最大的数X,使得X=a1+a2...+al=X并且X最大分析:设a[i]为不超过m的最大的立方数,对于每次m-a[i](剩下的体积越大越好),贪心地取a[i]或者a[i-1],取完a[i]之后是m-a[i],取完a[i-1]之后是a[i]-1-a[i-1](因为如果是a[i]必须取最大的a[i]),如果取a[i-2]剩下的体...

zhlbjtu2016的博客 296

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

CodeForces 679B Bear and Tower of Cubes

$dfs$,贪心。 #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<vector> #includ...

weixin_34191845的博客 114

牛客网 练习赛11 B题 假的字符串 tire+topsort判环

题目链接:https://www.nowcoder.com/acm/contest/59#submit/{%22problemIdFilter%22%3A15049%2C%22statusTypeFilter%22%3A%225%22%2C%22page%22%3A1} 链接:https://www.nowcoder.com/acm/contest/59/B 来源:牛客网 题目描述 给定n...

now_ing的博客 8681

POJ3889Fractal Streets 递归+ 坐标变换

参考:https://vjudge.net/solution/10966515他这个地方是 1 4 2 3的标号在递归的过程中要知道如何处理”轴对称”,”点对称” 的方式/LL P4[50]; void gao(LL n,LL a,LL &x,LL &y){ if(n==1){ if(a==1)x=y=1; if(a==2)x=1,y=2;

now_ing的博客 1398

Codeforces 842C - Ilya And The Tree 【树上DFS】

**【题意】给出一棵生成树,每个节点都有一个值,现在要求出每个节点的美丽值的最大值,美丽值的定义为从根节点到该节点(包含)路径上所有点的值的gcd,求解每个点时可以把路径上某一个点的值变为0。你可以认为每个点美丽值的求解是独立的。**按道理可以dp 的。不知道为什么错。没有数据。。别人的代码ac。。 #include <bits/stdc++.h> using namespace std;const

now_ing的博客 976

Gym - 101246C dfs

https://vjudge.net/problem/Gym-101246C这种美剧和思维可能我都不太会。。。 学习一下这种代码。。char tu[mxn][mxn]; int mp[mxn]; int n,m; int dp[1<<26]; int lowbit(int x){return x&(-x);} int init(int state){ if(dp[state])return

now_ing的博客 374

Sticks POJ - 1011 经典dfs..

参考:http://www.hankcs.com/program/algorithm/poj-1011-sticks.html#include<bits/stdc++.h>using namespace std; #define N 51 int n;int finish; int in[N]; int length; void check(int count,int len,int plen){

now_ing的博客 358

Codeforces Round #359 (Div. 2) C. Robbers' watch dfs

参考http://www.cnblogs.com/baocong/p/5913936.html题意:给你n和m,找出(a,b)的对数,其中a满足要求:0<=a<n,a的7进制的位数和n-1的7进制的位数相同,b满足要求:0<=b<m,b的7进制的位数和m-1的7进制的位数相同,且a和b的7进制下的位上的数都不相同,即如果a的七进制数为10,b的7进制数为21,这种情况是不行的,因为重复了1 题解:先

now_ing的博客 353

记忆化搜索 dp(dfs)-帮助Jimmy POJ--1661

感悟:首先自己没有把题目都看透。结果在看一些别人的题解的时候在疑惑如果平板高度相等的时候怎么办。 也浪费了时间,也没有看到一开始给只有一个横坐标 体会:虽然知道是有两个状态转移,但是怎么表示,如果用的是那种循环式的dp的话,达到下一种状态的判断怎么写,而且我居然没有考虑从上到下的高度排序。。 然后看别人的代码,感觉用dfs(记忆化搜索)写的比较看得懂, 而且还有一种数位dp的模板的感觉。。

now_ing的博客 298

Gym - 101164I dfs

https://vjudge.net/contest/170300#problem/Idfs//其实这里deep应该是个数的意思把。。。int st[maxn]; int cnt=0; bool dfs(int n,int start,int deep){ if(n<0)return 0; if(deep==0){ if(n==0){

now_ing的博客 280
上一篇: 个人赛2 简单思维
下一篇: Codeforces Round #356 (Div. 2) E. Bear and Square Grid 滑块
sega_handsome
博客等级 码龄10年 7粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值