算法刷题day13

目录

  • 引言
  • 一、蜗牛

引言

今天时间有点紧,只搞了一道题目,不过确实搞了三个小时,才搞完,主要是也有点晚了,也好累啊,不过也还是可以的,学了状态DP,把建图和spfa算法熟悉了一下,明天再接再厉。


一、蜗牛

标签:状态机DP

思路1:这个因为还没学所以第一时间没有这个DP的概念就拿最短路做的,spfa算法过了两个数据(总共十个),然后其实没问题,就是图建的不太完善,建图是觉得每次传送结束都要回到x轴,现在觉得可以继续走当前杆的下一个传送门再传送到下一个杆,因为每两个之间都有传送门,所以每根杆最多有两个传送门
思路2:直接用状态机DP,定义为两个状态f[i][2],分别代表第一次到达杆子的底端和b[i],然后结果就是两种情况:min(f[n][0],f[n][1]+b[n]/1.3),然后每次推f[i][0]、f[i][1]
i n t d = x [ i ] − x [ i − 1 ] ; int\ d = x[i] - x[i-1]; int d=x[i]x[i1]; f [ i ] [ 0 ] = m i n ( f [ i − 1 ] [ 0 ] + d , f [ i − 1 ] [ 1 ] + g e t ( b [ i − 1 ] , 0 ) + d ) ; f[i][0] = min(f[i-1][0] + d, f[i-1][1] + get(b[i-1], 0) + d); f[i][0]=min(f[i1][0]+d,f[i1][1]+get(b[i1],0)+d); f [ i ] [ 1 ] = m i n ( f [ i − 1 ] [ 0 ] + g e t ( 0 , a [ i − 1 ] ) , f [ i − 1 ] [ 1 ] + g e t ( b [ i − 1 ] , a [ i − 1 ] ) ) ; f[i][1] = min(f[i-1][0] + get(0, a[i-1]), f[i-1][1] + get(b[i-1], a[i-1])); f[i][1]=min(f[i1][0]+get(0,a[i1]),f[i1][1]+get(b[i1],a[i1]));
在这里插入图片描述

题目描述:

示例代码一:spfa算法(过了2/10)

#include <cstdio>
#include <cstring>
#include <iostream>
#include <vector>
#include <cfloat>using namespace std;const int N = 1e5+10, M = N * 2;int n;
int h[N], e[M], ne[M], idx;
double w[M];
double dist[N];
bool st[N];
int q[N];void add(int a, int b, double c)
{e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx++;
}double spfa()
{for(int i = 0; i < N; ++i) dist[i] = DBL_MAX;dist[0] = 0;st[0] = true;int hh = 0, tt = -1;q[++tt] = 0;while(hh <= tt){auto t = q[hh++];st[t] = false;for(int i = h[t]; i != -1; i = ne[i]){int j = e[i];if(dist[j] > dist[t] + w[i]){dist[j] = dist[t] + w[i];if(!st[j]){q[++tt] = j;st[j] = true;}}}}return dist[n];
}int main()
{memset(h, -1, sizeof h);scanf("%d", &n);int a = 0, b;vector<int> path;for(int i = 0; i < n; ++i){scanf("%d", &b);path.push_back(b);int c = b - a;add(a,b,c);a = b;}for(int i = 1; i < path.size(); ++i){int a = path[i-1], b = path[i];int t1, t2;scanf("%d%d", &t1, &t2);double c = t1 / 0.7 + t2 / 1.3;add(a,b,c);}n = path.back();double res = spfa();printf("%.2f\n", res);return 0;
}

示例代码二:状态机DP

#include <cstdio>
#include <iostream>using namespace std;const int N = 1e5+10, INF = 2e9;int n;
int x[N], a[N], b[N];
double f[N][2];double get(double x1, double x2)
{if(x1 > x2) return (x1 - x2) / 1.3;return (x2 - x1) / 0.7;
}int main()
{scanf("%d", &n);for(int i = 1; i <= n; ++i) scanf("%d", &x[i]);for(int i = 1; i < n; ++i) scanf("%d%d", &a[i], &b[i+1]);for(int i = 0; i < n; ++i) f[i][0] = f[i][1] = INF;f[1][0] = x[1];for(int i = 2; i <= n; ++i){int d = x[i] - x[i-1];f[i][0] = min(f[i-1][0] + d, f[i-1][1] + get(b[i-1], 0) + d);f[i][1] = min(f[i-1][0] + get(0, a[i-1]), f[i-1][1] + get(b[i-1], a[i-1]));}printf("%.2f\n", min(f[n][0], f[n][1] + get(b[n], 0) ) );return 0;
}

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

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

相关文章

WEB APIs(2)

应用定时器可以写一个定时轮播图&#xff0c;如下 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport&qu…

基于 InternLM 和 LangChain 搭建你的知识库(三)

基于 InternLM 和 LangChain 搭建你的知识库 大模型开发范式 Finetune 在大型语言模型中&#xff0c;Finetune&#xff08;微调&#xff09;是一种技术&#xff0c;用于调整预训练的模型以提高其在特定任务或数据集上的表现。这种方法通常涉及以下步骤&#xff1a; 预训练模…

【MySQL】:DQL查询

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; MySQL从入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一. DQL1.1 基本语法1.2 基础查询1.3 条件查询1.3 聚合函数 &#x1f324;️ 全篇…

【Linux取经路】文件系统之被打开的文件——文件描述符的引入

文章目录 一、明确基本共识二、C语言文件接口回顾2.1 文件的打开操作2.2 文件的读取写入操作2.3 三个标准输入输出流 三、文件有关的系统调用3.1 open3.1.1 比特位级别的标志位传递方式 3.2 write3.2.1 模拟实现 w 选项3.2.2 模拟实现 a 选项 3.3 read 四、访问文件的本质4.1 再…

黑马程序员java部分笔记(持续更新)九点五:数组的动态初始化与常见问题

为什么有动态初始化呢? 当 不知道数组里几个元素的具体值时用动态初始化 动态初始化&#xff1a;初始化时只指定数组长度&#xff0c;由系统分配初始值 格式&#xff1a;数据类型[]数组名new 数据类型[数组长度]; 特点&#xff1a;在创建的时候有自己指定数组长度&#xff0c;…

Java的集合框架和泛型

文章目录 集合框架什么是集合框架类和接口总览 集合框架的重要性背后所涉及的数据结构以及算法什么是数据结构容器背后对应的数据结构什么是算法 包装类基本数据类型和对应的包装类装箱和拆箱自动装箱和自动拆箱 泛型什么是泛型引出泛型语法泛型类泛型的上界(没有下界)泛型方法…

心理辅导|高校心理教育辅导系统|基于Springboot的高校心理教育辅导系统设计与实现(源码+数据库+文档)

高校心理教育辅导系统目录 目录 基于Springboot的高校心理教育辅导系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、学生功能模块的实现 &#xff08;1&#xff09;学生登录界面 &#xff08;2&#xff09;留言反馈界面 &#xff08;3&#xff09;试卷列表界…

基于Springboot的社区物资交易互助平台(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的社区物资交易互助平台&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系…

【光学】学习记录1-几何光学的近轴理论

课程来源&#xff1a;b站资源-光学-中科大-崔宏滨老师&#xff08;感谢&#xff09;&#xff0c;本系列仅为自学笔记 【光学 中科大 崔宏滨老师 1080p高清修复&#xff08;全集&#xff09;】https://www.bilibili.com/video/BV1NG4y1C7T9?p2&vd_source7ba37b2cff2a1b783…

MATLAB计算极限和微积分

一.函数与极限 计算极限&#xff1a;lim(3*x^2/(2x1))&#xff0c;x分别趋于0和1&#xff0c;代码如下&#xff1a; syms x; limit(3*x*x/(2*x1),x,0) limit(3*x*x/(2*x1),x,1) 结果分别为0和1&#xff1a; 1.计算双侧极限 计算极限&#xff1a;lim(3*x^2/(2x1))&#xff0…

wordpress日主题模版Ripro-v5 6.4开心版

RiPro主题全新V5版本&#xff0c;&#xff08;原RiPro v2旧版已停更&#xff09;是一个优秀且功能强大、速度极快&#xff0c;易于管理、现代化的WordPress虚拟资源商城主题。支持首页模块化布局和WP原生小工具模块化首页可拖拽设置&#xff0c;让您的网站设计体验更加舒适。同…

linux进程控制【程序替换】

目录 前言&#xff1a; 1.替换原理 ​编辑 2.替换函数 2.1函数 execl 2.2函数 execv 2.3函数 execlp 2.4函数 execvp 2.5函数 execle 2.6函数 execve 2.7函数 execvpe 前言&#xff1a; 前面我们介绍了进程控制中的创建&#xff0c;退出等待&#xff0c;本章节我们将…

8.JS中的== 操作符的强制类型转换规则

对于 来说&#xff0c;如果对比双方的类型不一样&#xff0c;就会进行类型转换。假如对比 x 和 y 是否相同&#xff0c;就会进行如下判断流程&#xff1a; 首先会判断两者类型是否相同&#xff0c;类型相同的话就比较两者的大小&#xff1b;类型不相同的话&#xff0c;就会进…

核心篇-OSPF技术之序(下)

文章目录 一. 实验专题1.1. 实验1&#xff1a;配置OSPF特殊区域1.1.1. 实验目的1.1.2. 实验拓扑图1.1.3. 实验步骤&#xff08;1&#xff09;配置IP地址&#xff08;2&#xff09;创建环回口&#xff08;3&#xff09;查看路由表&#xff08;4&#xff09;设置Stub区域&#xf…

2024/02/13

21 、C 22 、D 23、B 如果5先出栈那么1&#xff0c;2&#xff0c;3&#xff0c;4就已经入栈了&#xff0c;5出后4出&#xff0c;1要出栈必须先让3&#xff0c;2出栈&#xff0c;所以 不可能输出B 24、10&#xff0c;12&#xff0c;120 25、2&#xff0c;5 26、段错…

selenium定位元素报错:‘WebDriver‘ object has no attribute ‘find_element_by_id‘

Selenium更新到 4.x版本后&#xff0c;以前的一些常用的代码的语法发生了改变 from selenium import webdriver browser webdriver.Chrome() browser.get(https://www.baidu.com) input browser.find_element_by_id(By.ID,kw) input.send_keys(Python)目标&#xff1a;希望通…

【Python--网络编程之TCP三次握手】

&#x1f680; 作者 &#xff1a;“码上有前” &#x1f680; 文章简介 &#xff1a;Python开发技术 &#x1f680; 欢迎小伙伴们 点赞&#x1f44d;、收藏⭐、留言&#x1f4ac; Python网络编程之[TCP三次握手] 往期内容代码见资源&#xff0c;效果图如下一、实验要求二、协…

嵌入式内核链表list_head,如何管理不同类型节点的实现

在Linux内核中&#xff0c;提供了一个用来创建双向循环链表的结构 list_head。虽然linux内核是用C语言写的&#xff0c;但是list_head的引入&#xff0c;使得内核数据结构也可以拥有面向对象的特性&#xff0c;通过使用操作list_head 的通用接口很容易实现代码的重用&#xff0…

P1219 八皇后 (dfs 表格坐标关系)

一个正常的dfs&#xff08;数据范围1-13&#xff09;&#xff0c;发现一条对角线上&#xff0c;分别符合和与差相等。因为有负数&#xff0c;这里我最开始开的是map&#xff0c;发现卡了最后一个点TLE&#xff0c;记录一下时间复杂度&#xff08; map&#xff0c;set的时间复杂…

Mysql——update更新数据的方式

注&#xff1a;文章参考&#xff1a; MySQL 更新数据 不同条件(批量)更新不同值_update批量更新同一列不同值-CSDN博客文章浏览阅读2w次&#xff0c;点赞20次&#xff0c;收藏70次。一般在更新时会遇到以下场景&#xff1a;1.全部更新&#xff1b;2.根据条件更新字段中的某部分…