题目链接:点击查看

题目大意:起始时有一个细菌,质量为 1 ,每个白天可以选择数个细菌进行分裂,可以是 0 个,也可以是全部,然后每个晚上所有细菌的质量加一,问最少需要多少天所有细菌的总和可以达到 n ,给出一种构造方案

题目分析:比赛的时候拉胯了,这个题和 C 题都没想出来,感觉自己的紫名名不副实(给紫名丢人了真的对不起orz),不过还好打的是小号,说好听点就叫战略性掉分吧

贪心,首先需要get到出题人想考察的是二进制,其次是没有 -1 的情况,这个应该不难看出来,因为如果不分裂,那么到第 n 天质量肯定可以到达 n 的,那么目标就是需要求出最少的分裂天数,使得满足条件

满足什么条件呢?不难看出最后的总质量与细菌每天的数量相关,所以我们设 a[ i ] 为第 i 天时的细菌数量,那么显然答案就是 1 + a[ 1 ] + a[ 2 ] + a[ 3 ] .... + a[ k ] ,k 为最小天数,再考虑一下两种极限情况:

  1. 1 1 1 1 1 1 1 1..... 1 1 1 1 1,对应着细胞不分裂,只增加质量,第 i 天至少能到达 i 的质量
  2. 1 2 4 8 16 32 ...... 2^k,对应着每天所有细胞都分裂,第 i 天至多能到达 2^i - 1 的质量

这样我们只需要贪心分裂就行了,前面的 1 2 4 8 等等等能分裂就分裂,最后剩下一个数 remain ,也就是还差着 remain 的质量,我们将其插入到前面的序列中就行了,假设 4 <= remain <= 8 的话,序列就变成了 1 2 4 remain 8 16 .... 2^k 了,显然质量总和为 n,且 a 数组满足升序,接下来只需要将其转换为题目要求的格式就行了,题目需要我们输出的是每天有多少个细菌分裂,显然就是数组 a 的差分数组了

代码:

#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<unordered_map>
using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=1e5+100;int main()
{
#ifndef ONLINE_JUDGE
//  freopen("input.txt","r",stdin);
//  freopen("output.txt","w",stdout);
#endif
//  ios::sync_with_stdio(false);int w;cin>>w;while(w--){int n;scanf("%d",&n);vector<int>ans;for(int i=1;i<=n;i<<=1){ans.push_back(i);n-=i;}if(n)ans.push_back(n);sort(ans.begin(),ans.end());printf("%d\n",ans.size()-1);for(int i=0;i<ans.size()-1;i++)printf("%d ",ans[i+1]-ans[i]);puts("");}return 0;
}

CodeForces - 1348D Phoenix and Science(贪心)相关推荐

  1. codeforces Gym 100338E Numbers (贪心,实现)

    题目:http://codeforces.com/gym/100338/attachments 贪心,每次枚举10的i次幂,除k后取余数r在用k-r补在10的幂上作为候选答案. #include< ...

  2. Codeforces 671E Organizing a Race (贪心、线段树)

    题目链接 https://codeforces.com/contest/671/problem/E 题解 完全不会做--基本是抄lk的代码 ruogu的题解: https://www.luogu.co ...

  3. CodeForces - 1529E Trees of Tranquillity(贪心+线段树)

    题目链接:https://vjudge.net/problem/CodeForces-1529E 题目大意:给出两棵根节点为 111 的树,分别称为 AAA 树和 BBB 树,现在通过两棵树可以构造出 ...

  4. [CodeForces 1603C] Extreme Extension(贪心 + 数论分块优化dp)

    problem CodeForces solution observation1:\text{observation1}:observation1: 对于一个非空子段 [l,r][l,r][l,r], ...

  5. codeforces 416C C. Booking System(贪心)

    题目链接: codeforces 416C 题目大意: 给出n个请求,每个请求包括客人数量和支付金额,再给出m个桌子,包括桌子大小,问如何安排才能最大盈利.给出最大盈利和一个能够最大盈利的方案. 题目 ...

  6. Codeforces 540B School Marks 【贪心构造】

    题目链接:Codeforces 540B School Marks Little Vova studies programming in an elite school. Vova and his c ...

  7. CodeForces 508E Arthur and Brackets 贪心

    题目: E. Arthur and Brackets time limit per test 2 seconds memory limit per test 128 megabytes input s ...

  8. Codeforces 797C Minimal string【贪心】

    题意: 给出了字符串s的内容,字符串t,u初始默认为空,允许做两种操作: 1.把s字符串第一个字符转移到t字符串最后. 2.把t字符串最后一个字符转移到u字符串最后. 最后要求s.t字符串都为空,问u ...

  9. codeforces 719C (复杂模拟-四舍五入-贪心)

    题目链接:http://codeforces.com/problemset/problem/719/C 题目大意: 留坑... 转载于:https://www.cnblogs.com/A--Q/p/5 ...

最新文章

  1. 211高校导师:我到底想要什么样的研究生?
  2. “天才少年”曹原再次连发2篇Nature!在魔角石墨烯取得系列新进展
  3. [20150113]关于oracle的存储结构.txt
  4. 下一个十年需要的五大IT技能
  5. Docker image Introduce
  6. Javascript学习笔记一 之 数据类型
  7. Web开发与设计之Google兵器谱-Web开发与设计利器
  8. 判断response.data是否为空
  9. Audio / Video Playback
  10. 计算机与科学a,[第一单元] 计算机与计算机科学-课文A参考译文
  11. php5.2 xampp,使用XAMPP,如何將PHP 5.3替換為PHP 5.2?
  12. ERP的主要功能模块简介
  13. 述职答辩提问环节一般可以问些什么_述职被高频问到的15问
  14. 游戏一直被攻击掉线卡顿是什么原因?服务器被攻击怎么办?
  15. 软件工程应用与实践(2)——application.properties配置文件分析
  16. epics installation
  17. 10.setTimeout和setInterval的区别以及模拟实现:
  18. OOA/OOD/OOP(了解)
  19. 黑洞真实模样,时空弯曲如何弯的?
  20. 看动画理解「链表」实现LRU缓存淘汰算法

热门文章

  1. 智伴机器人课文跟读哪里有_火了!智伴机器人竟然出现在2018年高考试卷
  2. MySQL非等值连接
  3. 初识Docker-Docker架构
  4. 什么时候用#{},什么时候用${}?
  5. 循环尝试,不释放CPU
  6. 微服务网关Gateway-PrefixPath讲解
  7. flume高可用-failover-配置文件编写
  8. 数据库-多表查询-笛卡尔积
  9. linux 系统arp检测工具,基于LinuxARP检测与防御系统.doc
  10. ft232r usb uart驱动 win7_新电脑想装WIN7,技术员让装WIN10,不是忽悠你,是有原因的...