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

1022. 宠物小精灵之收服

Powered by:NEFU AB-IN

Link

文章目录

    • 题意
    • 思路
    • 代码

题意

思路

https://www.acwing.com/solution/content/117213/

  1. 第一问为二维背包模板
n, V, M = IO.read()
dp = Arr.array2d(0, V + 1, M + 1)for i in range(n):v, m, w = IO.read()for j in range(V, v - 1, - 1):for k in range(M, m - 1, -1):dp[j][k] = Math.min(dp[j][k], dp[j - v][k - m] + w)print(dp[V][M])
  1. 第二问为求剩余体力最大多少,那就是找二维数组的最后,有多少和f[N][M]相同的数

代码

'''
Author: NEFU AB-IN
Date: 2024-08-15 23:21:56
FilePath: \Acwing\1022\1022.py
LastEditTime: 2024-08-15 23:22:02
'''
# 3.8.19 import
import random
from collections import Counter, defaultdict, deque
from datetime import datetime, timedelta
from functools import lru_cache, reduce
from heapq import heapify, heappop, heappush, nlargest, nsmallest
from itertools import combinations, compress, permutations, starmap, tee
from math import ceil, comb, fabs, floor, gcd, hypot, log, perm, sqrt
from string import ascii_lowercase, ascii_uppercase
from sys import exit, setrecursionlimit, stdin
from typing import Any, Callable, Dict, List, Optional, Tuple, TypeVar, Union# Constants
TYPE = TypeVar('TYPE')
N = int(2e5 + 10)
M = int(20)
INF = int(1e12)
OFFSET = int(100)
MOD = int(1e9 + 7)# Set recursion limit
setrecursionlimit(int(2e9))class Arr:array = staticmethod(lambda x=0, size=N: [x() if callable(x) else x for _ in range(size)])array2d = staticmethod(lambda x=0, rows=N, cols=M: [Arr.array(x, cols) for _ in range(rows)])graph = staticmethod(lambda size=N: [[] for _ in range(size)])class Math:max = staticmethod(lambda a, b: a if a > b else b)min = staticmethod(lambda a, b: a if a < b else b)class IO:input = staticmethod(lambda: stdin.readline().rstrip("\r\n"))read = staticmethod(lambda: map(int, IO.input().split()))read_list = staticmethod(lambda: list(IO.read()))class Std:pass# ————————————————————— Division line ——————————————————————
import bisectdef dp(N, M, K, balls, blood):f = [[0] * (M + 1) for _ in range(N + 1)]for i in range(K):for j in range(N, balls[i] - 1, -1):for k in range(M, blood[i], - 1):f[j][k] = max(f[j][k], f[j - balls[i]][k - blood[i]] + 1)if f[N][M] == 0 : return 0, Mreturn f[N][M], M - bisect.bisect_left(f[N], f[N][M]) + 1N, M, K = map(int, stdin.readline().split())
balls, blood = [0] * K, [0] * K
for i in range(K):balls[i], blood[i] = map(int, stdin.readline().split())C, R = dp(N, M, K, balls, blood)
print(str(C) + ' ' + str(R))

http://www.mrgr.cn/news/3592.html

相关文章:

  • Java中Maven打包方式pom、jar、war的区别
  • CSS的:valid和:invalid伪类:增强表单验证的视觉反馈
  • FL Studio24.1.1中文版下载!附带破解补丁包
  • 设计模式---简单工厂模式
  • 数据治理中的角色与责任分配
  • 检测到目标URL存在http host头攻击漏洞
  • day 10 贪心算法
  • ChatGPT辅助学术论文中论证内容的获取和编写
  • Remmarguts‘ Date
  • jenkins最佳实践(二):Pipeline流水线部署springCloud微服务项目
  • [EXCEL] 批量删除EXCEL表格中空行
  • ubuntu24.04 php7.4.33编译安装openssl(动态扩展)
  • 三个AI智能体开源项目:MetaGPT/AutoGPT/DB-GPT
  • C语言程序设计-练习篇
  • Linux云计算 |【第二阶段】SECURITY-DAY2
  • JS TypeError: Cannot read properties of null (reading ‘getAttribute’) 解决
  • [python][代码]定义了一个用于AES加密和解密的工具类
  • raster graphics是什么
  • Axure中跨页面动态面板状态设置的实现方法
  • 笨鸟先飞(疯狂的小鸟)小游戏自制分享