MUTC 2 A - Hero 状态压缩dp

本文深入探讨了游戏开发领域的关键技术,包括游戏引擎、编程语言、硬件优化等,并结合人工智能与音视频处理的最新进展,展示如何将这些技术应用于游戏开发中,以提升用户体验与创新游戏玩法。

 

Hero

Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 1869    Accepted Submission(s): 868


Problem Description
When playing DotA with god-like rivals and pig-like team members, you have to face an embarrassing situation: All your teammates are killed, and you have to fight 1vN.

There are two key attributes for the heroes in the game, health point (HP) and damage per shot (DPS). Your hero has almost infinite HP, but only 1 DPS.

To simplify the problem, we assume the game is turn-based, but not real-time. In each round, you can choose one enemy hero to attack, and his HP will decrease by 1. While at the same time, all the lived enemy heroes will attack you, and your HP will decrease by the sum of their DPS. If one hero's HP fall equal to (or below) zero, he will die after this round, and cannot attack you in the following rounds.

Although your hero is undefeated, you want to choose best strategy to kill all the enemy heroes with minimum HP loss.
 

Input
The first line of each test case contains the number of enemy heroes N (1 <= N <= 20). Then N lines followed, each contains two integers DPSi and HPi, which are the DPS and HP for each hero. (1 <= DPSi, HPi <= 1000)
 

Output
Output one line for each test, indicates the minimum HP loss.
 

Sample Input
      
1 10 2 2 100 1 1 100
 

Sample Output
      
20 201
 

Author
TJU
 

Source
 

Recommend
zhuyuanchen520
 

---------------

状态压缩dp

f[S]=min(f[S+k]+sum[S+k]*hp[k])

用贪心做的都是异端啊异端!!

---------------

#include <iostream>
#include <cstring>
#include <cstdio>

using namespace std;

const int maxn=1<<22;
int n;
int dps[22],hp[22];
int sum[maxn];
int f[maxn];

int main()
{
    //f[S]=min(f[S+k]+sum[S+k]*hp[k]);
    while (~scanf("%d",&n))
    {
        memset(f,-1,sizeof(f));
        memset(sum,0,sizeof(sum));

        //init()
        for (int i=0;i<n;i++)
        {
            scanf("%d%d",&dps[i],&hp[i]);
        }
        //prepare()
        for (int i=0;i<(1<<n);i++)
        {
            for (int j=0;j<n;j++)
            {
                if (i&(1<<j))
                {
                    sum[i]+=dps[j];
                }
            }
        }
        //dp
        f[(1<<n)-1]=0;
        for (int s=(1<<n)-1;s>=0;s--)
        {
            for (int k=0;k<n;k++)
            {
                if (!(s&(1<<k)))
                {
                    if (f[s]==-1||f[s+(1<<k)]+sum[s+(1<<k)]*hp[k]<f[s])
                    {
                        f[s]=f[s+(1<<k)]+sum[s+(1<<k)]*hp[k];
                    }
                }
            }
        }
        printf("%d\n",f[0]);
    }
    return 0;
}







源码直接下载地址: https://pan.quark.cn/s/ff2fbd6bd526 《HeroM2免费商业登陆器配置器与注册机详解》在网络游戏开发及运营过程中,登录系统占据着核心地位,它为玩家创建了一个安全且方便的通道,用以接入游戏服务器。HeroM2免费商业登陆器配置器是针对此类需求而研发的专业工具,特别适合小型及新兴的游戏开发团队,为他们提供了一个经济高效的解决方案。本文将详细剖析HeroM2登陆器配置器及其配套的注册机,旨在帮助读者深入理解其功能特性和使用技巧。一、HeroM2登陆器配置器HeroM2登陆器配置器是一款专为基于HeroM2引擎构建的游戏量身打造的辅助工具。它使开发者能够个性化定制和管理游戏的登录界面,配置服务器集群,并执行多种安全设定,包括反作弊措施、账号确认等操作。借助该配置器,开发者能够迅速构建满足特定需求的登录系统,无需深厚的编程背景,显著简化了开发流程。1. 用户界面个性化:HeroM2配置器支持对登录界面的视觉组件进行个性化设计,涵盖按钮、输入框、图像等元素,从而提升游戏登录页面的独特性。2. 服务器集群管理:配置器能够便捷地增加、修改和移除服务器集群信息,方便玩家选择不同的游戏区域。3. 安全性配置:为了维护游戏环境的公正性,配置器内置了诸如验证码、IP封锁等安全功能,旨在抵御恶意行为和非法访问。二、注册机注册机一般用于生成软件的授权码或许可证信息,使用户能够合法使用软件。在游戏领域,注册机常用于创建游戏账号,供玩家进行注册和验证。HeroM2配套的注册机,可能具备以下作用:1. 自动创建账号:注册机能够依据预定规则自动生成众多游戏账号,为玩家提供便捷的注册途径。2. 账号校验:注册机能够对生成的账号进行有效性检验,确保账号...
我已经准备好了两个分区 登陆器什么都配置好了 主区:C:\MirServer 从区:C:\MirServerB 现在开始来启动两个分区并自动合并分区 在13:03启动主区 13:05启动从区 然后我们测试游戏,再到13:12合并两个区 最后我们在13:15启动主区,也就是合并过的区 看好了 这里不清理了,我这里合区就是把主区和从区合并后 然后数据又更新到主区,这样就 不用再手动更新数据了,所以不先清理数据,我们最后测试游戏也就是合过的区。 现在主区已经启动了,我们进游戏 不好意思。。。这里主区我没选择清理数据。。我从换个ID 现在从区也启动了,我们进游戏测试 我们进游戏 到12分就自动断了..。然后合并 现在看 已经自动都关了 日志 [2012-6-29 13:12:41] 主区:C:\MirServer 从区:C:\MirServerB合并完成 我们等到15分 主区启动 然后再进游戏看 为了真实 我就不暂停 你们看时快进吧 这里已经在启动了 我们去准备上游戏.. 好了 教程就到这儿 程序现在我自测了几次 都很稳定 日志也很详细 准备再加上邮件功能,如果出错 自动发邮件 到用的时候可以把邮箱和手机绑定 然后就自动 发短信可以看到。。 谢谢大家观看 再见! ....最后个没复制上 算了 就一个开区 这里直复制到了第二个 也就是开从区的日志 Hero引擎-自动开区合区工具教程下载 http://dl.dbank.com/c0nz1hw6aq
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值