蓝桥杯每日一题2023.10.26

测试次数 - 蓝桥云课 (lanqiao.cn)

题目描述

题目分析

对于本题我们可以使用动态规划来分析

dp[i][j]代表剩余i层,j台手机的情况下对应的测试数量

分类进行讨论一下:

1.当只剩下一台手机的时候,只能从第一层一层一层往上尝试,尝试到第几层摔坏就是几

2.当j = 2,假设剩余k层,总层数为n,dp[k][2]可以分为以下两种情况:

①摔坏 dp[k][2] = dp[k - 1][1];

②没摔坏 dp[k][2] = dp[n - k][2] //n - k相当于把下面的k层全部砍掉

当j = 3同理

由于考虑的是最坏的情况,所以我们需要在手机摔坏和没摔坏这两种情况中取到最大的测试次数,由于我们要考虑最坏的最优情况,所以我们要在每层最大的里面选择最小的

cpp 复制代码
#include<bits/stdc++.h>
using namespace std;
const int N = 2e3 + 10;
int dp[N][N];
int main()
{
	ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
	int l = 1, r = 1000;
	for(int i = 1; i <= 1000; i ++)dp[i][1] = i;//第一部手机 
	for(int j = 2; j <= 3; j ++)//第二和第三部手机 
	{
		for(int i = 1; i <= 1000; i ++)
		{
			dp[i][j] = 1e9 + 10;
			for(int k = 1; k <= i; k ++)//手机在第k层是否摔坏 
			{
				dp[i][j] = min(max(dp[k - 1][j - 1], dp[i - k][j]) + 1, dp[i][j]); 
			}
		}
	}
	cout << dp[1000][3];
	return 0;
}
相关推荐
patrickpdx1 小时前
leetcode:相等的有理数
算法·leetcode·职场和发展
hn小菜鸡1 小时前
LeetCode 1971.寻找图中是否存在路径
算法·leetcode·职场和发展
良木生香2 小时前
【数据结构-初阶】详解栈和队列(1)---栈
c语言·数据结构·算法·蓝桥杯
Swift社区3 小时前
LeetCode 450 - 删除二叉搜索树中的节点
算法·leetcode·职场和发展
测试老哥3 小时前
2026软件测试面试大全(含答案+文档)
自动化测试·软件测试·python·测试工具·面试·职场和发展·测试用例
yaoh.wang3 小时前
力扣(LeetCode) 28: 找出字符串中第一个匹配项的下标 - 解法思
python·程序人生·算法·leetcode·面试·职场和发展·跳槽
yaoh.wang3 小时前
力扣(LeetCode) 35: 搜索插入位置 - 解法思路
程序人生·算法·leetcode·面试·职场和发展·跳槽·二分搜索
程序员杰哥4 小时前
接口测试之文件上传
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·接口测试
小哈里4 小时前
【情感】程序人生之理想主义的情感希冀(个人背景、兴趣爱好、爱情观、理想的另一半、期待什么样的生活等)
程序人生·职场和发展·生活·感情·家与生活
测试人社区-千羽4 小时前
飞机自动驾驶系统测试:安全关键系统的全面验证框架
人工智能·安全·面试·职场和发展·自动化·自动驾驶·测试用例