当前位置: 首页 > news >正文

每日刷题(最短路、图论)

目录

游戏

思路

代码

魔法

思路

代码

P1364 医院设置

思路

代码

P1144 最短路计数

思路

代码


游戏

I-游戏_河南萌新联赛2024第(三)场:河南大学 (nowcoder.com)

思路

利用dijkstra去寻找起点到其余所有点的最短路径,当同时不能到达钥匙所在的地点和终点时,这个数据无解,输出-1,记录好第一次dijkstra到钥匙和终点的最短路后,在可以到达钥匙的前提下,找到钥匙所在节点到其他点的最短路。

答案去第一次就可以到没拿钥匙到终点和拿了钥匙到终点的最短路的最小值。

代码

#include<bits/stdc++.h>
#define int long long  
#define TEST int T; cin >> T; while (T--)
#define ios ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
const int N = 1e6 + 30;
const int M = 1e3 + 10;
const int inf = 1000000000000000000;
using namespace std;int n, m, k;
struct node
{int u, v, w, d;
}e[N];
int head[N];
int dis[N], v2[N], v1[N];
int cnt = 0;
bool key = false;
void add(int x, int y, int z, int k)
{e[++cnt].w = z;e[cnt].d = k;e[cnt].u = y;e[cnt].v = head[x];head[x] = cnt;
}
priority_queue<pair<int,int> >q;
void solve() {cin >> n >> m >> k;for (int i = 1; i <= m; i++){int u, v, w, d;cin >> u >> v >> w >> d;add(u, v, w, d);add(v, u, w, d);}for (int i = 0; i <= n; i++) dis[i] = inf;dis[1] = 0;q.push({0,1});while (!q.empty()){auto t = q.top();int now = t.second;q.pop();if (v1[now]) continue;v1[now] = 1;for (int i = head[now]; i; i = e[i].v){int net = e[i].u;int pt = e[i].d;if (!key && pt == 0) continue;if (dis[net] > dis[now] + e[i].w){dis[net] = dis[now] + e[i].w;q.push({ -dis[net],net });}}}if (dis[n] >= inf && dis[k] >= inf){cout << "-1\n";return;}if (dis[k] >= inf){cout << dis[n] << "\n";}int ans1 = dis[n], ans2 = dis[k];key = true;for (int i = 0; i <= n; i++) dis[i] = inf;dis[k] = 0;priority_queue<pair<int,int>>Q;Q.push({0,k});while (!Q.empty()){auto t = Q.top();int now = t.second;Q.pop();if (v2[now]) continue;v2[now] = 1;for (int i = head[now]; i; i = e[i].v){int net = e[i].u;int pt = e[i].d;if (dis[net] > dis[now] + e[i].w){dis[net] = dis[now] + e[i].w;Q.push({-dis[net],net});}}}cout << min(ans1, ans2 + dis[n]) << "\n";
}
signed main() {ios;solve();return 0;
}

魔法

H-魔法_河南萌新联赛2024第(三)场:河南大学 (nowcoder.com)

思路

利用vector开一个三维数组去动态规划求解答案,因为只能向下走和向右走,所以只管走即可,不怕走到重复走过的点。

dp数组的含义是dp[x][y][h],在(x,y)这个位置拥有h的血量时,最少需要用多少次魔法。

代码

#include<bits/stdc++.h>
#define int long long  
#define TEST int T; cin >> T; while (T--)
#define ios ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
const int N = 1e6 + 30;
const int M = 1e3 + 10;
const int inf = 512785182741247112;
using namespace std;
int mp[3001][3001];
struct node
{int x, y, he, st;
};
void solve() {int n, m, h;cin >> n >> m >> h;vector<vector<vector<int>>>dp(n + 1, vector<vector<int>>(m + 1, vector<int>(h + 1, inf)));for (int i = 1; i <= n; i++){for (int j = 1; j <= m; j++){cin >> mp[i][j];}}queue<node>q;q.push({ 1, 1, h, 0 });dp[1][1][h] = 0;int dir[2][2] = { {1,0},{0,1} };while (q.size()){node it = q.front();q.pop();for (int i = 0; i < 2; i++){int tx = it.x + dir[i][0];int ty = it.y + dir[i][1];if (tx > n || ty > m) continue;int cost = mp[tx][ty];if (it.he > cost && dp[tx][ty][it.he - cost] > it.st){dp[tx][ty][it.he - cost] = it.st;q.push({ tx, ty, it.he - cost, it.st });}if (dp[tx][ty][it.he] > it.st + 1){dp[tx][ty][it.he] = it.st + 1;q.push({ tx, ty, it.he, it.st + 1 });}}}int ans = 1e9;for (int i = 1; i <= h; i++){ans = min(ans, dp[n][m][i]);}if (ans == 1e9) cout << "-1\n";else cout << ans << "\n";
}signed main() {solve();return 0;
}

P1364 医院设置

P1364 医院设置 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

思路

数据不大,我们暴力枚举每个点建医院时,到其余点的最短路径,这是最短路加上人数就是这个点的答案,遍历完更新最小值即可。

代码

#include<bits/stdc++.h>
#define int long long  
#define TEST int T; cin >> T; while (T--)
#define ios ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
const int N = 1e6 + 30;
const int M = 1e3 + 10;
const int inf = 512785182741247112;
using namespace std;
int pe[200];
int n; 
vector<vector<int>>f;
int dis[101];
void bk()
{for (int i = 1; i <= n; i++) dis[i] = inf;
}
void dfs(int x, int fa)
{for (auto k : f[x]){if (k == fa) continue;if (dis[k] > dis[x] + 1){dis[k] = dis[x] + 1;dfs(k, x);}}
}
void solve() {cin >> n;f.resize(n + 2);for (int i = 1; i <= n; i++){cin >> pe[i];int x, y;cin >> x >> y;if (x != 0){f[i].push_back(x);f[x].push_back(i);}if (y != 0){f[i].push_back(y);f[y].push_back(i);}}int ans = 1e9;for (int i = 1; i <= n; i++){bk();dis[i] = 0;dfs(i, -1);int sum = 0;for (int i = 1; i <= n; i++){sum+=dis[i] * pe[i];}ans = min(ans, sum);}cout << ans << "\n";
}signed main() {ios;solve();return 0;
}

P1144 最短路计数

P1144 最短路计数 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

思路

bfs+动态规划+SPFA求解,因为使用的是bfs遍历,每个点遍历到的第一次就可以得到最短路径,当我们第二次遍历到这个点时,如果最短路径相同,那么加上上一个节点的答案。

下面是主要代码

if (dis[k] > dis[x] + 1)
{dis[k] = dis[x] + 1;ans[k] = ans[x];if (!vis[k]){q.push(k);vis[k] = true;}
}
else if (dis[k] == dis[x] + 1)
{ans[k] += ans[x];ans[k] %= mod;
}

代码

#include<bits/stdc++.h>
#define int long long  
#define TEST int T; cin >> T; while (T--)
#define ios ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr)
const int N = 1e6 + 30;
const int M = 1e3 + 10;
const int inf = 512785182741247112;
const int mod = 100003;
using namespace std;
int n, m;
vector<vector<int>>f;
void solve() {cin >> n >> m;f.resize(n + 1);int u, v;for (int i = 1; i <= m; i++){cin >> u >> v;if (u == v)continue;f[u].push_back(v);f[v].push_back(u);}vector<int>dis(n + 1, inf);dis[1] = 0;vector<bool>vis(n + 1, false);vector<int>ans(n + 1);ans[1] = 1;vis[1] = true;queue<int>q;q.push(1);while (q.size()){int x = q.front();q.pop();vis[x] = false;for (auto k : f[x]){if (dis[k] > dis[x] + 1){dis[k] = dis[x] + 1;ans[k] = ans[x];if (!vis[k]){q.push(k);vis[k] = true;}}else if (dis[k] == dis[x] + 1){ans[k] += ans[x];ans[k] %= mod;}}}for (int i = 1; i <= n; i++) cout << ans[i] << "\n";
}signed main() {solve();return 0;
}

相关文章:

每日刷题(最短路、图论)

目录 游戏 思路 代码 魔法 思路 代码 P1364 医院设置 思路 代码 P1144 最短路计数 思路 代码 游戏 I-游戏_河南萌新联赛2024第&#xff08;三&#xff09;场&#xff1a;河南大学 (nowcoder.com) 思路 利用dijkstra去寻找起点到其余所有点的最短路径&#xff0c;当…...

远程服务器训练网络之tensorboard可视化

cd到tensorboard events存储的位置 启动tensorboard tensorboard --logdir./ 得到运行结果&#xff1a; TensorBoard 1.13.1 at http://work:6006 (Press CTRLC to quit) 创建tunnel映射到本地&#xff0c;在本地ssh&#xff0c;最好使用公网地址 ssh -N -L 8080:localhost:60…...

MySQL锁详解

锁是计算机在执行多线程或线程时用于并发访问同一共享资源时的同步机制&#xff0c;MySQL中的锁是在服务器层或者存储引擎层实现的&#xff0c;保证了数据访问的一致性与有效性。 MySQL锁&#xff1a; 按粒度分为&#xff1a;全局锁、表级锁、页级锁、行级锁。按模式分为&…...

面试问题记录:

1&#xff0c;hashmap扩容的时候&#xff0c;链表超长但不满足转变成红黑树的条件时&#xff1a; 【HashMap】链表和红黑树互相转换的几种情况和数组的扩容机制_hashmap红黑树转链表条件-CSDN博客 2&#xff0c;cglib与proxy区别 JDK 动态代理和 CGLIB 动态代理对比_动态代理…...

vue如何在组件中监听路由参数的变化

使用 watch 监听 $route 对象 的变化&#xff0c;从而捕捉路由参数的变化 beforeRouteUpdate 导航守卫 当前组件路由更新时调用 beforeRouteUpdate 钩子只在组件被复用时调用&#xff0c;即当组件实例仍然存在时。如果组件是完全重新创建的&#xff0c;那么应该使用 beforeR…...

antd中form表单校验文件上传

antd中文件上传需要单独设置this.model中得数据 this.$set(this.model, filePath,上传成功后返回得文件路径地址)...

商家转账到零钱2024最新开通必过攻略

微信支付商家转账到零钱功能申请设置了人工审核的门槛&#xff0c;本意是为了防止没有合规使用场景的商户滥用该功能&#xff0c;但这也让相当多的真实用户被一次次拒之门外。结合过去6年开通此类产品的经验&#xff0c;今天我们就以2024年最新的的商家转账到零钱的开通流程做一…...

2024全新Thinkphp聊天室H5实时聊天室群聊聊天室自动分配账户完群组/私聊/禁言等功能/全开源运营版本

全开源运营版本聊天室H5实时聊天室群聊聊天室自动分配账户完群组/私聊/禁言等功能 运营版本的聊天室&#xff0c;可以添加好友&#xff0c;建立群组&#xff0c;私聊&#xff0c;禁言功能 H5TP5.0mysqlPHP 源码开源不加密...

(一)javascript中class类

在 JavaScript 中使用 class 语法可以定义类的结构&#xff0c;其中可以包括静态属性/方法、私有属性/方法、公共属性/方法和受保护属性/方法。这些概念有助于封装和数据隐藏&#xff0c;使得代码更加模块化和安全。下面我会解释这些不同的属性和方法&#xff0c;以及如何在类中…...

【注意力MHA,MQA,GQA,MLA】

注意力机制优化简明图解 1. 多头注意力&#xff08;MHA&#xff09; 图示&#xff1a; Input --> [Attention Head 1]--> [Attention Head 2]--> [Attention Head 3]--> ...--> [Attention Head N]--> [Concatenate] --> Output公式&#xff1a; Outpu…...

《从零开始做个摸鱼小网站! · 序》灵感来源

序 大家好呀&#xff0c;我是summo&#xff0c;这次来写写我在上班空闲(摸鱼)的时候做的一个小网站的事。去年阿里云不是推出了个活动嘛&#xff0c;2核2G的云服务器一年只要99块钱&#xff0c;懂行的人应该知道这个价格在业界已经是非常良心了&#xff0c;虽然优惠只有一年&a…...

计算机基础(Windows 10+Office 2016)教程 —— 第5章 文档编辑软件Word 2016(上)

文档编辑软件Word 2016 5.1 Word 2016入门5.1.1 Word 2016 简介5.1.2 Word 2016 的启动5.1.3 Word 2016 的窗口组成5.1.4 Word 2016 的视图方式5.1.5 Word 2016 的文档操作5.1.6 Word 2016 的退出 5.2 Word 2016的文本编辑5.2.1 输入文本5.2.3 插入与删除文本5.2.4 复制与移动文…...

短视频矩阵管理系统源码:实现短视频内容全面布局

随着移动互联网的普及&#xff0c;短视频应用逐渐成为人们获取信息、娱乐休闲的重要途径。为了满足用户多样化需求&#xff0c;实现短视频内容的全面布局&#xff0c;短视频矩阵管理系统应运而生。本文将详细介绍短视频矩阵管理系统的源码实现&#xff0c;帮助您更好地理解并应…...

系统设计中15 个最重要的权衡

系统设计的第一法则&#xff1a;一切都与权衡有关。 在设计系统时&#xff0c;我们需要决定要包含哪些功能以及要忽略哪些功能。每次我们做这个决定时&#xff0c;我们都在进行权衡。在本文中&#xff0c;我们将探讨系统设计中遇到的15个最常见的权衡问题&#xff0c;并使用实…...

12年外贸实战经验,一定对你有帮助!

更多外贸干货及开发客户的方法&#xff0c;尽在微信【千千外贸干货】 NO1 客户总是抱怨价格太高&#xff0c;我常以我们产品质量过硬作为回应。但自从我进入贸易公司后&#xff0c;才真正意识到&#xff0c;在商业世界里&#xff0c;价格才是王道。 NO2 如果顾客提出要去工厂检…...

Linux---进程(3)---进程状态

目录 进程排队 进程状态 运行状态 阻塞状态 挂起状态 Linux内核具体进程状态 浅度睡眠状态 运行状态 深度睡眠状态 暂停状态 可被追踪的暂停状态 终止状态 僵尸状态 进程排队 进程不是一直在运行的&#xff0c;进程放在了CPU上&#xff0c;也不是一直运行的。 进程…...

Drools规则引擎实现停车计费

业务规则: 20:00至次日7时不收费白天7:00-20:00每小时5元,每半个小时计费一次进场30分钟内不收费,但计入时间每天最高收费50元 测试项目搭建 pom<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/…...

【python虚拟环境】安装第三方包失败/failed with error code1

问题&#xff1a; 今天新建了一个项目&#xff0c;默认的虚拟环境pip包版本是19.0.3&#xff0c;太低了。安装第三方包的时候一直超时 解决方案: 更新pip&#xff1a; python -m pip install -U --force-reinstall pip然后就可以正常pip install包了 清华镜像源&#xff1…...

DiffusionModel-latent diffusion,VAE,U-Net,Text-encoder

Diffusers StableDdiffusion 参考: Stable Diffusion原理详解&#xff08;附代码实现) Latent Diffusion 自编码器&#xff08;Variational Autoencoder, VAE&#xff09;&#xff1a; 自编码器是一种无监督学习的神经网络&#xff0c;用于学习数据的有效表示或编码。在稳定扩…...

C# form的移植工作

前言&#xff1a; 目标&#xff0c;将一个项目的form移植到新的工程下&#xff0c;且能够正确编译执行&#xff1a; 1 Copy form的两个文件到新工程下&#xff1a; 比如笔者的logo form 2 修改命名空间&#xff1a; 然后&#xff0c;找到新项目的主程序&#xff1a; 的命名…...

如何将短信从Android传输到 iPhone

每次苹果发布新款 iPhone&#xff0c;都会吸引大量渴望更换手机的用户&#xff0c;其中也包括许多Android用户。对于这些Android用户来说&#xff0c; 将数据从Android迁移到新 iPhone是当务之急&#xff0c;尤其是传输短信&#xff0c;因为短信通常包含个人和职业生活的重要信…...

终极指南:如何用WinDiskWriter快速制作Windows启动盘并绕过硬件限制

终极指南&#xff1a;如何用WinDiskWriter快速制作Windows启动盘并绕过硬件限制 【免费下载链接】windiskwriter &#x1f5a5; Windows Bootable USB creator for macOS. &#x1f6e0; Patches Windows 11 to bypass TPM and Secure Boot requirements. &#x1f47e; UEFI &…...

【深度解析】Antigravity 2.0:从 AI IDE 到 Agent 编排层,Google 开发者工具栈的技术转向

摘要 Google Antigravity 2.0 不再只是一个 AI IDE&#xff0c;而是围绕桌面端、CLI、SDK 与统一 Agent Harness 构建的新一代智能开发工具栈。本文从架构、模型能力、开发流程与工程落地角度解析其技术价值&#xff0c;并给出可复用的 AI Agent API 调用示例。背景介绍&#x…...

WanAndroid收藏系统设计:从UI交互到数据持久化的完整方案

WanAndroid收藏系统设计&#xff1a;从UI交互到数据持久化的完整方案 【免费下载链接】WanAndroid &#x1f525;项目采用 Kotlin 语言&#xff0c;基于 MVP RxJava Retrofit Glide EventBus 等架构设计&#xff0c;努力打造一款优秀的 [玩Android] 客户端 项目地址: htt…...

如何3步搭建你的私人游戏云:Sunshine游戏串流服务器终极指南

如何3步搭建你的私人游戏云&#xff1a;Sunshine游戏串流服务器终极指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源的自托管游戏串流服务器&#xff0c;专…...

3分钟学会:用WinDiskWriter轻松为老旧电脑安装Windows 11系统

3分钟学会&#xff1a;用WinDiskWriter轻松为老旧电脑安装Windows 11系统 【免费下载链接】windiskwriter &#x1f5a5; Windows Bootable USB creator for macOS. &#x1f6e0; Patches Windows 11 to bypass TPM and Secure Boot requirements. &#x1f47e; UEFI & L…...

抢先揭秘 |高端进口宠物食品用品代理商睿哲国际即将亮相广州潮宠展GPI+

抢先揭秘 |高端进口宠物食品用品代理商睿哲国际即将亮相广州潮宠展GPI第四届广州国际潮宠展暨全球宠业生态创新展&#xff08;GPI&#xff09;将于6月5-7日在广州保利世贸博览馆盛大启幕&#xff01;本届展会以“宠业当燃”为全新主题&#xff0c;打造超5万㎡三馆联动的全域生态…...

Whisky完全指南:在macOS上轻松运行Windows程序的终极方案

Whisky完全指南&#xff1a;在macOS上轻松运行Windows程序的终极方案 【免费下载链接】Whisky A modern Wine wrapper for macOS built with SwiftUI 项目地址: https://gitcode.com/gh_mirrors/wh/Whisky 还在为macOS上无法运行某些Windows专属软件而烦恼吗&#xff1f…...

别再乱用sleep了!Linux C++高精度延时实战指南(从usleep到std::sleep_for的避坑总结)

Linux C高精度延时实战&#xff1a;从传统陷阱到现代方案 在开发高性能服务器、嵌入式实时系统或音视频处理程序时&#xff0c;精确控制时间延迟是保证系统稳定性和响应速度的关键。许多开发者在使用sleep、usleep等延时函数时&#xff0c;常常遇到CPU占用率飙升、时序漂移或信…...

别再手动敲命令了!用Kuboard-Spray v1.2.4图形化搞定K8s集群(附CentOS 7.9避坑实录)

图形化利器Kuboard-Spray v1.2.4&#xff1a;三分钟搭建生产级K8s集群的避坑指南 当你在凌晨三点盯着满屏的kubeadm init报错信息时&#xff0c;是否想过Kubernetes集群部署还能更简单&#xff1f;去年我们团队在客户现场部署一套生产环境时&#xff0c;传统命令行方式让我们在…...