博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Pyramid of Glasses(递推)
阅读量:5234 次
发布时间:2019-06-14

本文共 2659 字,大约阅读时间需要 8 分钟。

Pyramid of Glasses
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

Mary has just graduated from one well-known University and is now attending celebration party. Students like to dream of a beautiful life, so they used champagne glasses to construct a small pyramid. The height of the pyramid is n. The top level consists of only 1 glass, that stands on 2glasses on the second level (counting from the top), then 3 glasses on the third level and so on.The bottom level consists of n glasses.

Vlad has seen in the movies many times how the champagne beautifully flows from top levels to bottom ones, filling all the glasses simultaneously. So he took a bottle and started to pour it in the glass located at the top of the pyramid.

Each second, Vlad pours to the top glass the amount of champagne equal to the size of exactly one glass. If the glass is already full, but there is some champagne flowing in it, then it pours over the edge of the glass and is equally distributed over two glasses standing under. If the overflowed glass is at the bottom level, then the champagne pours on the table. For the purpose of this problem we consider that champagne is distributed among pyramid glasses immediately. Vlad is interested in the number of completely full glasses if he stops pouring champagne in t seconds.

Pictures below illustrate the pyramid consisting of three levels.

Input

The only line of the input contains two integers n and t (1 ≤ n ≤ 10, 0 ≤ t ≤ 10 000) — the height of the pyramid and the number of seconds Vlad will be pouring champagne from the bottle.

Output

Print the single integer — the number of completely full glasses after t seconds.

Examples
input
3 5
output
4
input
4 8
output
6
Note

In the first sample, the glasses full after 5 seconds are: the top glass, both glasses on the second level and the middle glass at the bottom level. Left and right glasses of the bottom level will be half-empty.

 

题意:每1s会从上面多出一杯子的水,然后问你t秒后会有多少个杯子是满的,n代表有多少层杯子

题解:找到递推式的话,这题并不难。我们考虑,每个杯子(除了最上面那个),他们获得的水都是从上面两边获得,而上面的杯子的水只会流向两边,那么递推式就很明显了。我们假设杯子容量为1,那状态就是dp[i][j]=(dp[i-1][j-1]-1)/2+(dp[i-1][j]-1)/2;初始条件dp[1][1]=t*1;一路推下来,记录dp[i][j]>=1的个数,即为答案。

#include 
using namespace std;double dp[15][15];int main(){ int n,t,ans=1; scanf("%d%d",&n,&t); dp[1][1]=t; for (int i=2;i<=n;i++) for (int j=1;j<=i;j++) { if (dp[i-1][j-1]>1) dp[i][j]+=(dp[i-1][j-1]-1)/2; if (dp[i-1][j]>1) dp[i][j]+=(dp[i-1][j]-1)/2; if (dp[i][j]>=1) ans++; } printf("%d\n",t==0?0:ans);}

 

 

 

转载于:https://www.cnblogs.com/scaugsh/p/5535072.html

你可能感兴趣的文章
Windows7如何清理/禁用搜索历史记录
查看>>
MySQL多实例配置
查看>>
CodeForces - 877B Nikita and string
查看>>
nyoj 21三个水杯(搜索)
查看>>
vb.net 浏览文件夹读取指定文件夹下的csv文件 并验证,显示错误信息
查看>>
thinkpad T420屏幕对比度设置
查看>>
20181212作业
查看>>
网络操作系统第一、二章习题
查看>>
如何做一名好的web安全工程师?
查看>>
shell 面试题
查看>>
企业选择 多云管理平台 六大注意事项
查看>>
命名规范
查看>>
sql server去掉某个字段前后空格问题
查看>>
VMware系统运维(十四)部署虚拟化桌面 Horzion View Manager 5.2 配置许可
查看>>
WebForm-带接口工厂模式的三层架构
查看>>
按钮的设计
查看>>
三月七号的内容
查看>>
泛型数据生成Excel
查看>>
Web API学习——Web API 强势入门指南
查看>>
URL与URI的区别
查看>>