zoj 3623 Battle Ships

简介: 思路: 完全背包 分析: 1 有n种战舰和敌人的总的血量L,每一种战舰的创建时间为ti,每秒钟对敌人的伤害的血量为li 2 当敌人的血量为0的时候玩家赢了,求玩家最少的时间赢了游戏 3 这边如果我们用血量去做背包dp[j]表示伤害血量为j...
思路: 完全背包
分析:
1 有n种战舰和敌人的总的血量L,每一种战舰的创建时间为ti,每秒钟对敌人的伤害的血量为li
2 当敌人的血量为0的时候玩家赢了,求玩家最少的时间赢了游戏
3 这边如果我们用血量去做背包dp[j]表示伤害血量为j的最小时间的话,状态转移方程无法推出,那么我们考虑用时间去做背包dp[j]表示时间为j的最大伤害血量,那么我们从小到达枚举时间k,只要找到一个dp[k] >= L,说明玩家赢了
4 很容易写出状态转移方程k表示时间为k,dp[k] = max(dp[k] , dp[k-[ti]+(k-t[i])*l[i]);很好理解如果不创建第i个战舰就是dp[k],再创建第i个就是dp[k-t[i]]+(k-t[i])*l[i])为什么是这样的呢?因为总的时间为k那么攻击的时间为k-t[i],所以伤害的血量为(k-t[i])*l[i]

代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

const int MAXN = 610;

int n , sum;
int t[MAXN] , l[MAXN];
int dp[MAXN];

int solve(){
    for(int k = 1 ; k <= 600 ; k++){
        memset(dp , 0 , sizeof(dp));
        for(int i = 1 ; i <= n ; i++){
            for(int j = t[i] ; j <= k ; j++)
                dp[j] = max(dp[j] , dp[j-t[i]]+(j-t[i])*l[i]);
            if(dp[k] >= sum)
                return k;
        }
    }
}

int main(){
    while(scanf("%d%d" , &n , &sum) != EOF){
        for(int i = 1 ; i <= n ; i++)
            scanf("%d%d" , &t[i] , &l[i]);
        printf("%d\n" , solve());
    } 
    return 0;
}




目录
相关文章
二叉树详解(深度优先遍历、前序,中序,后序、广度优先遍历、二叉树所有节点的个数、叶节点的个数)
二叉树详解(深度优先遍历、前序,中序,后序、广度优先遍历、二叉树所有节点的个数、叶节点的个数)
|
8月前
|
人工智能 算法 前端开发
OmAgent:轻松构建在终端设备上运行的 AI 应用,赋能手机、穿戴设备、摄像头等多种设备
OmAgent 是 Om AI 与浙江大学联合开源的多模态语言代理框架,支持多设备连接、高效模型集成,助力开发者快速构建复杂的多模态代理应用。
649 72
OmAgent:轻松构建在终端设备上运行的 AI 应用,赋能手机、穿戴设备、摄像头等多种设备
|
数据采集 监控 数据挖掘
打造高效用户旅程:埋点分析系统的实操指南
在数字化时代,了解用户如何与我们的产品或服务互动是至关重要的。用户行为,在广义上,指的是用户在网站、应用程序或其他数字界面上的所有动作和反应。这些行为可能包括点击链接、浏览页面、填写表单,甚至是在社交媒体上分享内容。每一个动作都是用户体验的一部分,并对我们理解他们的需求和偏好提供了宝贵的线索。 在技术层面上,用户行为的跟踪和分析可以让我们深入了解用户的互动模式,从而指导我们的产品改进和市场战略。通过分析这些数据,我们可以发现用户旅程中的关键触点,识别用户体验的痛点,以及揭示潜在的优化机会。这不仅有助于提升用户满意度和忠诚度,还可以增强产品的市场竞争力。
打造高效用户旅程:埋点分析系统的实操指南
|
NoSQL Redis 数据安全/隐私保护
macos系统中redis如何设置密码
以上步骤应该可以帮助你在macOS系统的Redis服务中设置密码,确保你的数据存储更加安全。此外,确保你定期检查Redis安全性相关的最佳实践和更新,以保持你的服务安全可靠。
835 3
|
存储 弹性计算 数据库
阿里云oss备份网站数据的详细步骤
该教程指导如何使用阿里云OSS备份网站数据。首先,注册阿里云账号并购买40GB的OSS存储空间。创建Bucket,选择与服务器相同的区域和私有权限。安装阿里云OSS插件,获取AccessKey信息。在宝塔面板中设置计划任务进行网站或数据库备份,选择内网域名以节省流量。备份完成后,通过文件管理器检查OSS中是否有备份文件。下载备份文件需点击文件名,然后打开文件URL。
635 5
|
开发框架 前端开发 JavaScript
若依怎样看开发文档,域名搜这个就行ruoyi.vip,建链接点击在线文档,有前端手册和后端手册,若依文档里有项目扩展,项目扩展有大量的开源的软件
若依怎样看开发文档,域名搜这个就行ruoyi.vip,建链接点击在线文档,有前端手册和后端手册,若依文档里有项目扩展,项目扩展有大量的开源的软件
|
存储 容灾 开发工具
|
机器学习/深度学习 自然语言处理 运维
大模型开发:解释自编码器以及它们在表示学习中的作用。
自编码器是一种神经网络,用于无监督学习中的数据降维和压缩,由编码器和解码器组成,学习低维稀疏表示。它们分为收缩、正则和变分类型,常用于图像重构、聚类、机器翻译等任务,能生成类似训练数据的新样本。自编码器在特征学习和多种任务中展现强大能力。
251 7
|
消息中间件 存储 监控
【消息中间件】详解mq消息积压
【消息中间件】详解mq消息积压
529 0
|
人工智能 安全 Java
Java8 - LocalDateTime时间日期类使用详解
Java8 - LocalDateTime时间日期类使用详解