首页 > 其他分享 >P1929 迷之阶梯

P1929 迷之阶梯

时间:2024-05-26 10:11:23浏览次数:17  
标签:阶梯 P1929 ll times height int delta include

链接:https://www.luogu.com.cn/problem/P1929
题目:

思路:动态规划:以times[i]表示跳到第i号台阶的最小步数。
如果height[i] == height[i-1] + 1那么显然有times[i] = times[i-1] + 1
然后是遍历的状态转移方程:如果j号位加上2^delta可以跳到i号位,那么更新times[i] = min(times[i],times[delta + j] + delta + 1)这个式子的意思就是从delta + j号位回跳delta步,然后一跃到i。
所以代码如下:

#define _CRT_SECURE_NO_WARNINGS 
#include<iostream>
#include<vector>
#include<algorithm>
#include<math.h>
#include<sstream>
#include<string>
#include<string.h>
#include<iomanip>
#include<stdlib.h>
#include<map>
#include<queue>
#include<limits.h>
#include<climits>
#include<fstream>
#include<stack>
typedef long long ll;
using namespace std;
const int N = 210;
ll height[N];
ll times[N];
int main()
{
	ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
	int n; cin >> n;
	for (int i = 1; i <= n; i++)times[i] = -1;
	for (int i = 1; i <= n; i++)cin >> height[i];
	times[1] = 0;
	for (int i = 2; i <= n; i++)
	{
		if (height[i] == height[i - 1] + 1)times[i] = times[i - 1] + 1;
		for (int j = 1; j < i; j++)
		{
			int delta = ceil(log2(height[i] - height[j]));
			if (delta + j < i)
			{
				if (times[i] == -1)
				{
					times[i] = times[delta + j] + delta + 1;
				}
				else times[i] = min(times[i], times[delta + j] + delta + 1);
			}
		}
		if (times[i] == -1)break;
	}
	cout << times[n];
	return 0;
}

标签:阶梯,P1929,ll,times,height,int,delta,include
From: https://www.cnblogs.com/zzzsacmblog/p/18213376

相关文章

  • python算法:爱因斯坦阶梯
    一,for循环:1,功能:重复执行同一段代码语法:forindexinrange(n):   #循环体代码index:用来依次接收可迭代对象中的元素的变量名range()函数:负责返回整数序列流程图:2,应用range可以同时指定start和stop,用for遍历并打印1234#指定start和s......
  • open c++ 自动设计阶梯轴UF_MODL_create_cyl1
    通过UF_MODL_create_cyl1自动设计阶梯轴 doubleTtotal=260; doubleL1=21.00; doubleL2=12.00; doubleL3=57.00; doubleL4=36.00; doubleL6=67.00; doubleL5=Ttotal-(L1+L2+L3+L4+L6); doubled1=55.00; doubled2=65.00; dou......
  • JMeter接口性能压测之阶梯加压线程组(Stepping Thread Group)
    一、前言1、阶梯式场景(负载测试):该场景主要应用在负载测试只里面,通过设定一定的并发线程数,给定加压规则,遵循“缓起步,快结束”的原则,不断地增加并发用户来找到系统的性能瓶颈,进而有针对性的进行各方面的系统优化。2、Stepping Thread Group的作用减少服务器的瞬时压力,......
  • P2532 [AHOI2012] 树屋阶梯 题解
    P2532[AHOI2012]树屋阶梯题解容易发现答案是卡特兰数,那么考虑证明这一点。考虑从左下角到右上角填满格子。利用动态规划的思想,回忆一下某道\(IOI\)的题目[数字三角形],每个格子的方案都只能由其左边或下边转移而来。可以结合图理解一下。好,刚才这个定义显然很符合卡特兰......
  • 第八届:世界3D渲染挑战赛《无尽阶梯》报名开始
    全世界的3D艺术创作者们引颈期盼的盛事“全球3D渲染艺术大奖赛”已迈入第八个年头。本届比赛的主题为“无尽的阶梯”,参赛者们可通过挑战赛展现自身的创造力,比赛在行业内拥有极高的知名度,含金量十足,参赛这可通过这里提高自己在业界的曝光。下面一起来简单看看世界3D渲染挑战赛的开......
  • [SDOI2019] 移动金币(阶梯博弈)
    题面一枚金币向左移若干格等价若干个空格向右移一个金币,终状态为所有空格在最右,转换为阶梯博弈阶梯博弈每个阶梯上有若干枚石子,每次操作将同个阶梯的任意石子向下移一个阶梯,不能操作者输等价对奇数阶梯做Nim博弈先手按Nim博弈操作。若对方移动偶数阶梯,则将对方移动石子继续下......
  • PMP塔克曼阶梯模型
    塔克曼阶梯模型布鲁斯·塔克曼(BruceTuckman)的团队发展阶段(StagesofTeamDevelopment)模型可以被用来辨识团队构建与发展的关键性因素,并对团队的历史发展给以解释。团队发展的五个阶段是:组建期(Forming)、激荡期(Storming)、规范期(Norming)、执行期(Performing)和休整期(Adjourni......
  • 矩阵化为行阶梯型、行最简阶梯型、标准型、单位矩阵的方法
    1.行阶梯型1.1形式若有0行,都在下方从行上看,从左边起,出现连续的0的个数自上而下,严格单调增加1.2方法\[\left[\begin{matrix}1&-1&2&1&0\\2&-2&4&2&0\\3&0&6&-1&1\\0&3&0&0&1\end{matrix}\right]\]通过行变换将第一列尽量都变成0......
  • 函数计算 FC 3.0 发布,全面降价,最高幅度达93%,阶梯计费越用越便宜
    作为国内最早布局Serverless的云厂商之一,阿里云在2017年推出函数计算FC,开发者只需编写代码并上传,函数计算就会自动准备好相应的计算资源,大幅简化开发运维过程。阿里云函数计算持续在ServerlessGPU方面投入研发,拥有极致弹性的GPU实例,以及大规格的函数计算性能实例,为承载......
  • 物联网卡运营 阶梯限速、阶梯防超套、自动化推送
    双11钜惠IoTOS-Plus商业版3折(限前20位)终身升级,与时俱进;限时钜惠与君共勉。 近期更新:    商业版更新内容:运营方案、套餐组功能拓展、用量跨月算法完善、日租套餐、自动化功能设计、卡用量详情表格查看一、运营方案(目前仅流量运营)PS说明:    1.运营方案......