博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #638 (Div. 2) D. Phoenix and Science(数学+思维)
阅读量:3928 次
发布时间:2019-05-23

本文共 638 字,大约阅读时间需要 2 分钟。

在这里插入图片描述

题意: 每个细菌可以在白天的时候分裂,当一个细菌分裂成两个细菌时,子细菌的质量为母细菌的一半,晚上的时候,每个细菌的质量自增1,第一天会有一个质量为1的细菌。现要得到总质量为n的细菌,问最少几天能得到,并说明这几天内,每天分裂的细菌数

思路:说实话看样例解释的话容易看晕,且容易带偏方向,要你求的是多少天后质量能到达n,所以不用管那天的具体的细胞数,我们只要知道它的每天的增量就可以了。假设当前天有x个,晚上分裂t个,那么增加的质量就为2*t+(x-t)等于x+t,所以增加的质量之和x和t有关。要想使得天数最少,我们是不是尽可能地多分裂,于是最理想地质量增加方式就是1 2 4 8 16.。。。但是假设n为9,那么到了1 2 4地时候就可以停了,后面不能再有8(因为否则就要超过9了),但是这个时候还差2个怎么办呢?很简单因为此时x为7,我们只要让t等于2不就行了(也就是选择2个细菌来分裂)。

#include
using namespace std;const int maxn=1e3+5;vector
ans;int T,n;int main(){
scanf("%d",&T); while(T--) {
ans.clear(); scanf("%d",&n); int sum=0; for(int i=1;sum+i<=n;i<<=1) sum+=i,ans.push_back(i); if(sum

转载地址:http://ubign.baihongyu.com/

你可能感兴趣的文章
Makefile的常用语法 及 规则
查看>>
Android Makefile 具体是 如何识别 TARGET_PRODUCT 变量
查看>>
#!/usr/bin/env python与#!/usr/bin/python的区别
查看>>
修改其他输入法为android 默认输入法
查看>>
在 android 里 常用的 默认开关的 意义
查看>>
source insight配置
查看>>
vim 常用配置 及 常用 命令
查看>>
android项目 添加
查看>>
cpio命令详解
查看>>
制作 ramdisk.img,使用cpio 和 gzip
查看>>
添加一种新语言
查看>>
QT-Linux开发环境的搭建和helloworld
查看>>
QT-windows开发环境的搭建和helloworld
查看>>
bat批处理的注释语句
查看>>
dos下 打开 文件夹
查看>>
第一次使用git,撤销git add操作 (undo git add before commit)
查看>>
如何在windows下使用git及github仓库管理项目
查看>>
回退 服务器 上的 git 仓库 & 删除 服务器上的 git 分支
查看>>
Qt UI布局
查看>>
Git pull 小结
查看>>