首页 > 其他分享 >[leetcode每日一题]11.20

[leetcode每日一题]11.20

时间:2022-11-20 21:11:19浏览次数:90  
标签:每日 11.20 poured 香槟 query 玻璃杯 杯子 leetcode row

​799. 香槟塔​

我们把玻璃杯摆成金字塔的形状,其中 第一层 有 ​​1​​ 个玻璃杯, 第二层 有 ​​2​​ 个,依次类推到第 100 层,每个玻璃杯 (250ml) 将盛有香槟。

从顶层的第一个玻璃杯开始倾倒一些香槟,当顶层的杯子满了,任何溢出的香槟都会立刻等流量的流向左右两侧的玻璃杯。当左右两边的杯子也满了,就会等流量的流向它们左右两边的杯子,依次类推。(当最底层的玻璃杯满了,香槟会流到地板上)

例如,在倾倒一杯香槟后,最顶层的玻璃杯满了。倾倒了两杯香槟后,第二层的两个玻璃杯各自盛放一半的香槟。在倒三杯香槟后,第二层的香槟满了 - 此时总共有三个满的玻璃杯。在倒第四杯后,第三层中间的玻璃杯盛放了一半的香槟,他两边的玻璃杯各自盛放了四分之一的香槟,如下图所示。

[leetcode每日一题]11.20_dp

现在当倾倒了非负整数杯香槟后,返回第 ​​i​​ 行 ​​j​​ 个玻璃杯所盛放的香槟占玻璃杯容积的比例( ​​i​​ 和 ​​j​​ 都从0开始)。

示例 1:
输入: poured(倾倒香槟总杯数) = 1, query_glass(杯子的位置数) = 1, query_row(行数) = 1
输出: 0.00000
解释: 我们在顶层(下标是(0,0))倒了一杯香槟后,没有溢出,因此所有在顶层以下的玻璃杯都是空的。

示例 2:
输入: poured(倾倒香槟总杯数) = 2, query_glass(杯子的位置数) = 1, query_row(行数) = 1
输出: 0.50000
解释: 我们在顶层(下标是(0,0)倒了两杯香槟后,有一杯量的香槟将从顶层溢出,位于(1,0)的玻璃杯和(1,1)的玻璃杯平分了这一杯香槟,所以每个玻璃杯有一半的香槟。

示例 3:

输入: poured = 100000009, query_row = 33, query_glass = 17
输出: 1.00000

提示:

  • ​0 <= poured <= 109
  • ​0 <= query_glass <= query_row < 100​

Solution

[leetcode每日一题]11.20_dp_02

想复杂了。

首先将所有的 poured 杯香槟全部倒到 row = 0 的这个杯子中。当有溢出时,再将溢出的部分平均倒到下一层的相邻的两个杯子中。而除了row = 0 的这个杯子中的香槟是直接来自于外部,其他杯子中的香槟均来自于它的上一层的相邻的一个或两个杯子中溢出的香槟。

所以根本不需要考虑那么多,直接一层一层不考虑溢出地遍历,看看每一层能有多少香槟。之后再把溢出的部分交给下面即可。

代码(C++)

class Solution {
public:
double champagneTower(int poured, int query_row, int query_glass) {
double f[105][105] = {0};
f[0][1] = poured;
for(int i=1;i<=query_row;i++){
for(int j=1;j<=i+1;j++){
f[i][j] = (max(f[i-1][j-1]-1, 0)+max(f[i-1][j]-1, 0))/2;
}
}
return f[query_row][query_glass+1] < 1 ? f[query_row][query_glass+1] : 1;
}
double max(double i, double j){
return i>j?i:j;
}
};

又是被每日一题拿捏的一天。不说了去看论文和Fisher信息量对线去了。

标签:每日,11.20,poured,香槟,query,玻璃杯,杯子,leetcode,row
From: https://blog.51cto.com/u_15763108/5872006

相关文章

  • 11.20.2
    #include<stdio.h>intf(intx);intmain(){ intx; scanf("%d",&x); printf("%d",f(x));     return0;}intf(intx){inti,sum=10; if(x>1){ for(i=......
  • 考研记录Week26【11.14~11.20】
    一、本周总结:使用时间:总计14h21min,政治8h10min,英语6h11min.完成任务:英语:1.真题复习政治:1.肖秀荣8套卷完成7套卷二、下周规划:数学:1.【高数强化】高数辅导讲义+【线代强化......
  • 22.11.20 ICPC合肥站 打星记录
       A,B,H签到。B题:注意区分相对误差与绝对误差!!小数相对误差小于1e-6,至少要输出十二位!G题优先队列。场上十几分钟就想出来了,表扬自己一波,留个坑位写题解。M题情况......
  • leetcode343-数拆分。还需要继续琢磨
    343.整数拆分 这道题的关键点在于下面这两个式子。比如要计算dp【10】,就逐个比较1*dp【9】,2*dp【8】,3*dp【7】,还有1*9,2*8,3*7,才考虑了所有的情况如果使用dp[i]=max(d......
  • 本周总结11.20
    周末总结1.软件开发架构2.网络编程3.OSI七层协议4.socket模块5.黏包现象6.并发编程理论7.多道技术8.进程理论9.创建进程的方式10.进程的join方式11.进程对象的......
  • cv学习总结(11.14-11.20)
     本周主要完成了assignment2中的connected_layer部分的代码,跟assignment1中的two_layer_net相比,虽然整体思路都是实现全连接的网络,但是connect_layer可以实现任意多层的......
  • 谁是你的潜在朋友(冬季每日一题 9)
    “臭味相投”——这是我们描述朋友时喜欢用的词汇。两个人是朋友通常意味着他们存在着许多共同的兴趣。然而作为一个宅男,你发现自己与他人相互了解的机会并不太多。幸运的是......
  • 最大面积(冬季每日一题 8)
    给定一个的矩阵,矩阵下标从有个询问,第个询问为:将矩阵中()的元素改成之后,只包含注意:每次询问均是独立的。询问方格内元素可能本来就是。子矩阵的面积是指矩阵......
  • 一些闲话(更新于2022.11.20)
    这里是我的一些闲话和做题被题目暴打记录会保持一定的更新频率不可能的2022.11.20集训,趁老师讲题申请了一个博客,没想到一次通过了纪念第一次把老师布置的专题AK了不......
  • [LeetCode] 2221. Find Triangular Sum of an Array
    Youaregivena0-indexedintegerarraynums,wherenums[i]isadigitbetween0and9(inclusive).Thetriangularsumofnumsisthevalueoftheonlyelemen......