RQNOJ 356 mty的格斗 dp

PID356 / mty的格斗

题目描述

’恩 ~~这个和这个也是朋友.把他们放在一起......哇!终于完成了’mty费了好大劲,终于找出了一支最为庞大的军队.

fyc很高兴,立马出征与人fight.mty万万没想到fyc竟然把他也叫去了.偶像的命令不可违抗,mty只好跟着出发了.

两军交战采用一对一单挑的形式.mty一上来就遇到了一个对手.此人身高2米12,头大,腿粗.....这个人fight崇尚防守反击,他要等mty出手,漏出破绽才进攻,且只进攻一次.现在mty有p个招数,每招都会给对方造成伤害,也会让对手有可趁之机来攻击自己,造成伤害.

mty进攻一次需1秒,而他的对手出招很快,进攻时间可以忽略不计.

mty想在最短时间内战胜对方,请你帮帮忙.

输入格式

第一行,三个数,n,m,p(对方有n点HP,mty有m点,mty有p个招数); n<=100,m<=100,p<=1000;

接下来p行,每行两个数,x[i],y[i](表示这招会给对方造成x[i]点伤害,对手会给mty造成y[i]点伤害);

只有当对方HP为0,不包括负数,mtyHP为正数时,mty才算赢

输出格式

一个数表示mty要战胜对手所需最少秒数.如果,mty不可能赢,就输出’mty zhen mei yong!’(不包括引号)

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define mod 1000000007
#define esp 0.00000000001
const int N=1e3+10,M=1e6+10,inf=1e9;
int dp[N][N];
int a[N],b[N];
int main()
{
    int x,y,z,i,t;
    while(~scanf("%d%d%d",&x,&y,&z))
    {
        for(i=0;i<=x;i++)
        for(t=0;t<=y;t++)
        dp[i][t]=inf;
        for(i=0;i<z;i++)
        scanf("%d%d",&a[i],&b[i]);
        dp[x][y]=0;
        for(int j=0;j<z;j++)
        {
            for(i=0;i<=x-a[j];i++)
            {
                for(t=0;t<=y-b[j];t++)
                dp[i][t]=min(dp[i+a[j]][t+b[j]]+1,dp[i][t]);
            }
        }
        int ans=inf;
        for(i=1;i<=y;i++)
        ans=min(ans,dp[0][i]);
        if(ans==inf)
        printf("mty zhen mei yong!\n");
        else
        printf("%d\n",ans);
    }
    return 0;
}
/*
dp[i][t]=min(dp[i+a[j]][t+b[j]]+1,dp[i][t]);
dp[i][t]表示最小的使用秒数;
i表示对方的HP;t表示mty的HP;
*/
时间: 2024-11-03 21:53:22

RQNOJ 356 mty的格斗 dp的相关文章

RQNOJ 342 最不听话的机器人:网格dp

题目链接:https://www.rqnoj.cn/problem/342 题意: DD 有一个不太听话的机器人,这个机器人总是会有自己的想法,而不会完全遵守 DD 给它的指令. 现在 DD 在试图命令机器人走迷宫.迷宫是一个 N*N 个格子组成的区域,格子自左上角到右下角从 (1,1) 到 (N,N) 编号.第 i 行.第 j 列的格子编号为 (i,j).迷宫中的某些区域是障碍物,机器人不能移动到那里. DD 给了机器人 M 条指令,指令的类型包括"前进一步""后退一步&q

RQNOJ 622 最小重量机器设计问题:dp

题目链接:https://www.rqnoj.cn/problem/622 题意: 一个机器由n个部件组成,每一种部件都可以从m个不同的供应商处购得. w[i][j]是从供应商j处购得的部件i的重量,c[i][j] 是相应的价格. 试设计一个算法,给出总价格不超过d的最小重量机器设计. 题解: 表示状态: dp[i][j] = min weight i:考虑到第i个零件 j:当前花费 找出答案: min dp[n][j] (0<=j<=d) 如何转移: 对于当前零件i,枚举不同的供应商j,转移

RQNOJ 311 [NOIP2000]乘积最大:划分型dp

题目链接:https://www.rqnoj.cn/problem/311 题意: 给你一个长度为n的数字,用t个乘号分开,问你分开后乘积最大为多少.(6<=n<=40,1<=k<=30) 题解: 简化问题: 给原数字之前添加一个"1 *",乘号不计入数量,对答案无影响. 例如:"1231"可以变成"(1*)1231". 表示状态: dp[i][j] = max num(最后一个乘号之前的最大乘积) i:此时在第i个数的前

RQNOJ 328 炮兵阵地:状压dp

题目链接:https://www.rqnoj.cn/problem/328 题意: 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队. 一个N*M的地图由N行M列组成(N≤100,M≤10),地图的每一格可能是山地(用'H' 表示),也可能是平原(用'P'表示),如下图. 在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队): 一支炮兵部队在地图上的攻击范围如图中黑色区域所示: 如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:

RQNOJ 514 字串距离:dp &amp; 字符串

题目链接:https://www.rqnoj.cn/problem/514 题意: 设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为"abcbcd",则字符串"abcb_cd","_a_bcbcd_"和"abcb_cd_"都是X的扩展串,这里"_"代表空格字符. 如果A1是字符串A的扩展串,B1是字符串B的扩展串,A1与B1具有相同的长度,那么我扪定义字符串A1

RQNOJ 188 购物问题:树形dp

题目链接:https://www.rqnoj.cn/problem/188 题意: 商场以超低价格出售n个商品,购买第i个商品所节省的金额为w[i]. 为了防止亏本,有m对商品是不能同时买的.但保证商品关系不出现环,不会出现如:(1,2) , (2,4) , (1,4). 问你最多能节省的金额. 题解: 简直和POJ 2342 Anniversary party像极了(*/ω\*) 将不能同时买的商品间连一条无向边. 所以子节点和父节点不能同时选. 唯一不同的是POJ是一棵树,而这道题是一片森林

RQNOJ 169 最小乘车费用:水dp

题目链接:https://www.rqnoj.cn/problem/169 题意: 给出行驶1-10公里的费用(所有车一样),可以倒车,问行驶n公里的最小费用. 题解: 大水题... (=′ω`=) 表示状态: dp[i] = min cost i:行驶了i公里 找出答案: ans = dp[n] 如何转移: now: dp[i] dp[i+j] = min dp[i] + c[j] 枚举倒车行驶j公里 边界条件: dp[0] = 0 others = -1 AC Code: 1 // stat

[DP训练]rqnOJ

P188 购物问题 题目梗概: n个物品,其中每个物品价格xi,但是某两个物品不能同时购买. 问最大的价格是多少? 思考与理解: 一开始并没有想到树形背包DP,只是一直在想是不是分组背包~ 在之后瞅了瞅题解的思路之后,恍然大悟. 先把有限制的物品之间的关系转换为父子关系就可以进行DP了. 对于每个有限制的物品要不选 要么不选 选的话会有什么结果 不选的话有什么结果. 如果没有限制的话 那么肯定是要买的~ #include <cstdio> #include <algorithm>

【rqnoj 343】mty的考验

题目描述 啊!几经周折.mty终于找到了他的偶像.他就是-.fyc! 可是fyc这样的高级人士可不喜欢一个人总是缠着他.于是他出了一道难题想考考mty.fyc有几个手下:陈乐天,舒步鸡,胡巍--现在fyc要去和别人fight,需要组建一值军队.军队的士兵在fyc的手下里选. 要组建一个军队,必修满足军队中的每个人之间都有直接或间接的朋友关系. 那么mty现在需要组建一支在满足上述情况下的人数最多的军队. 问题规模: 对于100%的数据,1<=n<=1000,1<=m<=500. 输