Pyramid of Glasses 酒杯金字塔 [CF-676B]
O(n^2)的做法:一次性地将酒倒入第一个杯子,然后两层循环扫描每个杯子,把酒量超过1的杯子中的酒向左下向右下溢出。(其实是模拟啊)
注意要用数组double型。
#include<iostream>
#include<cstdio>
using namespace std;
double a[1005][1005];
int t,n,ans;
int main()
{
scanf("%d%d",&n,&t);
a[1][1]=(double)t;
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++){
if(a[i][j]>1){
a[i+1][j]+=(a[i][j]-1)/2.0;
a[i+1][j+1]+=(a[i][j]-1)/2.0;
a[i][j]=1;
}
}
for(int i=1;i<=n;i++)
for(int j=1;j<=i;j++)
if(a[i][j]==1) ans++;
printf("%d",ans);
return 0;
}
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步