[BZOJ2036]聪明的阿卑多

试题描述

也许你从没听说过阿卑多,但你一定知道他爷爷的爷爷的爷爷,那就是聪明绝顶的阿凡提先生。是的,阿卑多也是个聪明的小孩。 一天,阿卑多骑着他的小毛驴,在小镇上晃悠,正好遇上了小巴依——那个自以为是的小财主。小巴依正在炫耀他的金币: “你们见过这样的金币么?这可不是一般的金币,你看它们多大多重啊!最主要的是,它们每个上面都刻有我的名字和一个编号,是独一无二的!看看,从我出生开始,每 \(2\) 个月,爸爸便给我 \(1\) 个特做的大金币,并从 \(1\) 开始编号,现在我已经有 \(60\) 枚了,哈哈……” 小巴依见了阿卑多,于是便想考一考他:“阿卑多,听说你是最聪明的。看见我每个金币上的数字了吗?你现在拿取一半的金币,并能用你拿的若干金币上的数的和表示我的任意一枚金币上的数。如果你能办到,那么就奖你一枚金币;如果不能,就给我做三年长工好了。” 阿卑多想了一想,说:“我可以只拿 \(\frac{1}{10}\) 就办到,不过如果我办到了,你就得分一半金币给我。” \(\frac{1}{10}\)?小巴依心想,你准备给我当长工好了。 于是阿卑多开始取金币…… 自然,阿卑多出色的完成了任务,得到了 \(30\) 枚金币,同样的,他把这些金币都分给了穷人们。 给你的任务就不同了。

输入

一个数 \(n(1 \le n \le 1000\) 表示金币枚数(金币上的数分别为 \(1\) 到 \(n\))

输出

两个数,阿卑多最少要拿的金币数以及不同的方案数。

输入示例

6

输出示例

3 2

数据规模及约定

见“输入

题解

首先第一问显然可以贪心做(受二进制的启发)。

第二问其实也是基于这个思想,我们从小到大依次选数,如果已经选的数之和加 \(1\) 大于等于当前要选的数,就可以选这个数。第一问我们已经解决了,步数肯定不会超过 \(logn\),所以可以将它设进 dp 状态里:\(f(i, s, m)\) 表示已选 \(i\) 个数,当前总和是 \(s\),选出的所有数都严格小于 \(m\) 的方案数,然后就可以 dp 啦(注意 \(s\) 在超过 \(n\) 的时候和 \(n\) 取 \(min\) 就好了)。

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cctype>
#include <algorithm>
using namespace std;
#define rep(i, s, t) for(int i = (s); i <= (t); i++)
#define dwn(i, s, t) for(int i = (s); i >= (t); i--)int read() {int x = 0, f = 1; char c = getchar();while(!isdigit(c)){ if(c == '-') f = -1; c = getchar(); }while(isdigit(c)){ x = x * 10 + c - '0'; c = getchar(); }return x * f;
}#define maxn 1010
#define maxlog 11int n, step, f[maxlog][maxn][maxn];int main() {n = read();int sum = 0;rep(i, 1, n) if(sum < i) sum += i, step++;printf("%d ", step);f[0][0][1] = 1;rep(i, 0, step) rep(s, 0, n) rep(mx, 1, n) if(f[i][s][mx]) {if(mx <= s + 1 && i < step) f[i+1][min(s+mx,n)][mx+1] += f[i][s][mx];f[i][s][mx+1] += f[i][s][mx];}printf("%d\n", f[step][n][n+1]);return 0;
}

转载于:https://www.cnblogs.com/xiao-ju-ruo-xjr/p/7807907.html

[BZOJ2036]聪明的阿卑多相关推荐

  1. 520这天,我突然意识到,她根本配不上我这么聪明的男人

    网络情人节 对于即将到来的网络情人节(520),程序员是怎么看待它的呢? 不知道大家是否会期待这天的到来,但对于我这个程序猿来说: 从主观来讲,不放假的节日,都不算节日 从客观来讲,由消费带动的节日, ...

  2. 诚信,聪明,快乐,地位与竞争

    从前,有两个好朋友,一个叫「聪明」,一个叫「诚信」.某日,两人结伴乘船出游,不巧,在海上遇到大风暴,两人乘坐的船沉没了,救生艇上仅仅于一个位置.那个叫「聪明」的年轻人,一看形势不好,为了争夺救生艇上的 ...

  3. 小白兔写话_聪明的小白兔看图写话

    内容简介:有一只孤独又美丽的小白兔住在一个大山坡,小白兔每天往自己的身上撒好香的香水,有一只狡猾的狐狸就住.. 本文<聪明的小白兔看图写话>由小学生作文大全整理,仅供参考.如果觉得很不错, ...

  4. 最常见的《最聪明的技巧》实战讲解!

    ×××最聪明的玩法[ x u y 七 六 八]掌握更多+薇,10年经验都总结分享 1--看奇偶,当快速3制浆数有25左右时找到对,没有全对或奇数对,我们可以加入所有奇数对来进行转换,具体来说就是113 ...

  5. 阿里巴巴领导抱怨家里有矿的应届生不好带!聪明效率高,但从不加班,也不做职业规划!画饼谈心也没用,怎么办?...

    都说年轻员工不好带,太有个性,不够听话,一言不合就离职,那么家里有矿的年轻员工就更不好带了.一个阿里巴巴的管理人员就遇到了这样窘境--"遇到家里有矿的应届生怎么管理"? 能看出楼主 ...

  6. 18岁智商低的表现_吃手是宝宝聪明的信号?婴儿智商高的5个讯号,吃手只是其中一个...

    宝宝出生以后,身体健康.聪明伶俐是所有父母共同的愿望和期盼.然而,孩子的智商受到遗传和后天环境等多种因素的影响,可遇不可求.研究发现,聪明的孩子在生活中常常会有一些特殊的爱好,如果家长能及早发现,进行 ...

  7. 乌鸦可能是灵长类动物以外最聪明的动物

    corvids 这是 BBC FUTURE 上的一篇挺有意思的英文文章,把它翻译了一下(部分内容有增删),分享给大家. 今天这个主角乌鸦的名字叫贝蒂.她正走向明星之路.一群牛津大学的科学家惊奇地看着她 ...

  8. 集成的分层强化学习,让人工智能在解决智能问题时表现得更聪明

    本文约2700字,建议阅读6分钟 本文概述了分层问题解决的认知基础,以及如何在当前的 HRL 架构中实现这些基础. 根据认知心理学的资料,生物主体复杂问题解决行为的发展,依赖于分层认知机制.分层强化学 ...

  9. Nature:越运动越聪明!躺平小鼠这样做,长出更多脑细胞

    本文约2000字,建议阅读5分钟 本文带你了解越运动越聪明! 左手咖啡右手"快乐水",上班久坐下班"葛优躺"的你,最近有没有感觉到,脑子有那么点儿不好使?似乎记 ...

最新文章

  1. 7个实战案例、24个学习视频、12G干货资料...今天带你免费入门Python数据分析!...
  2. 静态路由和浮动路由的配置
  3. BZOJ2584 : [Wc2012]memory
  4. Linux下服务器模型 【转载】
  5. HD 2602 Bone Collector (0-1背包)
  6. Mac系统安装nginx+rtmp模块
  7. Two Arrays And Swaps CodeForces - 1353B(贪心+分类)
  8. 因此,甲骨文杀死了java.net
  9. docker公共存储库_查找并修复docker镜像安全漏洞
  10. 收藏 | 三张图读懂机器学习:基本概念、五大流派与九种常见算法
  11. 转载:迷你云 – 搭建自己的本地多人团队Dropbox 服务
  12. HDU 4553:约会安排(区间合并)
  13. 带经纬度的水印相机_这个国庆节,元道经纬相机做交警人员的好帮手
  14. 微博爬虫思路:Python通过移动端接口爬取,简单易操作
  15. java-php-python-ssm抑郁症患者博客交流平台计算机毕业设计
  16. 通过wifi共享使Linux设备连接网络
  17. 小米airdots2蓝牙耳机连上手机后没有声音
  18. go1.17+中的GOPATH
  19. java做服务端,FLASH做客户端交互总结
  20. 【daisy-framework】MySQL 开发规范

热门文章

  1. 收藏 | 图像识别的可视化解释史
  2. ios加载本地html懒加载图片方案,IOS开发中加载大量网络图片优化方法
  3. 写给萌新们的Python安装及环境配置(anaconda,pycharm,GPU)教程
  4. Spark常用的算子以及Scala函数总结
  5. ubuntu14.04下 安装matlabR2015b遇到的一些问题及其解决方法
  6. Bezier(贝塞尔)曲线的轨迹规划在自动驾驶中的应用(二)
  7. 默认文献工具_如何在浩瀚的Pubmed中快速找到自己需要的文献?分享一个小工具!...
  8. java固定数组_Java在固定长度的数组里加入一个数
  9. 《Kali+Linux渗透测试的艺术》学习总结之----Kali Linux简介
  10. Java基础---数组内容详解