nyist 247 spfa算法

本文介绍了一种通过构建正反向图并运用SPFA算法来寻找最佳商品交易路径的方法,以此来最大化旅途中赚取的费用。

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=247

题目大意:梦幻国有N个城市和M条道路,每条道路连接某两个城市。任意两个城市之间最多只有一条道路直接相连。这M条道路中有一部分为单向通行的道路,一部分为双向通行的道路。同一种商品在不同城市的价格不一定相同。但是,同一种商品在同一个城市的买入价和卖出价始终是相同的。虚拟城市之旅,允许你在旅游的同时,利用 X 商品在不同城市中的差价赚回一点旅费,但最多只能交易一次。即,在某个城市买入X 商品,可以走到另外一个城市买掉来获得旅费。当然,在赚不到差价的情况下,你也可以不进行贸易活动。

设梦幻国N个城市的标号从1~ N,你只能从1 号城市出发,并最终在N 号城市结束自己的旅行。在旅游的过程中,任何城市可以重复经过多次,但不要求经过所有N个城市。
思路:将原图存储为正向图,再存储其反向边为反向图,然后分别记录正向图中从1开始可达的各城市的最小值,反向图中从t开始可达的各城市的最大值,然后两个值的差即为可赚取的最大旅费
<think>我们面对两个问题: 1. 安装pyrit时出现依赖问题(缺少python 2.7libssl1.1) 2. 执行sudo apt update时出现404 Not Found错误(源中buster Release找不到) 首先,由于Kali Linux基于Debian,且会定期更新版本,因此源列表中的旧版本(如buster)可能已经不再被支持,导致404错误。我们需要更新源列表。 其次,安装pyrit的依赖需要解决python2.7libssl1.1的问题。由于Kali Linux已经不再默认支持python2,因此需要添加python2的源或者手动安装。 解决步骤: 一、修复apt更新404错误 我们需要将源列表中的旧版本(如buster)替换为当前Kali版本对应的代号(如kali-rolling或最新版本代号)。可以通过以下步骤: 1. 查看当前Kali版本: ```bash lsb_release -a ``` 或者 ```bash cat /etc/os-release ``` 通常,Kali滚动版使用`kali-rolling`作为代号。 2. 编辑源列表文件: ```bash sudo nano /etc/apt/sources.list ``` 将其中所有包含`buster`的目替换为`kali-rolling`(或当前版本对应的代号,根据第一步的结果)。例如: 将 `deb http://ftp.debian.org/debian buster main` 改为 `deb http://http.kali.org/kali kali-rolling main non-free contrib` 另外,确保Kali官方源也在其中,例如: ``` deb http://http.kali.org/kali kali-rolling main non-free contrib ``` 3. 保存并更新: ```bash sudo apt update ``` 二、安装pyrit所需依赖 1. 安装Python 2.7: 由于Kali官方源中可能已经移除了python2.7,我们可以从其他地方安装。可以尝试以下方法: ```bash sudo apt install python2 ``` 如果找不到包,可以手动添加旧版源(但要注意兼容性)或者下载deb包。但更推荐使用Kali提供的替代方案,或者使用虚拟环境。 如果上述命令失败,可以尝试: ```bash sudo apt install -y python2.7 ``` 2. 安装libssl1.1: 从Debian仓库下载libssl1.1并安装(注意选择与系统架构匹配的版本): ```bash wget http://ftp.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.1w-0+deb11u1_amd64.deb sudo dpkg -i libssl1.1_1.1.1w-0+deb11u1_amd64.deb ``` 3. 再次尝试安装pyrit: ```bash sudo dpkg -i pyrit_0.5.1+git20180801-1_amd64.deb ``` 如果还有依赖问题,可以运行: ```bash sudo apt --fix-broken install ``` 三、备选方案:源码安装pyrit 如果deb包安装失败,可以从源码安装: 1. 安装编译依赖: ```bash sudo apt install -y git build-essential libssl-dev zlib1g-dev python2.7-dev ``` 2. 克隆源码并编译: ```bash git clone https://github.com/JPaulMora/Pyrit.git cd Pyrit python2.7 setup.py clean python2.7 setup.py build sudo python2.7 setup.py install ``` 四、验证安装: ```bash pyrit --version ``` 注意:由于Kali滚动更新较快,旧版软件包可能不再被支持,因此源码安装可能是更可靠的方法。 最后,关于apt更新404错误,确保源列表中没有其他失效的源(如buster),只保留kali-rolling的源。 如果问题依旧,请检查网络连接源的可用性。 引用:[^1] Kali Linux文档中关于源配置的部分。 相关问题: 1. 如何查看修改Kali Linux的软件源列表? 2. 在Kali Linux中如何安装Python 2.7? 3. 如何从源码编译安装软件? 4. 如何解决安装软件包时的依赖冲突? </think> ### 解决 Kali 系统安装 pyrit 依赖缺失及 apt 更新 404 错误 #### **问题分析** 1. **pyrit 依赖缺失**: - 需要 Python 2.7(非 Python 3) - 缺少 libssl1.1 库 2. **apt 更新 404 错误**: - `buster` 源已过时(Kali 2020 年后使用 `kali-rolling` 源) - 需更新软件源配置 --- ### **解决方案** #### **步骤 1:修复 apt 源 404 错误** 修改软件源为当前版本(如 `kali-rolling`): ```bash # 备份原配置 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 编辑源列表 sudo nano /etc/apt/sources.list ``` 删除所有含 `buster` 的行,替换为: ``` deb http://http.kali.org/kali kali-rolling main non-free contrib deb-src http://http.kali.org/kali kali-rolling main non-free contrib ``` 更新软件列表: ```bash sudo apt update && sudo apt upgrade -y ``` #### **步骤 2:安装 Python 2.7** ```bash # 添加 Python 2.7 源并安装 sudo echo "deb http://old-releases.ubuntu.com/ubuntu bionic universe" >> /etc/apt/sources.list sudo apt update sudo apt install python2.7 python2.7-dev ``` #### **步骤 3:安装 libssl1.1** 从 Debian 仓库安装: ```bash wget http://ftp.debian.org/debian/pool/main/o/openssl/libssl1.1_1.1.1w-0+deb11u1_amd64.deb sudo dpkg -i libssl1.1_1.1.1w-0+deb11u1_amd64.deb ``` #### **步骤 4:安装 pyrit** 强制安装并修复依赖: ```bash sudo dpkg -i --force-all pyrit_0.5.1+git20180801-1_amd64.deb sudo apt --fix-broken install -y ``` #### **备选方案:源码编译** ```bash # 安装编译依赖 sudo apt install git build-essential libssl-dev zlib1g-dev git clone https://github.com/JPaulMora/Pyrit.git cd Pyrit python2.7 setup.py build sudo python2.7 setup.py install ``` #### **验证安装** ```bash pyrit list_cores # 成功运行说明安装正确 ``` > **注意**:Kali 作为 Debian 衍生版,需保持软件源时效性以避免依赖冲突。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值