题解 CF1348D 【Phoenix and Science】
题目大意,每天细菌会在早上选择分裂,晚上生长。
观察题目,我们可以发现。不管我们怎么分裂细菌,这一天晚上的总质量都是前一天晚上的总质量加上今天的细菌数。
那么我们肯定希望细菌分裂的越多越好,这样我们减少后几天的压力。所以前几天我们尽可能的让所有细菌都分裂。
如果把初始算成第零天,那么前 \(i\) 天如果细菌全部分裂就有 \(((1<<i)-1)\) 质量,第 \(i\) 天的细菌总数是 \((1<<(i-1))\) 。
所以如果 \(N\) 小于 \(((1<<i)-1+1<<(i-1))\) ,是肯定不行的。因为后几天细菌总质量会直接超过 \(N\) 。
如果 \(N\) 大于等于 \(((1<<i)-1+1<<(i-1))\) ,就可以实现在某一天质量正好到 \(N\) 。
然后就是处理后几天的问题了,通过手玩可以发现要么需要一天时间,要么就两天。用一个 \(if\) 语句判断一下就行了。
代码:
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#define INF 1LL<<62;
#define ll long long
#define For(X,From,To) for(ll X=From;X<=To;X++)
using namespace std;
ll T,N,Cnt[100],Num;
ll QP(ll B,ll K,ll Mod){ ll Ans=1;for(;K;K>>=1,B=B*B%Mod) if(K&1) Ans=Ans*B%Mod;return Ans;}
template<class T>void Read(T &X){
X=0;ll F=0;char Ch=getchar();
while(Ch<'0' || Ch>'9'){ F|=(Ch=='-');Ch=getchar();}
while(Ch>='0' && Ch<='9'){ X=X*10+(Ch^48);Ch=getchar();}
X=F? -X:X;
}
int main(){
//freopen(".in","r",stdin);
//freopen(".out","w",stdout);
Read(T);
while(T--){
Read(N);
Num=0;
memset(Cnt,0,sizeof(Cnt));
for(ll i=32;i>=1;i--)
if(N>=(1LL<<i)-1+(1LL<<(i-1))){
for(ll j=1;j<i;j++){
Num++;
Cnt[Num]=1LL<<(j-1);
}
N=N-((1LL<<i)-1);
if(N>0){
if((1LL<<i)>=N){
Num++;
Cnt[Num]=N-(1LL<<(i-1));
}else{
Num++;
Cnt[Num]=N/2-(1LL<<(i-1));
Num++;
Cnt[Num]=N%2;
}
}
printf("%lld\n",Num);
for(ll j=1;j<=Num;j++) printf("%lld ",Cnt[j]);
printf("\n");
break;
}
}
return 0;
}qwq
题解 CF1348D 【Phoenix and Science】的更多相关文章
- codefoces D. Phoenix and Science
原题链接:https://codeforc.es/problemset/problem/1348/D 题意:给你一个体重为一克的细菌(它可以每天进行一次二分裂即一分为二体重均分:晚上体重增加1克)求最 ...
- Codeforces1348 题解
AC代码连接 A Phoenix and Balance 显而易见,将前\(\frac{n}{2}-1\)个和最后1个分为1组,剩下的1组即为最优方案. B Phoenix and Science 这 ...
- Codeforces Round #638 (Div. 2)
Contest Info Practice Link Solved A B C D E F 4/6 O O Ø Ø O 在比赛中通过 Ø 赛后通过 ! 尝试了但是失败了 - 没有尝试 Sol ...
- [Phoenix] 七、如何使用自增ID
摘要: 在传统关系型数据库中设计主键时,自增ID经常被使用.不仅能够保证主键的唯一,同时也能简化业务层实现.Phoenix怎么使用自增ID,是我们这篇文章的重点. 在传统关系型数据库中设计主键时,自增 ...
- Apache Phoenix系列 | 从入门到精通(转载)
原文地址:https://cloud.tencent.com/developer/article/1498057 来源: 云栖社区 作者: 瑾谦 By 大数据技术与架构 文章简介:Phoenix是一个 ...
- phoenix从入门到精通
第一章.phoenix入门简介 1. Phoenix定义 Phoenix最早是saleforce的一个开源项目,后来成为Apache基金的顶级项目. Phoenix是构建在HBase上的一个SQL ...
- Phoenix综述(史上最全Phoenix中文文档)
个人主页:http://www.linbingdong.com 简书地址:http://www.jianshu.com/users/6cb45a00b49c/latest_articles 网上关于P ...
- 在DBeaver中phoenix查询报错:org.apache.phoenix.exception.PhoenixIOException: The system cannot find the path specified
环境:Phoenix:4.4,win7系统 问题:Phoenix在查询hbase时,报"系统找不到指定路径". 解决: 请参见 https://distcp.quora.com/C ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
随机推荐
- C# 数据操作系列 - 0. 序言
0. 前言 在上一个系列中,我们初步浏览了一下C#的基础知识.这句话的意思就是C#基础知识系列完结了,撒花.当然,并不是因为C#已经讲完了.正是因为我们轻轻地叩开了那扇门,才能看到门后面那瑰丽的世界. ...
- Qt编程基础入门之二
QMainWindow 菜单栏 菜单栏 最多有一个 //菜单栏创建,一个 QMenuBar *menu = new QMenuBar(this); // this->setMenuBar(men ...
- 某科学的PID算法学习笔记
最近,在某社团的要求下,自学了PID算法.学完后,深切地感受到PID算法之强大.PID算法应用广泛,比如加热器.平衡车.无人机等等,是自动控制理论中比较容易理解但十分重要的算法. 下面是博主学习过程中 ...
- JS字符串截取 “指定字符” 前面和后面的内容!
JS字符串截取 “指定字符” 前面和后面的内容! var string= "07/12" var before = string.split('/')[0] var after = ...
- 单线程和多线程执行对比—Python多线程编程
单线程和多线程执行对比 本章使用递归求斐波那契.阶乘与累加函数的执行来对比单线程与多线程: 斐波那契.阶乘与累加(mtfacfib.py): import threading from time ...
- docker push的时候提示requested access to the resource is denied
参考:http://blog.csdn.net/baidu_19473529/article/details/70156144 上面的信息显示是拒接访问,因为tag的名字斜线前面部分a10309076 ...
- SpringBoot 整合SpringBatch实际项目改造
SpringBoot整合SpringBatch项目,已将代码开源至github,访问地址:https://github.com/cmlbeliever/SpringBatch 欢迎star or fo ...
- Fragment 嵌套Fragment注意事项
最近项目新功能需要在垂直方方向可以循环滚动,并且水平方向也可以水平循环滚动,并且可以定位到指定item上.很自然的想到了ViewPager和 VerticalViewPager来解决项目需求,UI的大 ...
- ql的python学习之路-day12
前言:这一节主要学习json和pickle 背景: 相信大家在日常生活中都有接触大型的网络游戏,打游戏的时候都是自己在电脑上操作,自己刷怪升级:当然也会碰到中午去吃饭然后挂机的情况,让电脑自动的刷怪, ...
- JDK 安装与环境变量配置
JDK官网下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 1.下载jd ...