UVA - 12627 - Erratic Expansion(找规律递归)
递归找规律即可,用前b行减去前a-1行的红气球个数求解,细节见代码
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cctype>
#include<cmath>
#include<iostream>
#include<sstream>
#include<iterator>
#include<algorithm>
#include<string>
#include<vector>
#include<set>
#include<map>
#include<stack>
#include<deque>
#include<queue>
#include<list>
typedef long long ll;
typedef unsigned long long llu;
const int MAXN = 100 + 10;
const int MAXT = 10000 + 10;
const int INF = 0x7f7f7f7f;
const double pi = acos(-1.0);
const double eps = 1e-6;
using namespace std;int k, a, b;
llu ans, c[40];//c存的是经过几次膨胀后所得的红气球总数
//每次膨胀过后,红气球总数*3
void init(){c[0] = 1;for(int i = 1; i < 40; ++i) c[i] = c[i - 1] * 3;
}llu dfs(int depth, int t){if(t <= 0) return 0; //如果层数小于等于0则不存在红气球if(depth == 0) return 1; //如果膨胀0次则只有一个红气球llu tmp = 1 << (depth - 1); //若膨胀depth-1次,tmp为行或列的大小if(t >= tmp) return dfs(depth - 1, t - tmp) + 2 * c[depth - 1];//若现在所处行超过了tmp,则把四个depth-1中的顶上两个取出//然后加剩余一个的前t-tmp行else return 2 * dfs(depth - 1, t);//否则,就取四个depth-1上的顶上两个的前t行即可
}int main(){init();int T;scanf("%d", &T);for(int ca = 1; ca <= T; ++ca){scanf("%d%d%d", &k, &a, &b);ans = dfs(k, b) - dfs(k, a - 1); //答案为膨胀k次前b行的个数 - 膨胀k次前a-1行的个数printf("Case %d: %llu\n", ca, ans);}return 0;
}
UVA - 12627 - Erratic Expansion(找规律递归)相关推荐
- Uva 12627 Erratic Expansion(不稳定膨胀)
题目链接 : Erratic Expansion 大致题意: 开始时有一个红气球,每过一段时间,气球会膨胀, 一个红气球膨胀成三个红气球,一个蓝气球膨胀成四个蓝气球(如图) 题目输入正整数n表示n组数 ...
- UVA - 12627 Erratic Expansion : 递归
题目点此跳转 思路 题目意思是(书上原话)一开始有一个红气球.每小时后,一个红气球会变成3个红气球和一个蓝气球,一个蓝气球会变成4个蓝气球,如图所示分别是经过0, 1, 2, 3小时后的情况.经过k ...
- UVA 12627 Erratic Expansion
题目大致意思为 告诉你一个红球为0时状态,已知一个红球每过一个时间会变为文档所示图中的3红1蓝,而蓝球每过一个时间则会变为4个蓝球.问在某一时刻,h1与h2之间的红球有几个. RT,这一题刚看到的时候 ...
- UVa 12627 Erratic Expansion - 分治
因为不好复制题目,就出给出链接吧: Vjudge传送门[here] UVa传送门[here] 请仔细看原题上的那幅图,你会发现,在时间t(t > 0),当前的气球构成的一幅图,它是由三个时间为( ...
- UVa 12627 - Erratic Expansion
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- Uva 12627 Erratic Expansion
这道题大体意思是利用一种递归规则生成不同的气球,问在某两行之间有多少个红气球. 我拿到这个题,一开始想的是递归求解,但在如何递归求解的思路上我的方法是错误的.在研读了例题上给出的提示后豁然开朗(顺便吐 ...
- uva 12627 Erratic Expansion
原题: Piotr found a magical box in heaven. Its magic power is that if you place any red balloon inside ...
- uva 12627——Erratic Expansion
题意:一开始有1个红气球,每小时一个红气球都会变成3个红气球和1个蓝气球,1个蓝气球会变成4个蓝气球,问k个小时后a行到b行的红气球的数量. 思路:递推.a为偶数时,计算a+1到b以及a本行的红气球数 ...
- Uva - 12627 - Erratic Expansion
找到递推公式,题目就引刃而解了.数学公式博文没办法写,就写在了word上,切过来了: 用 f 或者 g 都能求出,我两个方法都试了,结果用 g 要比 f 快了近一倍,原本以为 f 会快些,可能是因为往 ...
最新文章
- python基础实验报告答案_Python基础(上)实验报告
- [转载]VC6下安装STLport-5.2.1
- 使用Hystrix守护应用(3)
- 机器学习导论(张志华):EM收敛性原理
- java se 导原码_Java SE 8新功能导览:Java开发世界中的重大变化
- 吴恩达机器学习之逻辑回归理论部分
- 使用Python批量下载数据
- 3.2. 开始入住实验
- python识别图片文字、并返回文字坐标_简易OCR图片文字识别工具的进一步改进(增加显示图片的功能)...
- APP测试点总结(表格形式)
- postman安装报错 无法定位_接口测试工具postman安装及使用
- linux格式化u盘保护,linux系统怎么避免u盘被写保护
- pdf文件转换成word文本文档去水印怎么弄
- HTTP代理是什么意思?
- 实验吧 天网管理系统writeup
- 长尾关键词排名优化技巧
- Android 程序框架设计
- 模拟计算机打字,JS实现电脑虚拟键盘打字测试
- 【LeetCode 单链表专项】反转链表II(92)
- display常用属性值
热门文章
- 机械臂操作运动传送带上的物体
- linux不同用户环境变量问题
- Chapter21: Consideration in the Application of Artificial Intelligence to Pharmacokinetic Prediction
- html5 堆叠柱状,Highcharts 堆叠柱形图
- 从阅文合同风波,看IP源头与网文产业的下一站
- java合法标识符_JAVA合法标识符
- 三十四、Fluent液体喷雾蒸发模拟
- 导向滤波快速导向滤波及引导图的选择
- 【转】python获取计算股票技术指标DIF/DEA/MACD
- 海外邮件经常退信怎么办啊?