12.12打卡

01背包问题的理解...

题目链接:22背包专题 [Cloned] - Virtual Judge (csgrandeur.cn)

一开始有几个问题导致没有很明白...现在基本上可以理解了

首先就是对于mjz[i][j](max价值)数组的理解。是对于前i个物品有j个空间时拿的最大价值是多少。

然后就是状态转移方程:mjz[i][j]=max(mjz[i-1][j],mjz[i-1][j-w[i]]+jz[i]);

这个一开始有一点小问题就是为什么要取最大值,因为在拿取第i个物品的时候就要腾出来第i个物品的空间,而在腾出来这些物品的时候可能会丢掉一些物品,然后就要判断是丢掉这些物品然后加上第i个物品价值大还是不带上第i个物品的价值大..

#include<iostream>
#include<cmath>
#include<cstring>

using namespace std;
int mjz[105][10005];
int w[105],jz[105];
int main(){
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
       cin>>w[i]>>jz[i];
    }
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(j<w[i]) mjz[i][j]=mjz[i-1][j];
            else {
                mjz[i][j]=max(mjz[i-1][j],mjz[i-1][j-w[i]]+jz[i]);
            }
        }
    }
    cout<<mjz[n][m];
}

然后就是对01背包的优化..

在动态转移的时候其实就只用到了两行一维数组,那么就可以变成一维数组,分为原来和更新后的大小。就是和原来自己比较和带上i个物品比较...

那么状态转移方程就是:mjz[j]=max(mjz[j-w[i]]+jz[i],mjz[j]);

在一维的情况下注意j循环要从后开始,因为如果要从前开始的那么就会修改原来mjz[j-w[i]]的值会导致不是上一个状态的价值,而如果从后开始往前判断,mjz[j-w[i]]就是原状态下的价值。

优化代码:

#include<iostream>
#include<cmath>
#include<cstring>

using namespace std;
int mjz[10005];
int w[105],jz[105];
int main(){
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
       cin>>w[i]>>jz[i];
    }
    for(int i=1;i<=n;i++){
        for(int j=m;j>=w[i];j--){
            mjz[j]=max(mjz[j-w[i]]+jz[i],mjz[j]);
        }
    }
    cout<<mjz[m];
}

麒麟操作系统是中国国产操作系统的一种,基于Linux内核。安装 PostgreSQL 数据库到麒麟系统的过程与其它 Linux 发行版大同小异,下面将详细说明步骤。 ### 安装 PostgreSQL 的准备工作: 1. **确认麒麟系统的版本**:不同的麒麟版本,其软件源、包管理工具等可能会有差异,确认好当前使用的麒麟系统版本有助于后续操作的选择。 2. **更新系统**:通过终端运行命令 `sudo apt update` 或者 `dnf check-update` 来更新系统的所有已知补丁及依赖项,保持系统稳定。 ### 获取 PostgreSQL 软件源 对于麒麟系统,通常需要添加额外的软件源以访问 PostgreSQL 的最新发行版。以下是添加 PostgreSQL 源至麒麟系统的示例步骤: ```bash # 对于 Ubuntu 和 Debian 的衍生系统(如 Deepin) echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" | sudo tee /etc/apt/sources.list.d/pgdg.list # 更新软件仓库索引 sudo apt-get update ``` ### 安装 PostgreSQL 一旦完成上一步的操作,接下来就可以安装 PostgreSQL 数据库了: ```bash # 使用 apt 工具安装 PostgreSQL sudo apt-get install postgresql=12.* -y ``` 注:`12.*` 表示安装 PostgreSQL 12.x 版本系列中的任意一个版本。请替换为具体的版本号以获取特定版本,例如 `12.12`。 ### 初始化数据库实例 安装完成后,通常需要初始化数据库实例: ```bash sudo -u postgres createdb -E UTF8 mydatabase ``` 这里假设你创建了一个名为 `mydatabase` 的新数据库,并指定了字符集为 UTF8。 ### 启动 PostgreSQL 服务 启动 PostgreSQL 服务并设置开机自启: ```bash sudo systemctl start postgresql sudo systemctl enable postgresql ``` ### 登录 PostgreSQL 控制台 登录 PostgreSQL 控制台检查安装状态: ```bash sudo -u postgres psql ``` 此时你应该能够看到 PostgreSQL 控制台提示符,表示 PostgreSQL 成功安装并在服务器上运行。 ### 关闭 PostgreSQL 控制台 关闭控制台返回到用户界面: ```bash \q ``` 至此,您已经在麒麟操作系统上成功安装了 PostgreSQL 12.12。为了安全起见,请记得定期备份数据、监控性能以及根据业务需求调整配置文件(如 `/etc/postgresql/<version>/main/postgresql.conf`)。同时,了解和使用 PostgreSQL 的基本命令对于日常管理和维护非常关键。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值