题目链接:
很水的递推;
题目大意:
有一个n层的酒杯金字塔,每个酒杯容量为1。每秒钟,会有1份酒倒到最上方的酒杯里。当某个酒杯装满时,它会以同样的流量溢出到下一层的两个酒杯之中。求t秒过后有多少装满的酒杯。
可以假设第一层有容积为T的酒,对于每一个酒杯来说来说,如果now>=1,下一层的左右两边就分别 += (now-1)/2;
上代码
1 #include2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #define LL long long12 using namespace std;13 int n,t,ans;14 double dp[15][15];15 int main(){16 scanf("%d%d",&n,&t);17 dp[1][1] = t;18 for(int i = 1;i <= n;i++)19 for(int j = 1;j <= i;j++){20 if(dp[i][j] >= 1.0){21 ans++;22 dp[i+1][j] += (dp[i][j]-1)/2;23 dp[i+1][j+1] += (dp[i][j]-1)/2;24 }25 }26 printf("%d\n",ans);27 return 0;28 }