搭扑克牌塔题解

news2024/10/5 19:20:17

在这里插入图片描述

输入样例:

5
3
14
15
24
1

输出样例:

1
2
1
3
0

思路分析:

首先搭每个金字塔所需的扑克牌数并不会由n决定,所以我首先想到打表。抱着信心尝试一番之后
在这里插入图片描述在这里插入图片描述
既然文件太大提交不了,那我们就放弃:,怎么可能,下面我们来简单的计算一波,打表时间复杂度O(n),二分时间复杂度O(log n),所以打表+二分,时间复杂度OK。
所以这一题的思路就是:把打表程序放在主程序里,用二分查找搭成最大金字塔所需扑克牌数量,
再通过递归解决。
既然要打表 (其实叫预处理) 那就先分析一下金字塔的规律 (如下图) :
在这里插入图片描述总结规律:每次差增加3
接着用二分查找出离n最近的金字塔,然后减去那个数在递归查找剩下的,知道小于2为止,因为最小的金字塔要2张扑克牌。

代码:

#include<iostream>
using namespace std;
int a[25850];//预处理数组 
int t,n;//由题意 
int ans=0;//记录答案 
void dg(int x){
	if(x<2){
		return;
	}//递归终止条件 
	int l=0,r=25850,mid;//r=25850是打表测出来的,在1e9内有25820种不同的金字塔结果,开大一点到25850 
	while(l<r){//二分 
		mid=(l+r+1)/2;
		if(a[mid]>x){
			r=mid-1;
		}else{
			l=mid;
		}
	}//找不大于x的最大值下标 
	ans+=1;//答案加一 
	dg(x-a[l]);//剩下的继续找 
	return;
}
int main(){
	int cnt=0/*所需扑克牌张数*/,tmp=2/*差值*/,idx=-1;//a数组下标 
	while(cnt<=1000000000){ 
		cnt+=tmp;
		tmp+=3;//差值加3 
		idx+=1;//下标加一 
		a[idx]=cnt;
	}//在输入前预处理(打表) 
	cin>>t;
	while(t--){//t次询问 
		ans=0;//答案初始化 
		cin>>n;
		dg(n);//递归调用 
		cout<<ans<<endl;
	}
	return 0;
}

下一篇:可可口乐

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/786972.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

day39-Password Strength Background(密码强度背景)

50 天学习 50 个项目 - HTMLCSS and JavaScript day39-Password Strength Background&#xff08;密码强度背景&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name&quo…

【MySQL】之复合查询

【MySQL】之复合查询 基本查询多表查询笛卡尔积自连接子查询单行子查询多行子查询多列子查询在from子句中使用子查询 合并查询小练习 基本查询 查询工资高于500或岗位为MANAGER的雇员&#xff0c;同时还要满足他们的姓名首字母为大写的J按照部门号升序而雇员的工资降序排序使用…

WebRTC Simulcast介绍

原文地址&#x1f447; https://blog.livekit.io/an-introduction-to-webrtc-simulcast-6c5f1f6402eb/ 你想知道的关于Simulcast的一切 Simulcast是WebRTC中最酷的功能之一,它允许WebRTC会议在参与者网络连接不可预测的情况下进行扩展。在这篇文章中,我们将深入探讨Simulcas…

uniapp使用自定义导航栏和手机自带的状态栏重叠

【问题界面】&#xff1a; 【正常界面】&#xff1a; 【解决方法】&#xff1a; 在页面顶部添加代码<!-- #ifndef H5 --> <statusBar></statusBar> <!-- #endif --> 2.引入占位条并注册 import statusBar from "/uni_modules/uni-nav-bar/c…

基于云平台的智慧养殖远程监控系统

项目背景 冬春季节每天的温度和昼夜温差变化很大&#xff0c;为保证养殖动物有一个温暖舒适的生存环境&#xff0c;使动物的生产性能得到较好的发挥&#xff0c;须注意做好温度、湿度、通风等方面的控制。 智慧养殖智能监控系统可以实现对如温度、湿度、气体浓度、光照度等参数…

2023五大自动化测试的 Python 框架

自2018年被评选为编程语言以来&#xff0c;Python在各大排行榜上一直都是名列前茅。目前&#xff0c;它在Tiobe指数中排名第三个&#xff0c;仅次于Java和C。随着该编程语言的广泛使用&#xff0c;基于Python的自动化测试框架也应运而生&#xff0c;且不断发展与丰富。 因此&a…

golang+layui提升界面美化度--[推荐]

一、背景 golanglayui提升界面美化度--[推荐]&#xff1b; golang后端写的页面很难看&#xff0c;如何好看点呢&#xff0c;那就是layui https://layui.dev/ 也是一个简单上手容易使用的框架&#xff0c;类似jquery&#xff0c;对于后端开发来说满足使用需求 二、使用注意点…

input 框如何移动光标,设置光标位置?

获取 input 光标位置 const inputDom document.getElementById("input") const selectionStart inputDom.selectionStart设置 input 光标 inputDom.focus() // focus() 异步&#xff0c;所以加了 setTimeout setTimeout(() > {const nextSelection selection…

Linux进程概念(续)

引入 我们先来看一段代码 #include<stdio.h> #include <unistd.h>int g_val200;//全局变量 int main() {int resfork();if(res>0)//father{printf("我是父进程。我的全局变量 g_val%d,他的地址是 %p\n",g_val,&g_val);}else if(res0)//子进程{g…

day38-Mobile Tab Navigation(手机tab栏导航切换)

50 天学习 50 个项目 - HTMLCSS and JavaScript day38-Mobile Tab Navigation&#xff08;手机tab栏导航切换&#xff09; 效果 index.html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"…

Cesium态势标绘专题-多边形(标绘+编辑)

标绘专题介绍:态势标绘专题介绍_总要学点什么的博客-CSDN博客 入口文件:Cesium态势标绘专题-入口_总要学点什么的博客-CSDN博客 辅助文件:Cesium态势标绘专题-辅助文件_总要学点什么的博客-CSDN博客 本专题没有废话,只有代码,代码中涉及到的引入文件方法,从上面三个链…

mybatis_使用

第一步&#xff1a; 编写接口 第二步&#xff1a; 编写对应的mapper中的sql语句 第三步&#xff1a; 测试 CRUD <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http…

喜报 | 擎创科技入选2023中国金融科技竞争力百强榜

2023中关村金融科技论坛——第七届金融科技与金融安全峰会已圆满落幕。本次峰会主要围绕银行科技、保险科技、新一代信息技术、互联网3.0展开专题论坛&#xff0c;共有千余位金融机构和科技公司相互分享研究成果、探索前沿知识、交流实践经验。 会议上正式公布了“2023中国金融…

C++ 引用型别未定义

什么是引用型别未定义呢&#xff1f;&#xff08;首先是基本数据类型的&#xff09; 在使用函数的时候&#xff0c;我们在给函数传参的时候可能会传入一个左值也可能是右值。当我们使用如下函数funtion的时候&#xff0c;会在控制台打印什么样的结果呢&#xff1f;&#xff08;…

fastadmin框架重定向

由于&#xff0c;我们一打开fastadmin框架就进入到前端页面很麻烦&#xff0c;下面这种方法可以解决这个问题。 首先我们找到这个路径 找到重定向&#xff0c; application》index》controller》index 原本文件是这个样子&#xff1a; <?phpnamespace app\index\controll…

Redisson实现简单消息队列:优雅解决缓存清理冲突

在项目中&#xff0c;缓存是提高应用性能和响应速度的关键手段之一。然而&#xff0c;当多个模块在短时间内发布工单并且需要清理同一个接口的缓存时&#xff0c;容易引发缓存清理冲突&#xff0c;导致缓存失效的问题。为了解决这一难题&#xff0c;我们采用Redisson的消息队列…

SuperCLUE中文大模型排行榜(2023年7月)

中文通用大模型综合性测评基准&#xff08;SuperCLUE&#xff09;&#xff0c;是针对中文可用的通用大模型的一个测评基准。 它主要要回答的问题是&#xff1a;在当前通用大模型大力发展的情况下&#xff0c;中文大模型的效果情况。包括但不限于&#xff1a;这些模型哪些…

思科设备静态路由配置

一、静态路由基本知识 路由器的主要功能就是用来转发IP 数据包以使数据包到达正确的目的主机。可以想象数据包到达路由器就像一辆汽车开到十字路口&#xff0c;路由表就类似路标&#xff0c;列出可能到达的目的地&#xff0c;以及应该选择哪条路到达目的地。 路由器必须要有相应…

Cesium态势标绘专题-圆形(标绘+编辑)

标绘专题介绍:态势标绘专题介绍_总要学点什么的博客-CSDN博客 入口文件:Cesium态势标绘专题-入口_总要学点什么的博客-CSDN博客 辅助文件:Cesium态势标绘专题-辅助文件_总要学点什么的博客-CSDN博客 本专题没有废话,只有代码,代码中涉及到的引入文件方法,从上面三个链…

Set集合类详解(附加思维导图)

目录 一、Set集合思维导图 二、set集合类常用方法 2.1、HashSet集合常用方法 2.2、TreeSet集合的使用 三、HashSet、LinkedHashSet、TreeSet的使用场景 四、list和set集合的区别 一、Set集合思维导图 二、set集合类常用方法 2.1、HashSet集合常用方法 ①&#xff1a;add…