找到递推公式,题目就引刃而解了。数学公式博文没办法写,就写在了word上,切过来了:

用 f 或者 g 都能求出,我两个方法都试了,结果用 g 要比 f 快了近一倍,原本以为 f 会快些,可能是因为往上走红气球天多的缘故。

AC代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cctype>
#include <cstring>
#include <string>
#include <sstream>
#include <vector>
#include <set>
#include <map>
#include <algorithm>
#include <stack>
#include <queue>
#include <bitset>
#include <cassert>
#include <cmath>
#include <functional>using namespace std;long long c(int k)
{return k == 0 ? 1 : c(k - 1) * 3;
}long long f(int k, int i)
{if (i == 0) {return 0;}if (k == 0) {return 1;}int k2 = 1 << (k - 1); // 2的k-1次方if (i >= k2) {return f(k - 1, i - k2) + c(k - 1) * 2;}else {return f(k - 1, i) * 2;}
}long long g(int k, int i)
{if (i == 0) {return 0;}if (k == 0) {return 1;}int k2 = 1 << (k - 1); // 2的k-1次方if (i >= k2) {return 2 * g(k - 1, i - k2) + c(k - 1);}else {return g(k - 1, i);}
}int main()
{ios::sync_with_stdio(false);int T;cin >> T;int kase = 0;while (T--) {int k, a, b;cin >> k >> a >> b;cout << "Case " << ++kase << ": ";//cout << f(k, b) - f(k, a - 1) << endl;cout << g(k, (1 << k) - a + 1) - g(k, (1 << k) - b) << endl;}return 0;
}

Uva - 12627 - Erratic Expansion相关推荐

  1. Uva 12627 Erratic Expansion(不稳定膨胀)

    题目链接 : Erratic Expansion 大致题意: 开始时有一个红气球,每过一段时间,气球会膨胀, 一个红气球膨胀成三个红气球,一个蓝气球膨胀成四个蓝气球(如图) 题目输入正整数n表示n组数 ...

  2. UVa 12627 Erratic Expansion - 分治

    因为不好复制题目,就出给出链接吧: Vjudge传送门[here] UVa传送门[here] 请仔细看原题上的那幅图,你会发现,在时间t(t > 0),当前的气球构成的一幅图,它是由三个时间为( ...

  3. UVa 12627 - Erratic Expansion

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  4. uva 12627——Erratic Expansion

    题意:一开始有1个红气球,每小时一个红气球都会变成3个红气球和1个蓝气球,1个蓝气球会变成4个蓝气球,问k个小时后a行到b行的红气球的数量. 思路:递推.a为偶数时,计算a+1到b以及a本行的红气球数 ...

  5. Uva 12627 Erratic Expansion

    这道题大体意思是利用一种递归规则生成不同的气球,问在某两行之间有多少个红气球. 我拿到这个题,一开始想的是递归求解,但在如何递归求解的思路上我的方法是错误的.在研读了例题上给出的提示后豁然开朗(顺便吐 ...

  6. UVA 12627 Erratic Expansion

    题目大致意思为 告诉你一个红球为0时状态,已知一个红球每过一个时间会变为文档所示图中的3红1蓝,而蓝球每过一个时间则会变为4个蓝球.问在某一时刻,h1与h2之间的红球有几个. RT,这一题刚看到的时候 ...

  7. UVA - 12627 Erratic Expansion : 递归

    题目点此跳转 思路  题目意思是(书上原话)一开始有一个红气球.每小时后,一个红气球会变成3个红气球和一个蓝气球,一个蓝气球会变成4个蓝气球,如图所示分别是经过0, 1, 2, 3小时后的情况.经过k ...

  8. UVA - 12627 - Erratic Expansion(找规律递归)

    递归找规律即可,用前b行减去前a-1行的红气球个数求解,细节见代码 #include<cstdio> #include<cstring> #include<cstdlib ...

  9. uva 12627 Erratic Expansion

    原题: Piotr found a magical box in heaven. Its magic power is that if you place any red balloon inside ...

最新文章

  1. MySQL 性能监控4大指标——第一部分
  2. 多个类的DLL封装及调用
  3. idea本地跑如何看gc日志_牛逼了!用 IDEA 扒出了开源组件导致FGC的原因
  4. linux mint 蓝牙,Linuxmint19蓝牙连接的问题
  5. python web框架对比_Python六大开源框架对比
  6. java线程——中断线程+线程状态+线程属性(优先级)
  7. 电子技术基础数字部分第六版_大部分数字图书馆技术特点与应用分析
  8. yolo 视频场景行为数据集
  9. web root下放置图片_Apache HTTP存在提权漏洞,威胁共享Web主机安全性
  10. 常见OJ提交结果对照表
  11. LCD1602动态显示
  12. 旋转矩阵(方向余弦阵)
  13. linux复制文件命令
  14. 同款蓝牙耳机为什么会串联_为什么蓝牙耳机不能两个同时使用
  15. Linux开关键盘背光灯
  16. 空值的约束条件之unique约束
  17. threejs修改旋转中心 小程序
  18. TensorRT文档翻译
  19. Oracle中动态拼接参数怎么传,急oracle 动态游标传日期参数是如何传的呢,请赐教,多谢...
  20. 阿里上市:盘点马云这些年

热门文章

  1. Java--批量短连接生成工具
  2. 东南大学计算机考研难不难,东南大学考研难吗?一般要什么水平才可以进入?...
  3. 春节必读用语的英语说法
  4. java none怎么用tomcat_关于如何在Tomcat中使用JavaBean
  5. jsp tomcat7 mysql_最简单的Jsp环境配置及数据库连接调试(Jdk7+Tomcat7+Mysql5.5)
  6. 机器学习与各种技术之间的关系
  7. 大学Python编程试卷真题!用python循环,输出1+11+111+1111+11111的值
  8. 细谈渗透测试的前期工作——信息收集
  9. 理解字节填充和零比特填充
  10. 2017中学生计算机竞赛预赛试题答案,2017年初中化学竞赛初赛试题