问题标题: 酷町堂:4624<打Boss> 懵逼题求助!!!

0
0
已解决
赵逸凡
赵逸凡
初级启示者
初级启示者
#include<bits/stdc++.h>
using namespace std;
long long m,s,t,g; 
int main()
{
    cin>>m>>s>>t;
    if(m<10)
    	g=t*17;
    else if(m>=10)
    {
    	if(int(m/10)>=t)
    		g=t*60;
    	else
    		g=int(m/10)*60+(t-int(m/10))*17;
    }
    if(g<s)
        cout<<"No\n"<<g;
    else if(g>=s)
    {
        cout<<"Yes\n";
        if(m<10)
            cout<<ceil(s/17);
        else 
        {
            if(int(m/10)>=t)
                cout<<ceil(s/(int(m/10)*60));
            else cout<<ceil(s/(int(m/10)*60+(t-int(m/10))*17));
        }
    }
    return 0;
}

题面:

魔兽世界是一款革命性的游戏,它开创了至今都被其他游戏模仿的副本系统。每个游戏副本里面一般都有一个最终boss,击败这个最终boss,就可以获得丰厚的奖励。

小P的职业是一名魔法师,小P的普通攻击伤害是17。但是仅仅依靠普通攻击,是不能打败boss的。小P还有魔法技能,伤害为60,使用会消耗10点法力值。小P可以通过休息回复法力值,回复值为4点每秒,休息时不能攻击。

已知小P的法力值为m,boss的血量为s,副本的剩余时间为t,使用技能和普通攻击都是1s。请你计算小P在剩余时间内能否击败boss,若能,输出Yes和最短击败时间,否则,输出No,并计算小P最多能消耗boss多少血量。

乱做的题,WA 0分!样例能过,看题目可以分段做啊,哪有用背包了,不是直接在t的范围内计算最后解吗?怎么用dp推呢?令人迷惑

@黄子

采纳者加悬赏20~100豆!!!

 

赵逸凡在2020-05-09 19:24:07追加了内容

构造和谐问答,从我做起


0
已采纳
张睿杰
张睿杰
高级守护
高级守护

这应该是一道二维费用背包的题吧

把m,s,t看作容量

普通攻击的m=0,s=17,t=1

技能m=10,s=60,t=1

回复m=-4(因为是回复),s=0,t=1

大体核心是这样想的

0
我要回答