SSL 2301——混合背包

本文探讨了一种特定的背包问题,即在限定体积内选择不同数量的物品以达到最大价值。输入包括背包体积、物品数量及各物品的体积、价值与数量限制。通过两种情况讨论并给出了具体的解决算法。

Description

背包体积为V ,给出N个物品,每个物品占用体积为Vi,价值为Wi,每个物品要么至多取1件,要么至多取mi件(mi > 1) , 要么数量无限 , 在所装物品总体积不超过V的前提下所装物品的价值的和的最大值是多少?

Input

第一行两个数V,N下面N行每行三个数Vi,Wi,Mi表示每个物品的体积,价值与数量,Mi=1表示至多取一件,Mi>1表示至多取Mi件,Mi=0表示数量无限

Output

1个数Ans表示所装物品价值的最大值

Sample Input

10 3
2 1 0
3 3 1
4 5 4
Sample Output

11


分两种情况判断,①p[i]=0,不用枚举数量,直接枚举容量 f[j]:=max(f[j-v[i]]+w[i],f[j]);
②p[i]>0,枚举数量和容量f[k]:=max(f[k-v[i]]+w[i],f[k]);


代码如下:

var v1,n,i,j,k:longint;
    v,w,m,f:array[-1..1001]of longint;

function max(a,b:longint):longint;
begin
  if a>b then exit(a) else exit(b);
end;

begin
  readln(v1,n);
  for i:=1 to n do readln(v[i],w[i],m[i]);
  for i:=1 to n do
    if m[i]=0 then
      begin
        for j:=v[i] to v1 do f[j]:=max(f[j-v[i]]+w[i],f[j]);
      end
    else
      begin
        for j:=1 to m[i] do
          for k:=v1 downto v[i] do
            f[k]:=max(f[k-v[i]]+w[i],f[k]);
      end;
  write(f[v1]);
end.
为了使用 OpenSSL 生成一个支持多域名的自签名证书,可以按照以下步骤进行操作。首先,需要创建一个配置文件(例如 `openssl.cnf`),用于指定证书的详细信息,包括多个域名。 ### 生成自签名证书的步骤 1. **创建配置文件 `openssl.cnf`** 在配置文件中,指定多个域名(Subject Alternative Names,SAN)以支持多域名。以下是一个示例配置文件的内容: ```ini [ req ] default_bits = 2048 default_keyfile = privkey.pem distinguished_name = req_distinguished_name req_extensions = req_ext prompt = no [ req_distinguished_name ] C = CN ST = State L = City O = Organization OU = Organizational Unit CN = example.com [ req_ext ] subjectAltName = @alt_names [ alt_names ] DNS.1 = example.com DNS.2 = www.example.com DNS.3 = anotherdomain.com DNS.4 = www.anotherdomain.com ``` 2. **生成私钥和 CSR(Certificate Signing Request)** 使用以下命令生成私钥和证书签名请求(CSR): ```bash openssl req -new -keyout key.pem -out csr.pem -config openssl.cnf ``` 3. **生成自签名证书** 使用以下命令生成自签名证书: ```bash openssl x509 -req -days 365 -in csr.pem -signkey key.pem -out cert.pem -extensions req_ext -extfile openssl.cnf ``` 这将生成一个有效期为 365 天的自签名证书,并且支持配置文件中指定的多个域名。 4. **验证证书内容** 使用以下命令查看证书的详细信息,确保所有配置的域名都包含在内: ```bash openssl x509 -in cert.pem -text -noout ``` ### 结果 生成的文件包括: - `key.pem`:私钥文件。 - `csr.pem`:证书签名请求文件。 - `cert.pem`:自签名证书文件。 通过上述步骤,可以成功生成一个支持多域名的自签名证书,用于 HTTPS 的 SSL 验证。 ### 相关问题 1. 如何在生成自签名证书时添加 IP 地址作为 SAN? 2. 如何将生成的自签名证书安装到 Web 服务器上? 3. 如何在浏览器中信任自签名证书? 4. 如何使用 OpenSSL 生成支持通配符域名的自签名证书?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值