2023.7.15

同余最短路

 

P3403 跳楼机
题意:给定h高的楼层,起始位置在第一层,可以选择操作向上移动x层或y层或z层,回到第一层
求可以到达的楼层数
思路:转化题意为求ax+by+cz=k(k在[1,h],x,y,z为正整数,有多少k满足条件,
 简而言之就是选定一个数,用其他的凑出这个数的每个同余类的最小数,就凑出同余类中比最小数大的个数
 

#include<iostream>
#include<queue>
#include<cstring>
#define int long long
const int N = 2e5 + 10;
using namespace std;
int head[N];
int cnt;
int dis[N];
bool vis[N];
struct Edge {
    int v, w, next;
}e[N<<1];
void insert(int u, int v, int w) {
    e[++cnt] = Edge{ v,w,head[u] };
    head[u] = cnt;
}
void spfa(int s) {
    memset(vis, 0, sizeof(vis));
    vis[s] = 1;
    memset(dis, 0x3f3f3f3f, sizeof(dis));
    dis[s] = 1;
    queue <int>q;
    q.push(s);
    while (!q.empty()) {
        s = q.front();
        q.pop();
        vis[s] = 0;
        for (int i = head[s]; i; i = e[i].next) {
            int v = e[i].v;
            int w = e[i].w;
            if (dis[v] > dis[s] + w) {
                dis[v] = dis[s] + w;
                if (!vis[v]) {
                    q.push(v);
                    vis[v] = 1;
                }
            }
        }
    }
}
void solve(){
    int h,x,y,z;
    cin >> h;
    cin >> x >> y >> z;
    for (int i = 0; i < z; i++) {       
        insert(i, (i + x) % z, x);
        insert(i, (i + y) % z, y);
    }
    spfa(1);
    int ans = 0;
    for (int i = 0; i < z; i++) {
        if(h>=dis[i])
        ans += (h - dis[i]) / z + 1;
    }
    cout << ans << '\n';
}
signed main()
{
    int t = 1;
    //cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}

arc084_b()
题意:给一个数 k ,问他的正整数倍数中,(十进制下)每一位的和最小是多少。
例子:41-》41*271=11111-》5
思路:设f(ans)=ans为各位数的和,ans=0(mod k),且f(ans)最小
 dis[i]表示模k为i的位数之和的最小值
 

#include<iostream>
#include<queue>
#include<cstring>
#define int long long
const int N = 1e5 + 10;
using namespace std;
int head[N];
int cnt;
int dis[N];
bool vis[N];
struct Edge {
    int v, w, next;
}e[N << 4];
void insert(int u, int v, int w) {
    e[++cnt] = Edge{ v,w,head[u] };
    head[u] = cnt;
}
void spfa(int s) {
    memset(vis, 0, sizeof(vis));
    vis[s] = 1;
    memset(dis, 0x3f3f3f3f, sizeof(dis));
    dis[s] = 0;
    queue <int>q;
    q.push(s);
    while (!q.empty()) {
        s = q.front();
        q.pop();
        vis[s] = 0;
        for (int i = head[s]; i; i = e[i].next) {
            int v = e[i].v;
            int w = e[i].w;
            if (dis[v] > dis[s] + w) {
                dis[v] = dis[s] + w;
                if (!vis[v]) {
                    q.push(v);
                    vis[v] = 1;
                }
            }
        }
    }
}
void solve() {
    int k;
    cin >> k;
    for ( int i = 0; i < k; ++i)
        for ( int j = 0; j < 10; ++j) {
            insert(i, (i * 10 + j) % k, j);
        }
    for ( int i = 1; i < 10; ++i)
        insert(k, i % k, i);//建虚点,第一位不能为0
    spfa(k);
    cout << dis[0] << '\n';
}
signed main()
{
    int t = 1;
    //cin >> t;
    while (t--) {
        solve();
    }
    return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

推荐一款IDEA神级插件【Bito】而且免费!

什么是Bito&#xff1f; Bito是一款在IntelliJ IDEA编辑器中的插件&#xff0c;Bito插件是由ChatGPT团队开发的&#xff0c;它是ChatGPT团队为了提高开发效率而开发的一款工具。ChatGPT团队是一支专注于自然语言处理技术的团队&#xff0c;他们开发了一款基于GPT的自然语言处理…

动态规划之118杨辉三角(第6道)

题目&#xff1a;给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 题目链接&#xff1a;118. 杨辉三角 - 力扣&#xff08;LeetCode&#xff09; 示例&#xff1a; 解法&#xff1…

C/C++实现高并发http服务器

http高并发服务器实现 基础知识 html&#xff0c;全称为html markup language&#xff0c;超文本标记语言。 http&#xff0c;全称hyper text transfer protocol&#xff0c;超文本传输协议。用于从万维网&#xff08;WWW&#xff1a;World Wide Web&#xff09;服务器传输超…

异地使用PLSQL远程连接访问Oracle数据库【内网穿透】

文章目录 前言1. 数据库搭建2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射 3. 公网远程访问4. 配置固定TCP端口地址4.1 保留一个固定的公网TCP端口地址4.2 配置固定公网TCP端口地址4.3 测试使用固定TCP端口地址远程Oracle 转载自cpolar极点云文章&#xff1a;公网远程连接…

Jenkins的几种安装方式以及邮件配置

目录 Jenkins介绍 Jenkins下载、安装 一、通过war包安装 二、通过docker安装 jenkins 容器中添加 git, maven 等组件 jenkins 容器中的公钥私钥 在 jenkins 容器中调用 docker 简单的方式启动 Docker server REST API 一个 jenkins 示例 三、通过Homebrew安装 访问Je…

【DC-DC】AP5193 DC-DC宽电压LED降压恒流驱动器 LED电源驱动IC

产品 AP5193是一款PWM工作模式,高效率、外围简单、内置功率MOS管&#xff0c;适用于4.5-100V输入的高精度降压LED恒流驱动芯片。最大电流2.5A。AP5193可实现线性调光和PWM调光&#xff0c;线性调光脚有效电压范围0.55-2.6V.AP5193 工作频率可以通过RT 外部电阻编程来设定&…

从源码全面解析 dubbo 消费端服务调用的来龙去脉

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小黄&#xff0c;独角兽企业的Java开发工程师&#xff0c;CSDN博客专家&#xff0c;阿里云专家博主&#x1f4d5;系列专栏&#xff1a;Java设计模式、Spring源码系列、Netty源码系列、Kafka源码系列、JUC源码…

插入排序法解析

插入排序法解析 什么是插入排序法 插入排序法是一种简单但有效的排序算法&#xff0c;其基本思想是将一个待排序的元素逐个插入到已经排好序的元素序列中&#xff0c;直至所有元素都被插入完成&#xff0c;从而得到一个有序序列。 具体步骤如下&#xff1a; 假设初始时&…

redis实现相关分布式锁

为什么需要分布式锁 我们知道&#xff0c;当多个线程并发操作某个对象时&#xff0c;可以通过synchronized来保证同一时刻只能有一个线程获取到对象锁进而处理synchronized关键字修饰的代码块或方法。既然已经有了synchronized锁&#xff0c;为什么这里又要引入分布式锁呢&…

react useState useEffect useMemo实际业务场景中的使用

下面的代码实现了上面图片的功能 import React, { useMemo } from "react"; import "./HomeHead.less"; import Img from "../assets/images/timg.jpg";const HomeHead function HomeHead(props) {{ /*父组件传过来的值 */}let { today } pro…

在线培训系统的保障措施带来安全、可靠的学习环境

在今天的数字时代&#xff0c;越来越多的人选择在线培训系统作为学习的方式。然而&#xff0c;随着在线教育市场的不断增长&#xff0c;安全和可靠性成为消费者普遍关心的问题。因此&#xff0c;在线培训系统需要采取一系列保护措施以确保学生的数据和隐私得到保护&#xff0c;…

Flutter 状态管理框架 Provider 和 Get 分析

状态管理一直是 Flutter 开发中一个火热的话题。谈到状态管理框架&#xff0c;社区也有诸如有以Get、Provider为代表的多种方案&#xff0c;它们有各自的优缺点。面对这么多的选择&#xff0c;你可能会想&#xff1a;「我需要使用状态管理么&#xff1f;哪种框架更适合我&#…

集群基础1——集群概念、LVS负载均衡

文章目录 一、基本了解二、LVS负载均衡2.1 基本了解2.2 工作模式2.2.1 NAT模式2.2.2 DR模式2.2.3 LVS-TUN模式2.2.4 LVS-FULLNAT模式 三、调度器算法四、ipvsadm命令 一、基本了解 什么是集群&#xff1f; 多台服务器做同一件事情。 集群扩展方式&#xff1a; scale up&#xf…

每日科技分享-POE新增文件和链接发送功能

POE推出新功能 注意POE需要魔法上午才能进去。 实测 实测可以发送论文给chatgpt&#xff0c;然后和AI进行共享的对话。 POE网站链接&#xff1a; 也可以发送链接&#xff0c;实测了一下&#xff0c;似乎有时候并不准确&#xff0c;我发送了关于分层强化的文章&#xff0c;但是…

05 Docker 安装常用软件 (mongoDB)

目录 1. mongoDB简介 1.1 mongodb的优势 2. mongodb的安装 2.1 创建数据文件夹 2.2 备份日志 2.3 配置文件夹 2.4 创建两个文件 ---> 2.4.1 配置如下: 2.5 拉取mongodb 2.6 运行容器 2.7 进入mongodb容器 ---> 2.7.0 高版本(6.0)以上是这样的 , 旧版的没研究 …

SpringBoot 集成 Mybatis

SpringBoot 集成 Mybatis 详细教程 &#xff08;只有操作&#xff0c;没有理论&#xff0c;仅供参考学习&#xff09; 一、操作部分 1. 准备数据库 1.1 数据库版本&#xff1a; C:\WINDOWS\system32>mysql -V mysql Ver 8.0.25 for Win64 on x86_64 (MySQL Community …

PyTorch深度学习实战(5)——计算机视觉

PyTorch深度学习实战&#xff08;5&#xff09;——计算机视觉 0. 前言1. 图像表示2. 将图像转换为结构化数组2.1 灰度图像表示2.2 彩色图像表示 3 利用神经网络进行图像分析的优势小结系列链接 0. 前言 计算机视觉是指通过计算机系统对图像和视频进行处理和分析&#xff0c;利…

笔记本电脑清灰换硅脂

文章目录 一、完整过程0.准备工具1.拆笔记本后盖2.洗手擦干断电3.清理部件浮尘4.拆风扇5.拆散热模具6.换硅脂7.装回去 二、图片 一、完整过程 0.准备工具 拆机螺丝刀、硅脂、撬片/撬棒、毛刷、气吹、卫生纸。 正常电脑是十字螺丝&#xff0c;推荐刀头使用 PH00 或 PH0。 1.拆…

基于单片机的智能太阳能手机充电器的设计与实现

功能介绍 以STM32/51单片机作为主控系统&#xff1b;LCD1602液晶显示当前电压值&#xff1b;太阳能电池板采集当前光照转换为电能&#xff0c;然后TP4056锂电池充放电模块给锂电池进行充电&#xff0c;充完后自动断电&#xff0c;防过充&#xff1b;通过CE8301模块对锂电池电压…

1-4 架构师所需要具备的技术栈与能力

架构师所需要具备的技术栈与能力 全局图解 全局图解